Lines Matching refs:rchan
839 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
841 spin_lock_irqsave(&rchan->lock, flags);
842 rcar_dmac_clear_chcr_de(rchan);
843 spin_unlock_irqrestore(&rchan->lock, flags);
1029 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1032 INIT_LIST_HEAD(&rchan->desc.chunks_free);
1033 INIT_LIST_HEAD(&rchan->desc.pages);
1036 ret = rcar_dmac_xfer_chunk_alloc(rchan, GFP_KERNEL);
1040 ret = rcar_dmac_desc_alloc(rchan, GFP_KERNEL);
1049 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1051 struct rcar_dmac_chan_map *map = &rchan->map;
1057 spin_lock_irq(&rchan->lock);
1058 rcar_dmac_chan_halt(rchan);
1059 spin_unlock_irq(&rchan->lock);
1065 synchronize_irq(rchan->irq);
1067 if (rchan->mid_rid >= 0) {
1069 clear_bit(rchan->mid_rid, dmac->modules);
1070 rchan->mid_rid = -EINVAL;
1073 list_splice_init(&rchan->desc.free, &list);
1074 list_splice_init(&rchan->desc.pending, &list);
1075 list_splice_init(&rchan->desc.active, &list);
1076 list_splice_init(&rchan->desc.done, &list);
1077 list_splice_init(&rchan->desc.wait, &list);
1079 rchan->desc.running = NULL;
1082 rcar_dmac_realloc_hwdesc(rchan, desc, 0);
1084 list_for_each_entry_safe(page, _page, &rchan->desc.pages, node) {
1103 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1115 return rcar_dmac_chan_prep_sg(rchan, &sgl, 1, dma_dest,
1122 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1123 struct rcar_dmac_chan_map *map = &rchan->map;
1129 dev_addr = rchan->src.slave_addr;
1130 dev_size = rchan->src.xfer_size;
1133 dev_addr = rchan->dst.slave_addr;
1134 dev_size = rchan->dst.xfer_size;
1156 "chan%u: failed to map %zx@%pap", rchan->index,
1162 rchan->index, dev_size, &dev_addr, &map->addr,
1177 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1180 if (rchan->mid_rid < 0 || !sg_len || !sg_dma_len(sgl)) {
1183 __func__, sg_len, rchan->mid_rid);
1190 return rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, rchan->map.addr,
1201 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1208 if (rchan->mid_rid < 0 || buf_len < period_len) {
1211 __func__, buf_len, period_len, rchan->mid_rid);
1222 rchan->index, sg_len, RCAR_DMAC_MAX_SG_LEN);
1245 desc = rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, rchan->map.addr,
1255 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1261 rchan->src.slave_addr = cfg->src_addr;
1262 rchan->dst.slave_addr = cfg->dst_addr;
1263 rchan->src.xfer_size = cfg->src_addr_width;
1264 rchan->dst.xfer_size = cfg->dst_addr_width;
1271 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1274 spin_lock_irqsave(&rchan->lock, flags);
1275 rcar_dmac_chan_halt(rchan);
1276 spin_unlock_irqrestore(&rchan->lock, flags);
1283 rcar_dmac_chan_reinit(rchan);
1399 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1409 spin_lock_irqsave(&rchan->lock, flags);
1410 residue = rcar_dmac_chan_get_residue(rchan, cookie);
1411 cyclic = rchan->desc.running ? rchan->desc.running->cyclic : false;
1412 spin_unlock_irqrestore(&rchan->lock, flags);
1425 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1428 spin_lock_irqsave(&rchan->lock, flags);
1430 if (list_empty(&rchan->desc.pending))
1434 list_splice_tail_init(&rchan->desc.pending, &rchan->desc.active);
1440 if (!rchan->desc.running) {
1443 desc = list_first_entry(&rchan->desc.active,
1445 rchan->desc.running = desc;
1447 rcar_dmac_chan_start_xfer(rchan);
1451 spin_unlock_irqrestore(&rchan->lock, flags);
1456 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);
1458 synchronize_irq(rchan->irq);
1678 struct rcar_dmac_chan *rchan;
1694 rchan = to_rcar_dmac_chan(chan);
1695 rchan->mid_rid = dma_spec->args[0];
1735 struct rcar_dmac_chan *rchan,
1740 struct dma_chan *chan = &rchan->chan;
1745 rchan->index = index;
1746 rchan->iomem = dmac->iomem + data->chan_offset_base +
1748 rchan->mid_rid = -EINVAL;
1750 spin_lock_init(&rchan->lock);
1752 INIT_LIST_HEAD(&rchan->desc.free);
1753 INIT_LIST_HEAD(&rchan->desc.pending);
1754 INIT_LIST_HEAD(&rchan->desc.active);
1755 INIT_LIST_HEAD(&rchan->desc.done);
1756 INIT_LIST_HEAD(&rchan->desc.wait);
1760 rchan->irq = platform_get_irq_byname(pdev, pdev_irqname);
1761 if (rchan->irq < 0)
1778 ret = devm_request_threaded_irq(dmac->dev, rchan->irq,
1781 irqname, rchan);
1784 rchan->irq, ret);