Lines Matching refs:chan
185 struct dma_chan chan;
217 struct at_xdmac_chan chan[];
263 return container_of(dchan, struct at_xdmac_chan, chan);
266 static struct device *chan2dev(struct dma_chan *chan)
268 return &chan->dev->device;
338 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device);
341 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, first);
376 dev_vdbg(chan2dev(&atchan->chan),
404 dev_vdbg(chan2dev(&atchan->chan),
409 dev_vdbg(chan2dev(&atchan->chan),
423 struct at_xdmac_chan *atchan = to_at_xdmac_chan(tx->chan);
433 dev_vdbg(chan2dev(tx->chan), "%s: atchan 0x%p, add desc 0x%p to xfers_list\n",
439 static struct at_xdmac_desc *at_xdmac_alloc_desc(struct dma_chan *chan,
443 struct at_xdmac *atxdmac = to_at_xdmac(chan->device);
449 dma_async_tx_descriptor_init(&desc->tx_dma_desc, chan);
472 desc = at_xdmac_alloc_desc(&atchan->chan, GFP_NOWAIT);
483 static void at_xdmac_queue_desc(struct dma_chan *chan,
493 dev_dbg(chan2dev(chan), "%s: chain lld: prev=0x%p, mbr_nda=%pad\n",
497 static inline void at_xdmac_increment_block_count(struct dma_chan *chan,
505 dev_dbg(chan2dev(chan),
515 struct dma_chan *chan;
523 chan = dma_get_any_slave_channel(&atxdmac->dma);
524 if (!chan) {
529 atchan = to_at_xdmac_chan(chan);
533 dev_dbg(dev, "chan dt cfg: memif=%u perif=%u perid=%u\n",
536 return chan;
539 static int at_xdmac_compute_chan_conf(struct dma_chan *chan,
542 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
558 dev_err(chan2dev(chan), "invalid src maxburst value\n");
564 dev_err(chan2dev(chan), "invalid src addr width value\n");
581 dev_err(chan2dev(chan), "invalid src maxburst value\n");
587 dev_err(chan2dev(chan), "invalid dst addr width value\n");
593 dev_dbg(chan2dev(chan), "%s: cfg=0x%08x\n", __func__, atchan->cfg);
616 static int at_xdmac_set_slave_config(struct dma_chan *chan,
619 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
622 dev_err(chan2dev(chan), "invalid slave configuration\n");
632 at_xdmac_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
636 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
648 dev_err(chan2dev(chan), "invalid DMA direction\n");
652 dev_dbg(chan2dev(chan), "%s: sg_len=%d, dir=%s, flags=0x%lx\n",
660 if (at_xdmac_compute_chan_conf(chan, direction))
671 dev_err(chan2dev(chan), "sg data length is zero\n");
674 dev_dbg(chan2dev(chan), "%s: * sg%d len=%u, mem=0x%08x\n",
679 dev_err(chan2dev(chan), "can't get descriptor\n");
704 dev_dbg(chan2dev(chan),
710 at_xdmac_queue_desc(chan, prev, desc);
716 dev_dbg(chan2dev(chan), "%s: add desc 0x%p to descs_list 0x%p\n",
734 at_xdmac_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr,
739 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
745 dev_dbg(chan2dev(chan), "%s: buf_addr=%pad, buf_len=%zd, period_len=%zd, dir=%s, flags=0x%lx\n",
750 dev_err(chan2dev(chan), "invalid DMA direction\n");
755 dev_err(chan2dev(chan), "channel currently used\n");
759 if (at_xdmac_compute_chan_conf(chan, direction))
768 dev_err(chan2dev(chan), "can't get descriptor\n");
776 dev_dbg(chan2dev(chan),
793 dev_dbg(chan2dev(chan),
799 at_xdmac_queue_desc(chan, prev, desc);
805 dev_dbg(chan2dev(chan), "%s: add desc 0x%p to descs_list 0x%p\n",
810 at_xdmac_queue_desc(chan, prev, first);
818 static inline u32 at_xdmac_align_width(struct dma_chan *chan, dma_addr_t addr)
832 dev_dbg(chan2dev(chan), "%s: dwidth: double word\n", __func__);
835 dev_dbg(chan2dev(chan), "%s: dwidth: word\n", __func__);
838 dev_dbg(chan2dev(chan), "%s: dwidth: half word\n", __func__);
841 dev_dbg(chan2dev(chan), "%s: dwidth: byte\n", __func__);
848 at_xdmac_interleaved_queue_desc(struct dma_chan *chan,
877 dwidth = at_xdmac_align_width(chan, src | dst | chunk->size);
879 dev_dbg(chan2dev(chan),
887 dev_dbg(chan2dev(chan),
908 dev_err(chan2dev(chan), "can't get descriptor\n");
927 dev_dbg(chan2dev(chan),
934 at_xdmac_queue_desc(chan, prev, desc);
940 at_xdmac_prep_interleaved(struct dma_chan *chan,
944 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
961 dev_dbg(chan2dev(chan), "%s: src=%pad, dest=%pad, numf=%zu, frame_size=%zu, flags=0x%lx\n",
969 first = at_xdmac_interleaved_queue_desc(chan, atchan,
978 at_xdmac_increment_block_count(chan, first);
980 dev_dbg(chan2dev(chan), "%s: add desc 0x%p to descs_list 0x%p\n",
996 dev_dbg(chan2dev(chan),
1000 desc = at_xdmac_interleaved_queue_desc(chan, atchan,
1014 dev_dbg(chan2dev(chan), "%s: add desc 0x%p to descs_list 0x%p\n",
1037 at_xdmac_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
1040 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1065 dev_dbg(chan2dev(chan), "%s: src=%pad, dest=%pad, len=%zd, flags=0x%lx\n",
1071 dwidth = at_xdmac_align_width(chan, src_addr | dst_addr);
1077 dev_dbg(chan2dev(chan), "%s: remaining_size=%zu\n", __func__, remaining_size);
1083 dev_err(chan2dev(chan), "can't get descriptor\n");
1099 dev_dbg(chan2dev(chan), "%s: xfer_size=%zu\n", __func__, xfer_size);
1102 dwidth = at_xdmac_align_width(chan,
1118 dev_dbg(chan2dev(chan),
1124 at_xdmac_queue_desc(chan, prev, desc);
1130 dev_dbg(chan2dev(chan), "%s: add desc 0x%p to descs_list 0x%p\n",
1141 static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan,
1172 dwidth = at_xdmac_align_width(chan, dst_addr);
1175 dev_err(chan2dev(chan),
1185 dev_err(chan2dev(chan), "can't get descriptor\n");
1201 dev_dbg(chan2dev(chan),
1210 at_xdmac_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value,
1213 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1216 dev_dbg(chan2dev(chan), "%s: dest=%pad, len=%zu, pattern=0x%x, flags=0x%lx\n",
1222 desc = at_xdmac_memset_create_desc(chan, atchan, dest, len, value);
1233 at_xdmac_prep_dma_memset_sg(struct dma_chan *chan, struct scatterlist *sgl,
1237 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1247 dev_dbg(chan2dev(chan), "%s: sg_len=%d, value=0x%x, flags=0x%lx\n",
1252 dev_dbg(chan2dev(chan), "%s: dest=%pad, len=%d, pattern=0x%x, flags=0x%lx\n",
1255 desc = at_xdmac_memset_create_desc(chan, atchan,
1294 dev_dbg(chan2dev(chan),
1302 at_xdmac_increment_block_count(chan, ppdesc);
1333 at_xdmac_queue_desc(chan, ppdesc, pdesc);
1342 dev_dbg(chan2dev(chan),
1357 dev_dbg(chan2dev(chan),
1365 at_xdmac_increment_block_count(chan, pdesc);
1395 at_xdmac_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
1398 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1399 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device);
1409 ret = dma_cookie_status(chan, cookie, txstate);
1527 dev_dbg(chan2dev(chan),
1548 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc);
1574 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device);
1584 dev_err(chan2dev(&atchan->chan), "read bus error!!!");
1586 dev_err(chan2dev(&atchan->chan), "write bus error!!!");
1588 dev_err(chan2dev(&atchan->chan), "request overflow error!!!");
1604 dev_dbg(chan2dev(&atchan->chan),
1618 dev_dbg(chan2dev(&atchan->chan), "%s: status=0x%08x\n",
1638 dev_vdbg(chan2dev(&atchan->chan), "%s: desc 0x%p\n", __func__, desc);
1640 dev_err(chan2dev(&atchan->chan), "Xfer not active: exiting");
1690 atchan = &atxdmac->chan[i];
1695 "%s: chan%d: imr=0x%x, status=0x%x\n",
1697 dev_vdbg(chan2dev(&atchan->chan),
1719 static void at_xdmac_issue_pending(struct dma_chan *chan)
1721 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1724 dev_dbg(chan2dev(&atchan->chan), "%s\n", __func__);
1733 static int at_xdmac_device_config(struct dma_chan *chan,
1736 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1740 dev_dbg(chan2dev(chan), "%s\n", __func__);
1743 ret = at_xdmac_set_slave_config(chan, config);
1749 static int at_xdmac_device_pause(struct dma_chan *chan)
1751 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1752 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device);
1755 dev_dbg(chan2dev(chan), "%s\n", __func__);
1770 static int at_xdmac_device_resume(struct dma_chan *chan)
1772 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1773 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device);
1776 dev_dbg(chan2dev(chan), "%s\n", __func__);
1791 static int at_xdmac_device_terminate_all(struct dma_chan *chan)
1794 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1795 struct at_xdmac *atxdmac = to_at_xdmac(atchan->chan.device);
1798 dev_dbg(chan2dev(chan), "%s\n", __func__);
1819 static int at_xdmac_alloc_chan_resources(struct dma_chan *chan)
1821 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1826 dev_err(chan2dev(chan),
1832 dev_err(chan2dev(chan),
1838 desc = at_xdmac_alloc_desc(chan, GFP_KERNEL);
1841 dev_warn(chan2dev(chan),
1845 dev_warn(chan2dev(chan),
1852 dma_cookie_init(chan);
1854 dev_dbg(chan2dev(chan), "%s: allocated %d descriptors\n", __func__, i);
1859 static void at_xdmac_free_chan_resources(struct dma_chan *chan)
1861 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1862 struct at_xdmac *atxdmac = to_at_xdmac(chan->device);
1866 dev_dbg(chan2dev(chan), "%s: freeing descriptor %p\n", __func__, desc);
1878 struct dma_chan *chan, *_chan;
1880 list_for_each_entry_safe(chan, _chan, &atxdmac->dma.channels, device_node) {
1881 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1897 struct dma_chan *chan, *_chan;
1899 list_for_each_entry_safe(chan, _chan, &atxdmac->dma.channels, device_node) {
1900 struct at_xdmac_chan *atchan = to_at_xdmac_chan(chan);
1905 at_xdmac_device_pause(chan);
1923 struct dma_chan *chan, *_chan;
1933 atchan = &atxdmac->chan[i];
1939 list_for_each_entry_safe(chan, _chan, &atxdmac->dma.channels, device_node) {
1940 atchan = to_at_xdmac_chan(chan);
1944 at_xdmac_device_resume(chan);
2061 struct at_xdmac_chan *atchan = &atxdmac->chan[i];
2063 atchan->chan.device = &atxdmac->dma;
2064 list_add_tail(&atchan->chan.device_node,
2121 struct at_xdmac_chan *atchan = &atxdmac->chan[i];
2124 at_xdmac_free_chan_resources(&atchan->chan);