Lines Matching refs:chan
60 static void atc_issue_pending(struct dma_chan *chan);
94 * @chan: the channel to allocate descriptors for
102 static struct at_desc *atc_alloc_descriptor(struct dma_chan *chan,
106 struct at_dma *atdma = to_at_dma(chan->device);
112 dma_async_tx_descriptor_init(&desc->txd, chan);
293 * @chan: DMA channel
296 static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie)
298 struct at_dma_chan *atchan = to_at_dma_chan(chan);
606 atchan = &atdma->chan[i];
639 struct at_dma_chan *atchan = to_at_dma_chan(tx->chan);
649 dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
656 * @chan: the channel to prepare operation on
661 atc_prep_dma_interleaved(struct dma_chan *chan,
665 struct at_dma_chan *atchan = to_at_dma_chan(chan);
680 dev_info(chan2dev(chan),
697 dev_err(chan2dev(chan),
711 dev_err(chan2dev(chan), "%s: buffer is too big\n", __func__);
728 dev_err(chan2dev(chan),
755 * @chan: the channel to prepare operation on
762 atc_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
765 struct at_dma_chan *atchan = to_at_dma_chan(chan);
776 dev_vdbg(chan2dev(chan), "prep_dma_memcpy: d%pad s%pad l0x%zx f0x%lx\n",
780 dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n");
833 static struct at_desc *atc_create_memset_desc(struct dma_chan *chan,
838 struct at_dma_chan *atchan = to_at_dma_chan(chan);
850 dev_err(chan2dev(chan), "%s: buffer is too big\n",
857 dev_err(chan2dev(chan), "%s: can't get a descriptor\n",
875 * @chan: the channel to prepare operation on
882 atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value,
885 struct at_dma *atdma = to_at_dma(chan->device);
890 dev_vdbg(chan2dev(chan), "%s: d%pad v0x%x l0x%zx f0x%lx\n", __func__,
894 dev_dbg(chan2dev(chan), "%s: length is zero!\n", __func__);
898 if (!is_dma_fill_aligned(chan->device, dest, 0, len)) {
899 dev_dbg(chan2dev(chan), "%s: buffer is not aligned\n",
906 dev_err(chan2dev(chan), "%s: couldn't allocate buffer\n",
912 desc = atc_create_memset_desc(chan, paddr, dest, len);
914 dev_err(chan2dev(chan), "%s: couldn't get a descriptor\n",
939 atc_prep_dma_memset_sg(struct dma_chan *chan,
944 struct at_dma_chan *atchan = to_at_dma_chan(chan);
945 struct at_dma *atdma = to_at_dma(chan->device);
953 dev_vdbg(chan2dev(chan), "%s: v0x%x l0x%zx f0x%lx\n", __func__,
957 dev_dbg(chan2dev(chan), "%s: scatterlist is empty!\n",
964 dev_err(chan2dev(chan), "%s: couldn't allocate buffer\n",
974 dev_vdbg(chan2dev(chan), "%s: d%pad, l0x%zx\n",
977 if (!is_dma_fill_aligned(chan->device, dest, 0, len)) {
978 dev_err(chan2dev(chan), "%s: buffer is not aligned\n",
983 desc = atc_create_memset_desc(chan, paddr, dest, len);
1017 * @chan: DMA channel
1025 atc_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
1029 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1030 struct at_dma_slave *atslave = chan->private;
1043 dev_vdbg(chan2dev(chan), "prep_slave_sg (%d): %s f0x%lx\n",
1049 dev_dbg(chan2dev(chan), "prep_slave_sg: sg length is zero!\n");
1078 dev_dbg(chan2dev(chan),
1119 dev_dbg(chan2dev(chan),
1156 dev_err(chan2dev(chan), "not enough descriptors available\n");
1187 atc_dma_cyclic_fill_desc(struct dma_chan *chan, struct at_desc *desc,
1192 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1237 * @chan: the DMA channel to prepare
1245 atc_prep_dma_cyclic(struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
1249 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1250 struct at_dma_slave *atslave = chan->private;
1259 dev_vdbg(chan2dev(chan), "prep_dma_cyclic: %s buf@%pad - %d (%d/%d)\n",
1265 dev_dbg(chan2dev(chan), "prep_dma_cyclic: length is zero!\n");
1271 dev_dbg(chan2dev(chan), "prep_dma_cyclic: channel in use!\n");
1295 if (atc_dma_cyclic_fill_desc(chan, desc, i, buf_addr,
1312 dev_err(chan2dev(chan), "not enough descriptors available\n");
1319 static int atc_config(struct dma_chan *chan,
1322 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1324 dev_vdbg(chan2dev(chan), "%s\n", __func__);
1326 /* Check if it is chan is configured for slave transfers */
1327 if (!chan->private)
1338 static int atc_pause(struct dma_chan *chan)
1340 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1341 struct at_dma *atdma = to_at_dma(chan->device);
1345 dev_vdbg(chan2dev(chan), "%s\n", __func__);
1357 static int atc_resume(struct dma_chan *chan)
1359 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1360 struct at_dma *atdma = to_at_dma(chan->device);
1364 dev_vdbg(chan2dev(chan), "%s\n", __func__);
1379 static int atc_terminate_all(struct dma_chan *chan)
1381 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1382 struct at_dma *atdma = to_at_dma(chan->device);
1386 dev_vdbg(chan2dev(chan), "%s\n", __func__);
1418 * @chan: DMA channel
1427 atc_tx_status(struct dma_chan *chan,
1431 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1436 ret = dma_cookie_status(chan, cookie, txstate);
1449 bytes = atc_get_bytes_left(chan, cookie);
1454 dev_vdbg(chan2dev(chan), "get residual bytes error\n");
1460 dev_vdbg(chan2dev(chan), "tx_status %d: cookie = %d residue = %d\n",
1469 * @chan: target DMA channel
1471 static void atc_issue_pending(struct dma_chan *chan)
1473 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1477 dev_vdbg(chan2dev(chan), "issue_pending\n");
1491 * @chan: allocate descriptor resources for this channel
1495 static int atc_alloc_chan_resources(struct dma_chan *chan)
1497 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1498 struct at_dma *atdma = to_at_dma(chan->device);
1504 dev_vdbg(chan2dev(chan), "alloc_chan_resources\n");
1508 dev_dbg(chan2dev(chan), "DMA channel not idle ?\n");
1513 dev_dbg(chan2dev(chan), "can't allocate channel resources (channel not freed from a previous use)\n");
1519 atslave = chan->private;
1534 desc = atc_alloc_descriptor(chan, GFP_KERNEL);
1543 dma_cookie_init(chan);
1548 dev_dbg(chan2dev(chan),
1556 * @chan: DMA channel
1558 static void atc_free_chan_resources(struct dma_chan *chan)
1560 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1561 struct at_dma *atdma = to_at_dma(chan->device);
1571 dev_vdbg(chan2dev(chan), " freeing descriptor %p\n", desc);
1582 kfree(chan->private);
1583 chan->private = NULL;
1585 dev_vdbg(chan2dev(chan), "free_chan_resources: done\n");
1589 static bool at_dma_filter(struct dma_chan *chan, void *slave)
1593 if (atslave->dma_dev == chan->device->dev) {
1594 chan->private = atslave;
1604 struct dma_chan *chan;
1653 chan = dma_request_channel(mask, at_dma_filter, atslave);
1654 if (!chan) {
1660 atchan = to_at_dma_chan(chan);
1664 return chan;
1840 struct at_dma_chan *atchan = &atdma->chan[i];
1951 struct dma_chan *chan, *_chan;
1963 list_for_each_entry_safe(chan, _chan, &atdma->dma_common.channels,
1965 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1968 atc_disable_chan_irq(atdma, chan->chan_id);
1971 list_del(&chan->device_node);
1999 struct dma_chan *chan, *_chan;
2001 list_for_each_entry_safe(chan, _chan, &atdma->dma_common.channels,
2003 struct at_dma_chan *atchan = to_at_dma_chan(chan);
2013 struct dma_chan *chan = &atchan->chan_common;
2018 dev_warn(chan2dev(chan),
2020 atc_pause(chan);
2033 struct dma_chan *chan, *_chan;
2036 list_for_each_entry_safe(chan, _chan, &atdma->dma_common.channels,
2038 struct at_dma_chan *atchan = to_at_dma_chan(chan);
2074 struct dma_chan *chan, *_chan;
2086 list_for_each_entry_safe(chan, _chan, &atdma->dma_common.channels,
2088 struct at_dma_chan *atchan = to_at_dma_chan(chan);