Lines Matching refs:desc

110 	struct at_desc	*desc = NULL;  in atc_alloc_descriptor()  local
114 desc = dma_pool_alloc(atdma->dma_desc_pool, gfp_flags, &phys); in atc_alloc_descriptor()
115 if (desc) { in atc_alloc_descriptor()
116 memset(desc, 0, sizeof(struct at_desc)); in atc_alloc_descriptor()
117 INIT_LIST_HEAD(&desc->tx_list); in atc_alloc_descriptor()
118 dma_async_tx_descriptor_init(&desc->txd, chan); in atc_alloc_descriptor()
120 desc->txd.flags = DMA_CTRL_ACK; in atc_alloc_descriptor()
121 desc->txd.tx_submit = atc_tx_submit; in atc_alloc_descriptor()
122 desc->txd.phys = phys; in atc_alloc_descriptor()
125 return desc; in atc_alloc_descriptor()
134 struct at_desc *desc, *_desc; in atc_desc_get() local
141 list_for_each_entry_safe(desc, _desc, &atchan->free_list, desc_node) { in atc_desc_get()
143 if (async_tx_test_ack(&desc->txd)) { in atc_desc_get()
144 list_del(&desc->desc_node); in atc_desc_get()
145 ret = desc; in atc_desc_get()
149 "desc %p not ACKed\n", desc); in atc_desc_get()
176 static void atc_desc_put(struct at_dma_chan *atchan, struct at_desc *desc) in atc_desc_put() argument
178 if (desc) { in atc_desc_put()
183 list_for_each_entry(child, &desc->tx_list, desc_node) in atc_desc_put()
187 list_splice_init(&desc->tx_list, &atchan->free_list); in atc_desc_put()
189 "moving desc %p to freelist\n", desc); in atc_desc_put()
190 list_add(&desc->desc_node, &atchan->free_list); in atc_desc_put()
204 struct at_desc *desc) in atc_desc_chain() argument
207 *first = desc; in atc_desc_chain()
210 (*prev)->lli.dscr = desc->txd.phys; in atc_desc_chain()
212 list_add_tail(&desc->desc_node, in atc_desc_chain()
215 *prev = desc; in atc_desc_chain()
269 struct at_desc *desc, *_desc; in atc_get_desc_by_cookie() local
271 list_for_each_entry_safe(desc, _desc, &atchan->queue, desc_node) { in atc_get_desc_by_cookie()
272 if (desc->txd.cookie == cookie) in atc_get_desc_by_cookie()
273 return desc; in atc_get_desc_by_cookie()
276 list_for_each_entry_safe(desc, _desc, &atchan->active_list, desc_node) { in atc_get_desc_by_cookie()
277 if (desc->txd.cookie == cookie) in atc_get_desc_by_cookie()
278 return desc; in atc_get_desc_by_cookie()
314 struct at_desc *desc; in atc_get_bytes_left() local
323 desc = atc_get_desc_by_cookie(atchan, cookie); in atc_get_bytes_left()
324 if (desc == NULL) in atc_get_bytes_left()
326 else if (desc != desc_first) in atc_get_bytes_left()
327 return desc->total_len; in atc_get_bytes_left()
420 list_for_each_entry(desc, &desc_first->tx_list, desc_node) { in atc_get_bytes_left()
421 if (desc->lli.dscr == dscr) in atc_get_bytes_left()
424 ret -= desc->len; in atc_get_bytes_left()
448 atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) in atc_chain_complete() argument
450 struct dma_async_tx_descriptor *txd = &desc->txd; in atc_chain_complete()
461 if (desc->memset_buffer) { in atc_chain_complete()
462 dma_pool_free(atdma->memset_pool, desc->memset_vaddr, in atc_chain_complete()
463 desc->memset_paddr); in atc_chain_complete()
464 desc->memset_buffer = false; in atc_chain_complete()
468 list_splice_init(&desc->tx_list, &atchan->free_list); in atc_chain_complete()
470 list_move(&desc->desc_node, &atchan->free_list); in atc_chain_complete()
501 struct at_desc *desc, *_desc; in atc_complete_all() local
517 list_for_each_entry_safe(desc, _desc, &list, desc_node) in atc_complete_all()
518 atc_chain_complete(atchan, desc); in atc_complete_all()
683 struct at_desc *desc = txd_to_at_desc(tx); in atc_tx_submit() local
693 desc->txd.cookie); in atc_tx_submit()
694 atc_dostart(atchan, desc); in atc_tx_submit()
695 list_add_tail(&desc->desc_node, &atchan->active_list); in atc_tx_submit()
698 desc->txd.cookie); in atc_tx_submit()
699 list_add_tail(&desc->desc_node, &atchan->queue); in atc_tx_submit()
720 struct at_desc *desc = NULL; in atc_prep_dma_interleaved() local
777 desc = atc_desc_get(atchan); in atc_prep_dma_interleaved()
778 if (!desc) { in atc_prep_dma_interleaved()
784 desc->lli.saddr = xt->src_start; in atc_prep_dma_interleaved()
785 desc->lli.daddr = xt->dst_start; in atc_prep_dma_interleaved()
786 desc->lli.ctrla = ctrla | xfer_count; in atc_prep_dma_interleaved()
787 desc->lli.ctrlb = ctrlb; in atc_prep_dma_interleaved()
789 desc->boundary = first->size >> dwidth; in atc_prep_dma_interleaved()
790 desc->dst_hole = (dmaengine_get_dst_icg(xt, first) >> dwidth) + 1; in atc_prep_dma_interleaved()
791 desc->src_hole = (dmaengine_get_src_icg(xt, first) >> dwidth) + 1; in atc_prep_dma_interleaved()
793 desc->txd.cookie = -EBUSY; in atc_prep_dma_interleaved()
794 desc->total_len = desc->len = len; in atc_prep_dma_interleaved()
797 set_desc_eol(desc); in atc_prep_dma_interleaved()
799 desc->txd.flags = flags; /* client is in control of this ack */ in atc_prep_dma_interleaved()
801 return &desc->txd; in atc_prep_dma_interleaved()
817 struct at_desc *desc = NULL; in atc_prep_dma_memcpy() local
853 desc = atc_desc_get(atchan); in atc_prep_dma_memcpy()
854 if (!desc) in atc_prep_dma_memcpy()
857 desc->lli.saddr = src + offset; in atc_prep_dma_memcpy()
858 desc->lli.daddr = dest + offset; in atc_prep_dma_memcpy()
859 desc->lli.ctrla = ctrla | xfer_count; in atc_prep_dma_memcpy()
860 desc->lli.ctrlb = ctrlb; in atc_prep_dma_memcpy()
862 desc->txd.cookie = 0; in atc_prep_dma_memcpy()
863 desc->len = xfer_count << src_width; in atc_prep_dma_memcpy()
865 atc_desc_chain(&first, &prev, desc); in atc_prep_dma_memcpy()
873 set_desc_eol(desc); in atc_prep_dma_memcpy()
890 struct at_desc *desc; in atc_create_memset_desc() local
906 desc = atc_desc_get(atchan); in atc_create_memset_desc()
907 if (!desc) { in atc_create_memset_desc()
913 desc->lli.saddr = psrc; in atc_create_memset_desc()
914 desc->lli.daddr = pdst; in atc_create_memset_desc()
915 desc->lli.ctrla = ctrla | xfer_count; in atc_create_memset_desc()
916 desc->lli.ctrlb = ctrlb; in atc_create_memset_desc()
918 desc->txd.cookie = 0; in atc_create_memset_desc()
919 desc->len = len; in atc_create_memset_desc()
921 return desc; in atc_create_memset_desc()
937 struct at_desc *desc; in atc_prep_dma_memset() local
963 desc = atc_create_memset_desc(chan, paddr, dest, len); in atc_prep_dma_memset()
964 if (!desc) { in atc_prep_dma_memset()
970 desc->memset_paddr = paddr; in atc_prep_dma_memset()
971 desc->memset_vaddr = vaddr; in atc_prep_dma_memset()
972 desc->memset_buffer = true; in atc_prep_dma_memset()
974 desc->txd.cookie = -EBUSY; in atc_prep_dma_memset()
975 desc->total_len = len; in atc_prep_dma_memset()
978 set_desc_eol(desc); in atc_prep_dma_memset()
980 desc->txd.flags = flags; in atc_prep_dma_memset()
982 return &desc->txd; in atc_prep_dma_memset()
997 struct at_desc *desc = NULL, *first = NULL, *prev = NULL; in atc_prep_dma_memset_sg() local
1034 desc = atc_create_memset_desc(chan, paddr, dest, len); in atc_prep_dma_memset_sg()
1035 if (!desc) in atc_prep_dma_memset_sg()
1038 atc_desc_chain(&first, &prev, desc); in atc_prep_dma_memset_sg()
1047 desc->memset_paddr = paddr; in atc_prep_dma_memset_sg()
1048 desc->memset_vaddr = vaddr; in atc_prep_dma_memset_sg()
1049 desc->memset_buffer = true; in atc_prep_dma_memset_sg()
1055 set_desc_eol(desc); in atc_prep_dma_memset_sg()
1118 struct at_desc *desc; in atc_prep_slave_sg() local
1122 desc = atc_desc_get(atchan); in atc_prep_slave_sg()
1123 if (!desc) in atc_prep_slave_sg()
1137 desc->lli.saddr = mem; in atc_prep_slave_sg()
1138 desc->lli.daddr = reg; in atc_prep_slave_sg()
1139 desc->lli.ctrla = ctrla in atc_prep_slave_sg()
1142 desc->lli.ctrlb = ctrlb; in atc_prep_slave_sg()
1143 desc->len = len; in atc_prep_slave_sg()
1145 atc_desc_chain(&first, &prev, desc); in atc_prep_slave_sg()
1159 struct at_desc *desc; in atc_prep_slave_sg() local
1163 desc = atc_desc_get(atchan); in atc_prep_slave_sg()
1164 if (!desc) in atc_prep_slave_sg()
1178 desc->lli.saddr = reg; in atc_prep_slave_sg()
1179 desc->lli.daddr = mem; in atc_prep_slave_sg()
1180 desc->lli.ctrla = ctrla in atc_prep_slave_sg()
1183 desc->lli.ctrlb = ctrlb; in atc_prep_slave_sg()
1184 desc->len = len; in atc_prep_slave_sg()
1186 atc_desc_chain(&first, &prev, desc); in atc_prep_slave_sg()
1229 struct at_desc *desc = NULL; in atc_prep_dma_sg() local
1306 desc = atc_desc_get(atchan); in atc_prep_dma_sg()
1307 if (!desc) in atc_prep_dma_sg()
1310 desc->lli.saddr = src; in atc_prep_dma_sg()
1311 desc->lli.daddr = dst; in atc_prep_dma_sg()
1312 desc->lli.ctrla = ctrla | xfer_count; in atc_prep_dma_sg()
1313 desc->lli.ctrlb = ctrlb; in atc_prep_dma_sg()
1315 desc->txd.cookie = 0; in atc_prep_dma_sg()
1316 desc->len = len; in atc_prep_dma_sg()
1318 atc_desc_chain(&first, &prev, desc); in atc_prep_dma_sg()
1334 set_desc_eol(desc); in atc_prep_dma_sg()
1370 atc_dma_cyclic_fill_desc(struct dma_chan *chan, struct at_desc *desc, in atc_dma_cyclic_fill_desc() argument
1388 desc->lli.saddr = buf_addr + (period_len * period_index); in atc_dma_cyclic_fill_desc()
1389 desc->lli.daddr = sconfig->dst_addr; in atc_dma_cyclic_fill_desc()
1390 desc->lli.ctrla = ctrla; in atc_dma_cyclic_fill_desc()
1391 desc->lli.ctrlb = ATC_DST_ADDR_MODE_FIXED in atc_dma_cyclic_fill_desc()
1396 desc->len = period_len; in atc_dma_cyclic_fill_desc()
1400 desc->lli.saddr = sconfig->src_addr; in atc_dma_cyclic_fill_desc()
1401 desc->lli.daddr = buf_addr + (period_len * period_index); in atc_dma_cyclic_fill_desc()
1402 desc->lli.ctrla = ctrla; in atc_dma_cyclic_fill_desc()
1403 desc->lli.ctrlb = ATC_DST_ADDR_MODE_INCR in atc_dma_cyclic_fill_desc()
1408 desc->len = period_len; in atc_dma_cyclic_fill_desc()
1472 struct at_desc *desc; in atc_prep_dma_cyclic() local
1474 desc = atc_desc_get(atchan); in atc_prep_dma_cyclic()
1475 if (!desc) in atc_prep_dma_cyclic()
1478 if (atc_dma_cyclic_fill_desc(chan, desc, i, buf_addr, in atc_prep_dma_cyclic()
1482 atc_desc_chain(&first, &prev, desc); in atc_prep_dma_cyclic()
1571 struct at_desc *desc, *_desc; in atc_terminate_all() local
1598 list_for_each_entry_safe(desc, _desc, &list, desc_node) in atc_terminate_all()
1599 atc_chain_complete(atchan, desc); in atc_terminate_all()
1691 struct at_desc *desc; in atc_alloc_chan_resources() local
1728 desc = atc_alloc_descriptor(chan, GFP_KERNEL); in atc_alloc_chan_resources()
1729 if (!desc) { in atc_alloc_chan_resources()
1734 list_add_tail(&desc->desc_node, &tmp_list); in atc_alloc_chan_resources()
1761 struct at_desc *desc, *_desc; in atc_free_chan_resources() local
1772 list_for_each_entry_safe(desc, _desc, &atchan->free_list, desc_node) { in atc_free_chan_resources()
1773 dev_vdbg(chan2dev(chan), " freeing descriptor %p\n", desc); in atc_free_chan_resources()
1774 list_del(&desc->desc_node); in atc_free_chan_resources()
1776 dma_pool_free(atdma->dma_desc_pool, desc, desc->txd.phys); in atc_free_chan_resources()