Lines Matching refs:sg_req
311 struct tegra_dma_sg_req *sg_req; in tegra_dma_sg_req_get() local
316 sg_req = list_first_entry(&tdc->free_sg_req, typeof(*sg_req), in tegra_dma_sg_req_get()
318 list_del(&sg_req->node); in tegra_dma_sg_req_get()
320 return sg_req; in tegra_dma_sg_req_get()
324 sg_req = kzalloc(sizeof(*sg_req), GFP_NOWAIT); in tegra_dma_sg_req_get()
326 return sg_req; in tegra_dma_sg_req_get()
428 struct tegra_dma_sg_req *sg_req) in tegra_dma_start() argument
430 struct tegra_dma_channel_regs *ch_regs = &sg_req->ch_regs; in tegra_dma_start()
491 struct tegra_dma_sg_req *sg_req; in tdc_start_head_req() local
493 sg_req = list_first_entry(&tdc->pending_sg_req, typeof(*sg_req), node); in tdc_start_head_req()
494 tegra_dma_start(tdc, sg_req); in tdc_start_head_req()
495 sg_req->configured = true; in tdc_start_head_req()
496 sg_req->words_xferred = 0; in tdc_start_head_req()
514 struct tegra_dma_sg_req *sg_req, in get_current_xferred_count() argument
517 return sg_req->req_len - (status & TEGRA_APBDMA_STATUS_COUNT_MASK) - 4; in get_current_xferred_count()
828 struct tegra_dma_sg_req *sg_req) in tegra_dma_sg_bytes_xferred() argument
832 if (!list_is_first(&sg_req->node, &tdc->pending_sg_req)) in tegra_dma_sg_bytes_xferred()
844 return sg_req->req_len; in tegra_dma_sg_bytes_xferred()
846 wcount = get_current_xferred_count(tdc, sg_req, wcount); in tegra_dma_sg_bytes_xferred()
863 if (sg_req->words_xferred) in tegra_dma_sg_bytes_xferred()
864 wcount = sg_req->req_len - 4; in tegra_dma_sg_bytes_xferred()
866 } else if (wcount < sg_req->words_xferred) { in tegra_dma_sg_bytes_xferred()
878 wcount = sg_req->req_len - 4; in tegra_dma_sg_bytes_xferred()
880 sg_req->words_xferred = wcount; in tegra_dma_sg_bytes_xferred()
892 struct tegra_dma_sg_req *sg_req; in tegra_dma_tx_status() local
913 list_for_each_entry(sg_req, &tdc->pending_sg_req, node) { in tegra_dma_tx_status()
914 dma_desc = sg_req->dma_desc; in tegra_dma_tx_status()
916 bytes = tegra_dma_sg_bytes_xferred(tdc, sg_req); in tegra_dma_tx_status()
1043 struct tegra_dma_sg_req *sg_req = NULL; in tegra_dma_prep_slave_sg() local
1115 sg_req = tegra_dma_sg_req_get(tdc); in tegra_dma_prep_slave_sg()
1116 if (!sg_req) { in tegra_dma_prep_slave_sg()
1125 sg_req->ch_regs.apb_ptr = apb_ptr; in tegra_dma_prep_slave_sg()
1126 sg_req->ch_regs.ahb_ptr = mem; in tegra_dma_prep_slave_sg()
1127 sg_req->ch_regs.csr = csr; in tegra_dma_prep_slave_sg()
1128 tegra_dma_prep_wcount(tdc, &sg_req->ch_regs, len); in tegra_dma_prep_slave_sg()
1129 sg_req->ch_regs.apb_seq = apb_seq; in tegra_dma_prep_slave_sg()
1130 sg_req->ch_regs.ahb_seq = ahb_seq; in tegra_dma_prep_slave_sg()
1131 sg_req->configured = false; in tegra_dma_prep_slave_sg()
1132 sg_req->last_sg = false; in tegra_dma_prep_slave_sg()
1133 sg_req->dma_desc = dma_desc; in tegra_dma_prep_slave_sg()
1134 sg_req->req_len = len; in tegra_dma_prep_slave_sg()
1136 list_add_tail(&sg_req->node, &dma_desc->tx_list); in tegra_dma_prep_slave_sg()
1138 sg_req->last_sg = true; in tegra_dma_prep_slave_sg()
1168 struct tegra_dma_sg_req *sg_req = NULL; in tegra_dma_prep_dma_cyclic() local
1252 sg_req = tegra_dma_sg_req_get(tdc); in tegra_dma_prep_dma_cyclic()
1253 if (!sg_req) { in tegra_dma_prep_dma_cyclic()
1260 sg_req->ch_regs.apb_ptr = apb_ptr; in tegra_dma_prep_dma_cyclic()
1261 sg_req->ch_regs.ahb_ptr = mem; in tegra_dma_prep_dma_cyclic()
1262 sg_req->ch_regs.csr = csr; in tegra_dma_prep_dma_cyclic()
1263 tegra_dma_prep_wcount(tdc, &sg_req->ch_regs, len); in tegra_dma_prep_dma_cyclic()
1264 sg_req->ch_regs.apb_seq = apb_seq; in tegra_dma_prep_dma_cyclic()
1265 sg_req->ch_regs.ahb_seq = ahb_seq; in tegra_dma_prep_dma_cyclic()
1266 sg_req->configured = false; in tegra_dma_prep_dma_cyclic()
1267 sg_req->last_sg = false; in tegra_dma_prep_dma_cyclic()
1268 sg_req->dma_desc = dma_desc; in tegra_dma_prep_dma_cyclic()
1269 sg_req->req_len = len; in tegra_dma_prep_dma_cyclic()
1271 list_add_tail(&sg_req->node, &dma_desc->tx_list); in tegra_dma_prep_dma_cyclic()
1275 sg_req->last_sg = true; in tegra_dma_prep_dma_cyclic()
1310 struct tegra_dma_sg_req *sg_req; in tegra_dma_free_chan_resources() local
1337 sg_req = list_first_entry(&sg_req_list, typeof(*sg_req), node); in tegra_dma_free_chan_resources()
1338 list_del(&sg_req->node); in tegra_dma_free_chan_resources()
1339 kfree(sg_req); in tegra_dma_free_chan_resources()