Lines Matching full:rchan
866 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_chan_pause() local
868 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_chan_pause()
869 rcar_dmac_clear_chcr_de(rchan); in rcar_dmac_chan_pause()
870 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_chan_pause()
1056 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_alloc_chan_resources() local
1059 INIT_LIST_HEAD(&rchan->desc.chunks_free); in rcar_dmac_alloc_chan_resources()
1060 INIT_LIST_HEAD(&rchan->desc.pages); in rcar_dmac_alloc_chan_resources()
1063 ret = rcar_dmac_xfer_chunk_alloc(rchan, GFP_KERNEL); in rcar_dmac_alloc_chan_resources()
1067 ret = rcar_dmac_desc_alloc(rchan, GFP_KERNEL); in rcar_dmac_alloc_chan_resources()
1076 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_free_chan_resources() local
1078 struct rcar_dmac_chan_map *map = &rchan->map; in rcar_dmac_free_chan_resources()
1084 spin_lock_irq(&rchan->lock); in rcar_dmac_free_chan_resources()
1085 rcar_dmac_chan_halt(rchan); in rcar_dmac_free_chan_resources()
1086 spin_unlock_irq(&rchan->lock); in rcar_dmac_free_chan_resources()
1092 synchronize_irq(rchan->irq); in rcar_dmac_free_chan_resources()
1094 if (rchan->mid_rid >= 0) { in rcar_dmac_free_chan_resources()
1096 clear_bit(rchan->mid_rid, dmac->modules); in rcar_dmac_free_chan_resources()
1097 rchan->mid_rid = -EINVAL; in rcar_dmac_free_chan_resources()
1100 list_splice_init(&rchan->desc.free, &list); in rcar_dmac_free_chan_resources()
1101 list_splice_init(&rchan->desc.pending, &list); in rcar_dmac_free_chan_resources()
1102 list_splice_init(&rchan->desc.active, &list); in rcar_dmac_free_chan_resources()
1103 list_splice_init(&rchan->desc.done, &list); in rcar_dmac_free_chan_resources()
1104 list_splice_init(&rchan->desc.wait, &list); in rcar_dmac_free_chan_resources()
1106 rchan->desc.running = NULL; in rcar_dmac_free_chan_resources()
1109 rcar_dmac_realloc_hwdesc(rchan, desc, 0); in rcar_dmac_free_chan_resources()
1111 list_for_each_entry_safe(page, _page, &rchan->desc.pages, node) { in rcar_dmac_free_chan_resources()
1130 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_dma_memcpy() local
1142 return rcar_dmac_chan_prep_sg(rchan, &sgl, 1, dma_dest, in rcar_dmac_prep_dma_memcpy()
1149 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_map_slave_addr() local
1150 struct rcar_dmac_chan_map *map = &rchan->map; in rcar_dmac_map_slave_addr()
1156 dev_addr = rchan->src.slave_addr; in rcar_dmac_map_slave_addr()
1157 dev_size = rchan->src.xfer_size; in rcar_dmac_map_slave_addr()
1160 dev_addr = rchan->dst.slave_addr; in rcar_dmac_map_slave_addr()
1161 dev_size = rchan->dst.xfer_size; in rcar_dmac_map_slave_addr()
1183 "chan%u: failed to map %zx@%pap", rchan->index, in rcar_dmac_map_slave_addr()
1189 rchan->index, dev_size, &dev_addr, &map->addr, in rcar_dmac_map_slave_addr()
1204 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_slave_sg() local
1207 if (rchan->mid_rid < 0 || !sg_len || !sg_dma_len(sgl)) { in rcar_dmac_prep_slave_sg()
1210 __func__, sg_len, rchan->mid_rid); in rcar_dmac_prep_slave_sg()
1217 return rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, rchan->map.addr, in rcar_dmac_prep_slave_sg()
1228 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_dma_cyclic() local
1235 if (rchan->mid_rid < 0 || buf_len < period_len) { in rcar_dmac_prep_dma_cyclic()
1238 __func__, buf_len, period_len, rchan->mid_rid); in rcar_dmac_prep_dma_cyclic()
1249 rchan->index, sg_len, RCAR_DMAC_MAX_SG_LEN); in rcar_dmac_prep_dma_cyclic()
1272 desc = rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, rchan->map.addr, in rcar_dmac_prep_dma_cyclic()
1282 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_device_config() local
1288 rchan->src.slave_addr = cfg->src_addr; in rcar_dmac_device_config()
1289 rchan->dst.slave_addr = cfg->dst_addr; in rcar_dmac_device_config()
1290 rchan->src.xfer_size = cfg->src_addr_width; in rcar_dmac_device_config()
1291 rchan->dst.xfer_size = cfg->dst_addr_width; in rcar_dmac_device_config()
1298 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_chan_terminate_all() local
1301 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_chan_terminate_all()
1302 rcar_dmac_chan_halt(rchan); in rcar_dmac_chan_terminate_all()
1303 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_chan_terminate_all()
1310 rcar_dmac_chan_reinit(rchan); in rcar_dmac_chan_terminate_all()
1426 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_tx_status() local
1436 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_tx_status()
1437 residue = rcar_dmac_chan_get_residue(rchan, cookie); in rcar_dmac_tx_status()
1438 cyclic = rchan->desc.running ? rchan->desc.running->cyclic : false; in rcar_dmac_tx_status()
1439 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_tx_status()
1452 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_issue_pending() local
1455 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_issue_pending()
1457 if (list_empty(&rchan->desc.pending)) in rcar_dmac_issue_pending()
1461 list_splice_tail_init(&rchan->desc.pending, &rchan->desc.active); in rcar_dmac_issue_pending()
1467 if (!rchan->desc.running) { in rcar_dmac_issue_pending()
1470 desc = list_first_entry(&rchan->desc.active, in rcar_dmac_issue_pending()
1472 rchan->desc.running = desc; in rcar_dmac_issue_pending()
1474 rcar_dmac_chan_start_xfer(rchan); in rcar_dmac_issue_pending()
1478 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_issue_pending()
1483 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_device_synchronize() local
1485 synchronize_irq(rchan->irq); in rcar_dmac_device_synchronize()
1705 struct rcar_dmac_chan *rchan; in rcar_dmac_of_xlate() local
1721 rchan = to_rcar_dmac_chan(chan); in rcar_dmac_of_xlate()
1722 rchan->mid_rid = dma_spec->args[0]; in rcar_dmac_of_xlate()
1762 struct rcar_dmac_chan *rchan) in rcar_dmac_chan_probe() argument
1765 struct dma_chan *chan = &rchan->chan; in rcar_dmac_chan_probe()
1770 rchan->mid_rid = -EINVAL; in rcar_dmac_chan_probe()
1772 spin_lock_init(&rchan->lock); in rcar_dmac_chan_probe()
1774 INIT_LIST_HEAD(&rchan->desc.free); in rcar_dmac_chan_probe()
1775 INIT_LIST_HEAD(&rchan->desc.pending); in rcar_dmac_chan_probe()
1776 INIT_LIST_HEAD(&rchan->desc.active); in rcar_dmac_chan_probe()
1777 INIT_LIST_HEAD(&rchan->desc.done); in rcar_dmac_chan_probe()
1778 INIT_LIST_HEAD(&rchan->desc.wait); in rcar_dmac_chan_probe()
1781 sprintf(pdev_irqname, "ch%u", rchan->index); in rcar_dmac_chan_probe()
1782 rchan->irq = platform_get_irq_byname(pdev, pdev_irqname); in rcar_dmac_chan_probe()
1783 if (rchan->irq < 0) in rcar_dmac_chan_probe()
1787 dev_name(dmac->dev), rchan->index); in rcar_dmac_chan_probe()
1800 ret = devm_request_threaded_irq(dmac->dev, rchan->irq, in rcar_dmac_chan_probe()
1803 irqname, rchan); in rcar_dmac_chan_probe()
1806 rchan->irq, ret); in rcar_dmac_chan_probe()