• Home
  • Raw
  • Download

Lines Matching refs:scat_req

53 	struct list_head scat_req;  member
221 static void ath6kl_sdio_setup_scat_data(struct hif_scatter_req *scat_req, in ath6kl_sdio_setup_scat_data() argument
228 data->blocks = scat_req->len / HIF_MBOX_BLOCK_SIZE; in ath6kl_sdio_setup_scat_data()
232 (scat_req->req & HIF_WRITE) ? "WR" : "RD", scat_req->addr, in ath6kl_sdio_setup_scat_data()
233 data->blksz, data->blocks, scat_req->len, in ath6kl_sdio_setup_scat_data()
234 scat_req->scat_entries); in ath6kl_sdio_setup_scat_data()
236 data->flags = (scat_req->req & HIF_WRITE) ? MMC_DATA_WRITE : in ath6kl_sdio_setup_scat_data()
240 sg = scat_req->sgentries; in ath6kl_sdio_setup_scat_data()
241 sg_init_table(sg, scat_req->scat_entries); in ath6kl_sdio_setup_scat_data()
244 for (i = 0; i < scat_req->scat_entries; i++, sg++) { in ath6kl_sdio_setup_scat_data()
246 i, scat_req->scat_list[i].buf, in ath6kl_sdio_setup_scat_data()
247 scat_req->scat_list[i].len); in ath6kl_sdio_setup_scat_data()
249 sg_set_buf(sg, scat_req->scat_list[i].buf, in ath6kl_sdio_setup_scat_data()
250 scat_req->scat_list[i].len); in ath6kl_sdio_setup_scat_data()
254 data->sg = scat_req->sgentries; in ath6kl_sdio_setup_scat_data()
255 data->sg_len = scat_req->scat_entries; in ath6kl_sdio_setup_scat_data()
264 struct hif_scatter_req *scat_req; in ath6kl_sdio_scat_rw() local
268 scat_req = req->scat_req; in ath6kl_sdio_scat_rw()
270 if (scat_req->virt_scat) { in ath6kl_sdio_scat_rw()
271 len = scat_req->len; in ath6kl_sdio_scat_rw()
272 if (scat_req->req & HIF_BLOCK_BASIS) in ath6kl_sdio_scat_rw()
275 status = ath6kl_sdio_io(ar_sdio->func, scat_req->req, in ath6kl_sdio_scat_rw()
276 scat_req->addr, scat_req->virt_dma_buf, in ath6kl_sdio_scat_rw()
285 ath6kl_sdio_setup_scat_data(scat_req, &data); in ath6kl_sdio_scat_rw()
287 opcode = (scat_req->req & HIF_FIXED_ADDRESS) ? in ath6kl_sdio_scat_rw()
290 rw = (scat_req->req & HIF_WRITE) ? CMD53_ARG_WRITE : CMD53_ARG_READ; in ath6kl_sdio_scat_rw()
293 if (scat_req->req & HIF_WRITE) { in ath6kl_sdio_scat_rw()
294 if (scat_req->addr == HIF_MBOX_BASE_ADDR) in ath6kl_sdio_scat_rw()
295 scat_req->addr += HIF_MBOX_WIDTH - scat_req->len; in ath6kl_sdio_scat_rw()
298 scat_req->addr += HIF_MBOX0_EXT_WIDTH - scat_req->len; in ath6kl_sdio_scat_rw()
303 CMD53_ARG_BLOCK_BASIS, opcode, scat_req->addr, in ath6kl_sdio_scat_rw()
316 trace_ath6kl_sdio_scat(scat_req->addr, in ath6kl_sdio_scat_rw()
317 scat_req->req, in ath6kl_sdio_scat_rw()
318 scat_req->len, in ath6kl_sdio_scat_rw()
319 scat_req->scat_entries, in ath6kl_sdio_scat_rw()
320 scat_req->scat_list); in ath6kl_sdio_scat_rw()
330 scat_req->status = status; in ath6kl_sdio_scat_rw()
332 if (scat_req->status) in ath6kl_sdio_scat_rw()
334 scat_req->status); in ath6kl_sdio_scat_rw()
336 if (scat_req->req & HIF_ASYNCHRONOUS) in ath6kl_sdio_scat_rw()
337 scat_req->complete(ar_sdio->ar->htc_target, scat_req); in ath6kl_sdio_scat_rw()
395 bus_req->scat_req = s_req; in ath6kl_sdio_alloc_prep_scat_req()
445 if (req->scat_req) { in __ath6kl_sdio_write_async()
637 if (!list_empty(&ar_sdio->scat_req)) { in ath6kl_sdio_scatter_req_get()
638 node = list_first_entry(&ar_sdio->scat_req, in ath6kl_sdio_scatter_req_get()
642 node->scat_q_depth = get_queue_depth(&ar_sdio->scat_req); in ath6kl_sdio_scatter_req_get()
657 list_add_tail(&s_req->list, &ar_sdio->scat_req); in ath6kl_sdio_scatter_req_add()
664 struct hif_scatter_req *scat_req) in ath6kl_sdio_async_rw_scatter() argument
667 u32 request = scat_req->req; in ath6kl_sdio_async_rw_scatter()
670 if (!scat_req->len) in ath6kl_sdio_async_rw_scatter()
675 scat_req->len, scat_req->scat_entries); in ath6kl_sdio_async_rw_scatter()
678 status = ath6kl_sdio_scat_rw(ar_sdio, scat_req->busrequest); in ath6kl_sdio_async_rw_scatter()
681 list_add_tail(&scat_req->busrequest->list, &ar_sdio->wr_asyncq); in ath6kl_sdio_async_rw_scatter()
697 list_for_each_entry_safe(s_req, tmp_req, &ar_sdio->scat_req, list) { in ath6kl_sdio_cleanup_scatter()
1225 if (req->scat_req) { in ath6kl_sdio_stop()
1227 req->scat_req->status = -ECANCELED; in ath6kl_sdio_stop()
1228 req->scat_req->complete(ar_sdio->ar->htc_target, in ath6kl_sdio_stop()
1229 req->scat_req); in ath6kl_sdio_stop()
1239 WARN_ON(get_queue_depth(&ar_sdio->scat_req) != 4); in ath6kl_sdio_stop()
1328 INIT_LIST_HEAD(&ar_sdio->scat_req); in ath6kl_sdio_probe()