Lines Matching refs:dma_desc

154 	struct tegra_dma_desc		*dma_desc;
267 struct tegra_dma_desc *dma_desc;
273 list_for_each_entry(dma_desc, &tdc->free_dma_desc, node) {
274 if (async_tx_test_ack(&dma_desc->txd) && !dma_desc->cb_count) {
275 list_del(&dma_desc->node);
277 dma_desc->txd.flags = 0;
278 return dma_desc;
285 dma_desc = kzalloc(sizeof(*dma_desc), GFP_NOWAIT);
286 if (!dma_desc)
289 dma_async_tx_descriptor_init(&dma_desc->txd, &tdc->dma_chan);
290 dma_desc->txd.tx_submit = tegra_dma_tx_submit;
291 dma_desc->txd.flags = 0;
293 return dma_desc;
297 struct tegra_dma_desc *dma_desc)
302 if (!list_empty(&dma_desc->tx_list))
303 list_splice_init(&dma_desc->tx_list, &tdc->free_sg_req);
304 list_add_tail(&dma_desc->node, &tdc->free_dma_desc);
522 struct tegra_dma_desc *dma_desc;
530 dma_desc = sgreq->dma_desc;
531 dma_desc->dma_status = DMA_ERROR;
532 list_add_tail(&dma_desc->node, &tdc->free_dma_desc);
535 if (!dma_desc->cb_count)
536 list_add_tail(&dma_desc->cb_node,
538 dma_desc->cb_count++;
573 struct tegra_dma_desc *dma_desc;
578 dma_desc = sgreq->dma_desc;
579 dma_desc->bytes_transferred += sgreq->req_len;
583 dma_desc->dma_status = DMA_COMPLETE;
584 dma_cookie_complete(&dma_desc->txd);
585 if (!dma_desc->cb_count)
586 list_add_tail(&dma_desc->cb_node, &tdc->cb_desc);
587 dma_desc->cb_count++;
588 list_add_tail(&dma_desc->node, &tdc->free_dma_desc);
607 struct tegra_dma_desc *dma_desc;
612 dma_desc = sgreq->dma_desc;
614 dma_desc->bytes_transferred =
615 (dma_desc->bytes_transferred + sgreq->req_len) %
616 dma_desc->bytes_requested;
619 if (!dma_desc->cb_count)
620 list_add_tail(&dma_desc->cb_node, &tdc->cb_desc);
621 dma_desc->cb_count++;
631 dma_desc->dma_status = DMA_ERROR;
639 struct tegra_dma_desc *dma_desc;
645 dma_desc = list_first_entry(&tdc->cb_desc, typeof(*dma_desc),
647 list_del(&dma_desc->cb_node);
648 dmaengine_desc_get_callback(&dma_desc->txd, &cb);
649 cb_count = dma_desc->cb_count;
650 dma_desc->cb_count = 0;
688 struct tegra_dma_desc *dma_desc = txd_to_tegra_dma_desc(txd);
694 dma_desc->dma_status = DMA_IN_PROGRESS;
695 cookie = dma_cookie_assign(&dma_desc->txd);
696 list_splice_tail_init(&dma_desc->tx_list, &tdc->pending_sg_req);
739 struct tegra_dma_desc *dma_desc;
770 sgreq->dma_desc->bytes_transferred +=
782 dma_desc = list_first_entry(&tdc->cb_desc, typeof(*dma_desc),
784 list_del(&dma_desc->cb_node);
785 dma_desc->cb_count = 0;
891 struct tegra_dma_desc *dma_desc;
905 list_for_each_entry(dma_desc, &tdc->free_dma_desc, node) {
906 if (dma_desc->txd.cookie == cookie) {
907 ret = dma_desc->dma_status;
914 dma_desc = sg_req->dma_desc;
915 if (dma_desc->txd.cookie == cookie) {
917 ret = dma_desc->dma_status;
923 dma_desc = NULL;
926 if (dma_desc && txstate) {
927 residual = dma_desc->bytes_requested -
928 ((dma_desc->bytes_transferred + bytes) %
929 dma_desc->bytes_requested);
1046 struct tegra_dma_desc *dma_desc;
1088 dma_desc = tegra_dma_desc_get(tdc);
1089 if (!dma_desc) {
1093 INIT_LIST_HEAD(&dma_desc->tx_list);
1094 INIT_LIST_HEAD(&dma_desc->cb_node);
1095 dma_desc->cb_count = 0;
1096 dma_desc->bytes_requested = 0;
1097 dma_desc->bytes_transferred = 0;
1098 dma_desc->dma_status = DMA_IN_PROGRESS;
1111 tegra_dma_desc_put(tdc, dma_desc);
1118 tegra_dma_desc_put(tdc, dma_desc);
1123 dma_desc->bytes_requested += len;
1133 sg_req->dma_desc = dma_desc;
1136 list_add_tail(&sg_req->node, &dma_desc->tx_list);
1140 dma_desc->txd.flags = DMA_CTRL_ACK;
1152 tegra_dma_desc_put(tdc, dma_desc);
1157 return &dma_desc->txd;
1171 struct tegra_dma_desc *dma_desc;
1236 dma_desc = tegra_dma_desc_get(tdc);
1237 if (!dma_desc) {
1242 INIT_LIST_HEAD(&dma_desc->tx_list);
1243 INIT_LIST_HEAD(&dma_desc->cb_node);
1244 dma_desc->cb_count = 0;
1246 dma_desc->bytes_transferred = 0;
1247 dma_desc->bytes_requested = buf_len;
1255 tegra_dma_desc_put(tdc, dma_desc);
1268 sg_req->dma_desc = dma_desc;
1271 list_add_tail(&sg_req->node, &dma_desc->tx_list);
1277 dma_desc->txd.flags = DMA_CTRL_ACK;
1289 tegra_dma_desc_put(tdc, dma_desc);
1294 return &dma_desc->txd;
1309 struct tegra_dma_desc *dma_desc;
1330 dma_desc = list_first_entry(&dma_desc_list, typeof(*dma_desc),
1332 list_del(&dma_desc->node);
1333 kfree(dma_desc);