47
47
#define HIF_MBOX2_BLOCK_SIZE HIF_MBOX_BLOCK_SIZE
48
48
#define HIF_MBOX3_BLOCK_SIZE HIF_MBOX_BLOCK_SIZE
50
struct _HIF_SCATTER_REQ_PRIV;
52
50
typedef struct bus_request {
53
51
struct bus_request *next; /* link list of available requests */
54
52
struct bus_request *inusenext; /* link list of in use requests */
55
53
struct semaphore sem_req;
56
A_UINT32 address; /* request data */
54
u32 address; /* request data */
62
struct _HIF_SCATTER_REQ_PRIV *pScatterReq; /* this request is a scatter request */
60
struct hif_scatter_req_priv *pScatterReq; /* this request is a scatter request */
65
63
struct hif_device {
76
74
BUS_REQUEST busRequest[BUS_REQUEST_MAX_NUM]; /* available bus requests */
77
75
void *claimedContext;
78
76
HTC_CALLBACKS htcCallbacks;
80
DL_LIST ScatterReqHead; /* scatter request list head */
81
A_BOOL scatter_enabled; /* scatter enabled flag */
78
struct dl_list ScatterReqHead; /* scatter request list head */
79
bool scatter_enabled; /* scatter enabled flag */
84
82
atomic_t irqHandling;
85
83
HIF_DEVICE_POWER_CHANGE_TYPE powerConfig;
86
84
const struct sdio_device_id *id;
90
88
#define CMD53_FIXED_ADDRESS 1
91
89
#define CMD53_INCR_ADDRESS 2
93
BUS_REQUEST *hifAllocateBusRequest(HIF_DEVICE *device);
94
void hifFreeBusRequest(HIF_DEVICE *device, BUS_REQUEST *busrequest);
95
void AddToAsyncList(HIF_DEVICE *device, BUS_REQUEST *busrequest);
91
BUS_REQUEST *hifAllocateBusRequest(struct hif_device *device);
92
void hifFreeBusRequest(struct hif_device *device, BUS_REQUEST *busrequest);
93
void AddToAsyncList(struct hif_device *device, BUS_REQUEST *busrequest);
97
95
#ifdef HIF_LINUX_MMC_SCATTER_SUPPORT
100
98
#define MAX_SCATTER_ENTRIES_PER_REQ 16
101
99
#define MAX_SCATTER_REQ_TRANSFER_SIZE 32*1024
103
typedef struct _HIF_SCATTER_REQ_PRIV {
104
HIF_SCATTER_REQ *pHifScatterReq; /* HIF scatter request with allocated entries */
105
HIF_DEVICE *device; /* this device */
101
struct hif_scatter_req_priv {
102
struct hif_scatter_req *pHifScatterReq; /* HIF scatter request with allocated entries */
103
struct hif_device *device; /* this device */
106
104
BUS_REQUEST *busrequest; /* request associated with request */
107
105
/* scatter list for linux */
108
106
struct scatterlist sgentries[MAX_SCATTER_ENTRIES_PER_REQ];
109
} HIF_SCATTER_REQ_PRIV;
111
109
#define ATH_DEBUG_SCATTER ATH_DEBUG_MAKE_MODULE_MASK(0)
113
A_STATUS SetupHIFScatterSupport(HIF_DEVICE *device, HIF_DEVICE_SCATTER_SUPPORT_INFO *pInfo);
114
void CleanupHIFScatterResources(HIF_DEVICE *device);
115
A_STATUS DoHifReadWriteScatter(HIF_DEVICE *device, BUS_REQUEST *busrequest);
111
int SetupHIFScatterSupport(struct hif_device *device, struct hif_device_scatter_support_info *pInfo);
112
void CleanupHIFScatterResources(struct hif_device *device);
113
int DoHifReadWriteScatter(struct hif_device *device, BUS_REQUEST *busrequest);
117
115
#else // HIF_LINUX_MMC_SCATTER_SUPPORT
119
static inline A_STATUS SetupHIFScatterSupport(HIF_DEVICE *device, HIF_DEVICE_SCATTER_SUPPORT_INFO *pInfo)
117
static inline int SetupHIFScatterSupport(struct hif_device *device, struct hif_device_scatter_support_info *pInfo)
121
119
return A_ENOTSUP;
124
static inline A_STATUS DoHifReadWriteScatter(HIF_DEVICE *device, BUS_REQUEST *busrequest)
122
static inline int DoHifReadWriteScatter(struct hif_device *device, BUS_REQUEST *busrequest)
126
124
return A_ENOTSUP;