Lines Matching refs:rchan
948 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_alloc_chan_resources() local
951 INIT_LIST_HEAD(&rchan->desc.chunks_free); in rcar_dmac_alloc_chan_resources()
952 INIT_LIST_HEAD(&rchan->desc.pages); in rcar_dmac_alloc_chan_resources()
955 ret = rcar_dmac_xfer_chunk_alloc(rchan, GFP_KERNEL); in rcar_dmac_alloc_chan_resources()
959 ret = rcar_dmac_desc_alloc(rchan, GFP_KERNEL); in rcar_dmac_alloc_chan_resources()
968 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_free_chan_resources() local
975 spin_lock_irq(&rchan->lock); in rcar_dmac_free_chan_resources()
976 rcar_dmac_chan_halt(rchan); in rcar_dmac_free_chan_resources()
977 spin_unlock_irq(&rchan->lock); in rcar_dmac_free_chan_resources()
981 if (rchan->mid_rid >= 0) { in rcar_dmac_free_chan_resources()
983 clear_bit(rchan->mid_rid, dmac->modules); in rcar_dmac_free_chan_resources()
984 rchan->mid_rid = -EINVAL; in rcar_dmac_free_chan_resources()
987 list_splice_init(&rchan->desc.free, &list); in rcar_dmac_free_chan_resources()
988 list_splice_init(&rchan->desc.pending, &list); in rcar_dmac_free_chan_resources()
989 list_splice_init(&rchan->desc.active, &list); in rcar_dmac_free_chan_resources()
990 list_splice_init(&rchan->desc.done, &list); in rcar_dmac_free_chan_resources()
991 list_splice_init(&rchan->desc.wait, &list); in rcar_dmac_free_chan_resources()
994 rcar_dmac_realloc_hwdesc(rchan, desc, 0); in rcar_dmac_free_chan_resources()
996 list_for_each_entry_safe(page, _page, &rchan->desc.pages, node) { in rcar_dmac_free_chan_resources()
1008 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_dma_memcpy() local
1020 return rcar_dmac_chan_prep_sg(rchan, &sgl, 1, dma_dest, in rcar_dmac_prep_dma_memcpy()
1029 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_slave_sg() local
1033 if (rchan->mid_rid < 0 || !sg_len) { in rcar_dmac_prep_slave_sg()
1036 __func__, sg_len, rchan->mid_rid); in rcar_dmac_prep_slave_sg()
1041 ? rchan->src_slave_addr : rchan->dst_slave_addr; in rcar_dmac_prep_slave_sg()
1042 return rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, dev_addr, in rcar_dmac_prep_slave_sg()
1053 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_dma_cyclic() local
1061 if (rchan->mid_rid < 0 || buf_len < period_len) { in rcar_dmac_prep_dma_cyclic()
1064 __func__, buf_len, period_len, rchan->mid_rid); in rcar_dmac_prep_dma_cyclic()
1072 rchan->index, sg_len, RCAR_DMAC_MAX_SG_LEN); in rcar_dmac_prep_dma_cyclic()
1096 ? rchan->src_slave_addr : rchan->dst_slave_addr; in rcar_dmac_prep_dma_cyclic()
1097 desc = rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, dev_addr, in rcar_dmac_prep_dma_cyclic()
1107 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_device_config() local
1113 rchan->src_slave_addr = cfg->src_addr; in rcar_dmac_device_config()
1114 rchan->dst_slave_addr = cfg->dst_addr; in rcar_dmac_device_config()
1115 rchan->src_xfer_size = cfg->src_addr_width; in rcar_dmac_device_config()
1116 rchan->dst_xfer_size = cfg->dst_addr_width; in rcar_dmac_device_config()
1123 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_chan_terminate_all() local
1126 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_chan_terminate_all()
1127 rcar_dmac_chan_halt(rchan); in rcar_dmac_chan_terminate_all()
1128 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_chan_terminate_all()
1135 rcar_dmac_chan_reinit(rchan); in rcar_dmac_chan_terminate_all()
1192 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_tx_status() local
1201 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_tx_status()
1202 residue = rcar_dmac_chan_get_residue(rchan, cookie); in rcar_dmac_tx_status()
1203 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_tx_status()
1212 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_issue_pending() local
1215 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_issue_pending()
1217 if (list_empty(&rchan->desc.pending)) in rcar_dmac_issue_pending()
1221 list_splice_tail_init(&rchan->desc.pending, &rchan->desc.active); in rcar_dmac_issue_pending()
1227 if (!rchan->desc.running) { in rcar_dmac_issue_pending()
1230 desc = list_first_entry(&rchan->desc.active, in rcar_dmac_issue_pending()
1232 rchan->desc.running = desc; in rcar_dmac_issue_pending()
1234 rcar_dmac_chan_start_xfer(rchan); in rcar_dmac_issue_pending()
1238 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_issue_pending()
1454 struct rcar_dmac_chan *rchan; in rcar_dmac_of_xlate() local
1469 rchan = to_rcar_dmac_chan(chan); in rcar_dmac_of_xlate()
1470 rchan->mid_rid = dma_spec->args[0]; in rcar_dmac_of_xlate()
1520 struct rcar_dmac_chan *rchan, in rcar_dmac_chan_probe() argument
1524 struct dma_chan *chan = &rchan->chan; in rcar_dmac_chan_probe()
1530 rchan->index = index; in rcar_dmac_chan_probe()
1531 rchan->iomem = dmac->iomem + RCAR_DMAC_CHAN_OFFSET(index); in rcar_dmac_chan_probe()
1532 rchan->mid_rid = -EINVAL; in rcar_dmac_chan_probe()
1534 spin_lock_init(&rchan->lock); in rcar_dmac_chan_probe()
1536 INIT_LIST_HEAD(&rchan->desc.free); in rcar_dmac_chan_probe()
1537 INIT_LIST_HEAD(&rchan->desc.pending); in rcar_dmac_chan_probe()
1538 INIT_LIST_HEAD(&rchan->desc.active); in rcar_dmac_chan_probe()
1539 INIT_LIST_HEAD(&rchan->desc.done); in rcar_dmac_chan_probe()
1540 INIT_LIST_HEAD(&rchan->desc.wait); in rcar_dmac_chan_probe()
1557 irqname, rchan); in rcar_dmac_chan_probe()