linux/drivers/net/wireless/ath/ath9k/htc_hst.h

/*
 * Copyright (c) 2010-2011 Atheros Communications Inc.
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef HTC_HST_H
#define HTC_HST_H

struct ath9k_htc_priv;
struct htc_target;
struct ath9k_htc_tx_ctl;

enum ath9k_hif_transports {};

struct ath9k_htc_hif {};

enum htc_endpoint_id {};

/* Htc frame hdr flags */
#define HTC_FLAGS_RECV_TRAILER

struct htc_frame_hdr {} __packed;

struct htc_ready_msg {} __packed;

struct htc_config_pipe_msg {} __packed;

struct htc_panic_bad_vaddr {} __packed;

struct htc_panic_bad_epid {} __packed;

struct htc_ep_callbacks {};

struct htc_endpoint {};

#define HTC_MAX_CONTROL_MESSAGE_LENGTH
#define HTC_CONTROL_BUFFER_SIZE

#define HTC_OP_START_WAIT
#define HTC_OP_CONFIG_PIPE_CREDITS

struct htc_target {};

enum htc_msg_id {};

struct htc_service_connreq {};

/* Current service IDs */

enum htc_service_group_ids{};

#define MAKE_SERVICE_ID(group, index)

/* NOTE: service ID of 0x0000 is reserved and should never be used */
#define HTC_CTRL_RSVD_SVC
#define HTC_LOOPBACK_RSVD_SVC

#define WMI_CONTROL_SVC
#define WMI_BEACON_SVC
#define WMI_CAB_SVC
#define WMI_UAPSD_SVC
#define WMI_MGMT_SVC
#define WMI_DATA_VO_SVC
#define WMI_DATA_VI_SVC
#define WMI_DATA_BE_SVC
#define WMI_DATA_BK_SVC

struct htc_conn_svc_msg {} __packed;

/* connect response status codes */
#define HTC_SERVICE_SUCCESS
#define HTC_SERVICE_NOT_FOUND
#define HTC_SERVICE_FAILED
#define HTC_SERVICE_NO_RESOURCES
#define HTC_SERVICE_NO_MORE_EP

struct htc_conn_svc_rspmsg {} __packed;

struct htc_comp_msg {} __packed;

int htc_init(struct htc_target *target);
int htc_connect_service(struct htc_target *target,
			  struct htc_service_connreq *service_connreq,
			  enum htc_endpoint_id *conn_rsp_eid);
int htc_send(struct htc_target *target, struct sk_buff *skb);
int htc_send_epid(struct htc_target *target, struct sk_buff *skb,
		  enum htc_endpoint_id epid);
void htc_stop(struct htc_target *target);
void htc_start(struct htc_target *target);
void htc_sta_drain(struct htc_target *target, u8 idx);

void ath9k_htc_rx_msg(struct htc_target *htc_handle,
		      struct sk_buff *skb, u32 len, u8 pipe_id);
void ath9k_htc_txcompletion_cb(struct htc_target *htc_handle,
			       struct sk_buff *skb, bool txok);

struct htc_target *ath9k_htc_hw_alloc(void *hif_handle,
				      struct ath9k_htc_hif *hif,
				      struct device *dev);
void ath9k_htc_hw_free(struct htc_target *htc);
int ath9k_htc_hw_init(struct htc_target *target,
		      struct device *dev, u16 devid, char *product,
		      u32 drv_info);
void ath9k_htc_hw_deinit(struct htc_target *target, bool hot_unplug);

#endif /* HTC_HST_H */