Lines Matching refs:scat_req

53 	struct list_head scat_req;  member
223 static void ath6kl_sdio_setup_scat_data(struct hif_scatter_req *scat_req, in ath6kl_sdio_setup_scat_data() argument
230 data->blocks = scat_req->len / HIF_MBOX_BLOCK_SIZE; in ath6kl_sdio_setup_scat_data()
234 (scat_req->req & HIF_WRITE) ? "WR" : "RD", scat_req->addr, in ath6kl_sdio_setup_scat_data()
235 data->blksz, data->blocks, scat_req->len, in ath6kl_sdio_setup_scat_data()
236 scat_req->scat_entries); in ath6kl_sdio_setup_scat_data()
238 data->flags = (scat_req->req & HIF_WRITE) ? MMC_DATA_WRITE : in ath6kl_sdio_setup_scat_data()
242 sg = scat_req->sgentries; in ath6kl_sdio_setup_scat_data()
243 sg_init_table(sg, scat_req->scat_entries); in ath6kl_sdio_setup_scat_data()
246 for (i = 0; i < scat_req->scat_entries; i++, sg++) { in ath6kl_sdio_setup_scat_data()
248 i, scat_req->scat_list[i].buf, in ath6kl_sdio_setup_scat_data()
249 scat_req->scat_list[i].len); in ath6kl_sdio_setup_scat_data()
251 sg_set_buf(sg, scat_req->scat_list[i].buf, in ath6kl_sdio_setup_scat_data()
252 scat_req->scat_list[i].len); in ath6kl_sdio_setup_scat_data()
256 data->sg = scat_req->sgentries; in ath6kl_sdio_setup_scat_data()
257 data->sg_len = scat_req->scat_entries; in ath6kl_sdio_setup_scat_data()
266 struct hif_scatter_req *scat_req; in ath6kl_sdio_scat_rw() local
270 scat_req = req->scat_req; in ath6kl_sdio_scat_rw()
272 if (scat_req->virt_scat) { in ath6kl_sdio_scat_rw()
273 len = scat_req->len; in ath6kl_sdio_scat_rw()
274 if (scat_req->req & HIF_BLOCK_BASIS) in ath6kl_sdio_scat_rw()
277 status = ath6kl_sdio_io(ar_sdio->func, scat_req->req, in ath6kl_sdio_scat_rw()
278 scat_req->addr, scat_req->virt_dma_buf, in ath6kl_sdio_scat_rw()
287 ath6kl_sdio_setup_scat_data(scat_req, &data); in ath6kl_sdio_scat_rw()
289 opcode = (scat_req->req & HIF_FIXED_ADDRESS) ? in ath6kl_sdio_scat_rw()
292 rw = (scat_req->req & HIF_WRITE) ? CMD53_ARG_WRITE : CMD53_ARG_READ; in ath6kl_sdio_scat_rw()
295 if (scat_req->req & HIF_WRITE) { in ath6kl_sdio_scat_rw()
296 if (scat_req->addr == HIF_MBOX_BASE_ADDR) in ath6kl_sdio_scat_rw()
297 scat_req->addr += HIF_MBOX_WIDTH - scat_req->len; in ath6kl_sdio_scat_rw()
300 scat_req->addr += HIF_MBOX0_EXT_WIDTH - scat_req->len; in ath6kl_sdio_scat_rw()
305 CMD53_ARG_BLOCK_BASIS, opcode, scat_req->addr, in ath6kl_sdio_scat_rw()
318 trace_ath6kl_sdio_scat(scat_req->addr, in ath6kl_sdio_scat_rw()
319 scat_req->req, in ath6kl_sdio_scat_rw()
320 scat_req->len, in ath6kl_sdio_scat_rw()
321 scat_req->scat_entries, in ath6kl_sdio_scat_rw()
322 scat_req->scat_list); in ath6kl_sdio_scat_rw()
332 scat_req->status = status; in ath6kl_sdio_scat_rw()
334 if (scat_req->status) in ath6kl_sdio_scat_rw()
336 scat_req->status); in ath6kl_sdio_scat_rw()
338 if (scat_req->req & HIF_ASYNCHRONOUS) in ath6kl_sdio_scat_rw()
339 scat_req->complete(ar_sdio->ar->htc_target, scat_req); in ath6kl_sdio_scat_rw()
397 bus_req->scat_req = s_req; in ath6kl_sdio_alloc_prep_scat_req()
447 if (req->scat_req) { in __ath6kl_sdio_write_async()
646 if (!list_empty(&ar_sdio->scat_req)) { in ath6kl_sdio_scatter_req_get()
647 node = list_first_entry(&ar_sdio->scat_req, in ath6kl_sdio_scatter_req_get()
651 node->scat_q_depth = get_queue_depth(&ar_sdio->scat_req); in ath6kl_sdio_scatter_req_get()
666 list_add_tail(&s_req->list, &ar_sdio->scat_req); in ath6kl_sdio_scatter_req_add()
673 struct hif_scatter_req *scat_req) in ath6kl_sdio_async_rw_scatter() argument
676 u32 request = scat_req->req; in ath6kl_sdio_async_rw_scatter()
679 if (!scat_req->len) in ath6kl_sdio_async_rw_scatter()
684 scat_req->len, scat_req->scat_entries); in ath6kl_sdio_async_rw_scatter()
687 status = ath6kl_sdio_scat_rw(ar_sdio, scat_req->busrequest); in ath6kl_sdio_async_rw_scatter()
690 list_add_tail(&scat_req->busrequest->list, &ar_sdio->wr_asyncq); in ath6kl_sdio_async_rw_scatter()
706 list_for_each_entry_safe(s_req, tmp_req, &ar_sdio->scat_req, list) { in ath6kl_sdio_cleanup_scatter()
716 s_req->busrequest->scat_req = NULL; in ath6kl_sdio_cleanup_scatter()
1237 if (req->scat_req) { in ath6kl_sdio_stop()
1239 req->scat_req->status = -ECANCELED; in ath6kl_sdio_stop()
1240 req->scat_req->complete(ar_sdio->ar->htc_target, in ath6kl_sdio_stop()
1241 req->scat_req); in ath6kl_sdio_stop()
1251 WARN_ON(get_queue_depth(&ar_sdio->scat_req) != 4); in ath6kl_sdio_stop()
1340 INIT_LIST_HEAD(&ar_sdio->scat_req); in ath6kl_sdio_probe()