Lines Matching refs:dma_desc

155 	struct tegra_dma_desc		*dma_desc;
273 struct tegra_dma_desc *dma_desc;
279 list_for_each_entry(dma_desc, &tdc->free_dma_desc, node) {
280 if (async_tx_test_ack(&dma_desc->txd) && !dma_desc->cb_count) {
281 list_del(&dma_desc->node);
283 dma_desc->txd.flags = 0;
284 return dma_desc;
291 dma_desc = kzalloc(sizeof(*dma_desc), GFP_NOWAIT);
292 if (!dma_desc)
295 dma_async_tx_descriptor_init(&dma_desc->txd, &tdc->dma_chan);
296 dma_desc->txd.tx_submit = tegra_dma_tx_submit;
297 dma_desc->txd.flags = 0;
299 return dma_desc;
303 struct tegra_dma_desc *dma_desc)
308 if (!list_empty(&dma_desc->tx_list))
309 list_splice_init(&dma_desc->tx_list, &tdc->free_sg_req);
310 list_add_tail(&dma_desc->node, &tdc->free_dma_desc);
534 struct tegra_dma_desc *dma_desc;
542 dma_desc = sgreq->dma_desc;
543 dma_desc->dma_status = DMA_ERROR;
544 list_add_tail(&dma_desc->node, &tdc->free_dma_desc);
547 if (!dma_desc->cb_count)
548 list_add_tail(&dma_desc->cb_node,
550 dma_desc->cb_count++;
585 struct tegra_dma_desc *dma_desc;
590 dma_desc = sgreq->dma_desc;
591 dma_desc->bytes_transferred += sgreq->req_len;
595 dma_desc->dma_status = DMA_COMPLETE;
596 dma_cookie_complete(&dma_desc->txd);
597 if (!dma_desc->cb_count)
598 list_add_tail(&dma_desc->cb_node, &tdc->cb_desc);
599 dma_desc->cb_count++;
600 list_add_tail(&dma_desc->node, &tdc->free_dma_desc);
619 struct tegra_dma_desc *dma_desc;
624 dma_desc = sgreq->dma_desc;
626 dma_desc->bytes_transferred =
627 (dma_desc->bytes_transferred + sgreq->req_len) %
628 dma_desc->bytes_requested;
631 if (!dma_desc->cb_count)
632 list_add_tail(&dma_desc->cb_node, &tdc->cb_desc);
633 dma_desc->cb_count++;
643 dma_desc->dma_status = DMA_ERROR;
651 struct tegra_dma_desc *dma_desc;
657 dma_desc = list_first_entry(&tdc->cb_desc, typeof(*dma_desc),
659 list_del(&dma_desc->cb_node);
660 dmaengine_desc_get_callback(&dma_desc->txd, &cb);
661 cb_count = dma_desc->cb_count;
662 dma_desc->cb_count = 0;
700 struct tegra_dma_desc *dma_desc = txd_to_tegra_dma_desc(txd);
706 dma_desc->dma_status = DMA_IN_PROGRESS;
707 cookie = dma_cookie_assign(&dma_desc->txd);
708 list_splice_tail_init(&dma_desc->tx_list, &tdc->pending_sg_req);
751 struct tegra_dma_desc *dma_desc;
782 sgreq->dma_desc->bytes_transferred +=
794 dma_desc = list_first_entry(&tdc->cb_desc, typeof(*dma_desc),
796 list_del(&dma_desc->cb_node);
797 dma_desc->cb_count = 0;
903 struct tegra_dma_desc *dma_desc;
917 list_for_each_entry(dma_desc, &tdc->free_dma_desc, node) {
918 if (dma_desc->txd.cookie == cookie) {
919 ret = dma_desc->dma_status;
926 dma_desc = sg_req->dma_desc;
927 if (dma_desc->txd.cookie == cookie) {
929 ret = dma_desc->dma_status;
935 dma_desc = NULL;
938 if (dma_desc && txstate) {
939 residual = dma_desc->bytes_requested -
940 ((dma_desc->bytes_transferred + bytes) %
941 dma_desc->bytes_requested);
1058 struct tegra_dma_desc *dma_desc;
1100 dma_desc = tegra_dma_desc_get(tdc);
1101 if (!dma_desc) {
1105 INIT_LIST_HEAD(&dma_desc->tx_list);
1106 INIT_LIST_HEAD(&dma_desc->cb_node);
1107 dma_desc->cb_count = 0;
1108 dma_desc->bytes_requested = 0;
1109 dma_desc->bytes_transferred = 0;
1110 dma_desc->dma_status = DMA_IN_PROGRESS;
1123 tegra_dma_desc_put(tdc, dma_desc);
1130 tegra_dma_desc_put(tdc, dma_desc);
1135 dma_desc->bytes_requested += len;
1145 sg_req->dma_desc = dma_desc;
1148 list_add_tail(&sg_req->node, &dma_desc->tx_list);
1152 dma_desc->txd.flags = DMA_CTRL_ACK;
1164 tegra_dma_desc_put(tdc, dma_desc);
1169 return &dma_desc->txd;
1183 struct tegra_dma_desc *dma_desc;
1248 dma_desc = tegra_dma_desc_get(tdc);
1249 if (!dma_desc) {
1254 INIT_LIST_HEAD(&dma_desc->tx_list);
1255 INIT_LIST_HEAD(&dma_desc->cb_node);
1256 dma_desc->cb_count = 0;
1258 dma_desc->bytes_transferred = 0;
1259 dma_desc->bytes_requested = buf_len;
1267 tegra_dma_desc_put(tdc, dma_desc);
1280 sg_req->dma_desc = dma_desc;
1283 list_add_tail(&sg_req->node, &dma_desc->tx_list);
1289 dma_desc->txd.flags = DMA_CTRL_ACK;
1301 tegra_dma_desc_put(tdc, dma_desc);
1306 return &dma_desc->txd;
1321 struct tegra_dma_desc *dma_desc;
1342 dma_desc = list_first_entry(&dma_desc_list, typeof(*dma_desc),
1344 list_del(&dma_desc->node);
1345 kfree(dma_desc);