Lines Matching refs:rchan

943 	struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan);  in rcar_dmac_alloc_chan_resources()  local
946 INIT_LIST_HEAD(&rchan->desc.chunks_free); in rcar_dmac_alloc_chan_resources()
947 INIT_LIST_HEAD(&rchan->desc.pages); in rcar_dmac_alloc_chan_resources()
950 ret = rcar_dmac_xfer_chunk_alloc(rchan, GFP_KERNEL); in rcar_dmac_alloc_chan_resources()
954 ret = rcar_dmac_desc_alloc(rchan, GFP_KERNEL); in rcar_dmac_alloc_chan_resources()
963 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_free_chan_resources() local
970 spin_lock_irq(&rchan->lock); in rcar_dmac_free_chan_resources()
971 rcar_dmac_chan_halt(rchan); in rcar_dmac_free_chan_resources()
972 spin_unlock_irq(&rchan->lock); in rcar_dmac_free_chan_resources()
976 if (rchan->mid_rid >= 0) { in rcar_dmac_free_chan_resources()
978 clear_bit(rchan->mid_rid, dmac->modules); in rcar_dmac_free_chan_resources()
979 rchan->mid_rid = -EINVAL; in rcar_dmac_free_chan_resources()
982 list_splice_init(&rchan->desc.free, &list); in rcar_dmac_free_chan_resources()
983 list_splice_init(&rchan->desc.pending, &list); in rcar_dmac_free_chan_resources()
984 list_splice_init(&rchan->desc.active, &list); in rcar_dmac_free_chan_resources()
985 list_splice_init(&rchan->desc.done, &list); in rcar_dmac_free_chan_resources()
986 list_splice_init(&rchan->desc.wait, &list); in rcar_dmac_free_chan_resources()
989 rcar_dmac_realloc_hwdesc(rchan, desc, 0); in rcar_dmac_free_chan_resources()
991 list_for_each_entry_safe(page, _page, &rchan->desc.pages, node) { in rcar_dmac_free_chan_resources()
1003 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_dma_memcpy() local
1015 return rcar_dmac_chan_prep_sg(rchan, &sgl, 1, dma_dest, in rcar_dmac_prep_dma_memcpy()
1024 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_slave_sg() local
1028 if (rchan->mid_rid < 0 || !sg_len) { in rcar_dmac_prep_slave_sg()
1031 __func__, sg_len, rchan->mid_rid); in rcar_dmac_prep_slave_sg()
1036 ? rchan->src_slave_addr : rchan->dst_slave_addr; in rcar_dmac_prep_slave_sg()
1037 return rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, dev_addr, in rcar_dmac_prep_slave_sg()
1048 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_prep_dma_cyclic() local
1056 if (rchan->mid_rid < 0 || buf_len < period_len) { in rcar_dmac_prep_dma_cyclic()
1059 __func__, buf_len, period_len, rchan->mid_rid); in rcar_dmac_prep_dma_cyclic()
1067 rchan->index, sg_len, RCAR_DMAC_MAX_SG_LEN); in rcar_dmac_prep_dma_cyclic()
1091 ? rchan->src_slave_addr : rchan->dst_slave_addr; in rcar_dmac_prep_dma_cyclic()
1092 desc = rcar_dmac_chan_prep_sg(rchan, sgl, sg_len, dev_addr, in rcar_dmac_prep_dma_cyclic()
1102 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_device_config() local
1108 rchan->src_slave_addr = cfg->src_addr; in rcar_dmac_device_config()
1109 rchan->dst_slave_addr = cfg->dst_addr; in rcar_dmac_device_config()
1110 rchan->src_xfer_size = cfg->src_addr_width; in rcar_dmac_device_config()
1111 rchan->dst_xfer_size = cfg->dst_addr_width; in rcar_dmac_device_config()
1118 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_chan_terminate_all() local
1121 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_chan_terminate_all()
1122 rcar_dmac_chan_halt(rchan); in rcar_dmac_chan_terminate_all()
1123 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_chan_terminate_all()
1130 rcar_dmac_chan_reinit(rchan); in rcar_dmac_chan_terminate_all()
1187 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_tx_status() local
1196 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_tx_status()
1197 residue = rcar_dmac_chan_get_residue(rchan, cookie); in rcar_dmac_tx_status()
1198 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_tx_status()
1207 struct rcar_dmac_chan *rchan = to_rcar_dmac_chan(chan); in rcar_dmac_issue_pending() local
1210 spin_lock_irqsave(&rchan->lock, flags); in rcar_dmac_issue_pending()
1212 if (list_empty(&rchan->desc.pending)) in rcar_dmac_issue_pending()
1216 list_splice_tail_init(&rchan->desc.pending, &rchan->desc.active); in rcar_dmac_issue_pending()
1222 if (!rchan->desc.running) { in rcar_dmac_issue_pending()
1225 desc = list_first_entry(&rchan->desc.active, in rcar_dmac_issue_pending()
1227 rchan->desc.running = desc; in rcar_dmac_issue_pending()
1229 rcar_dmac_chan_start_xfer(rchan); in rcar_dmac_issue_pending()
1233 spin_unlock_irqrestore(&rchan->lock, flags); in rcar_dmac_issue_pending()
1449 struct rcar_dmac_chan *rchan; in rcar_dmac_of_xlate() local
1464 rchan = to_rcar_dmac_chan(chan); in rcar_dmac_of_xlate()
1465 rchan->mid_rid = dma_spec->args[0]; in rcar_dmac_of_xlate()
1515 struct rcar_dmac_chan *rchan, in rcar_dmac_chan_probe() argument
1519 struct dma_chan *chan = &rchan->chan; in rcar_dmac_chan_probe()
1525 rchan->index = index; in rcar_dmac_chan_probe()
1526 rchan->iomem = dmac->iomem + RCAR_DMAC_CHAN_OFFSET(index); in rcar_dmac_chan_probe()
1527 rchan->mid_rid = -EINVAL; in rcar_dmac_chan_probe()
1529 spin_lock_init(&rchan->lock); in rcar_dmac_chan_probe()
1531 INIT_LIST_HEAD(&rchan->desc.free); in rcar_dmac_chan_probe()
1532 INIT_LIST_HEAD(&rchan->desc.pending); in rcar_dmac_chan_probe()
1533 INIT_LIST_HEAD(&rchan->desc.active); in rcar_dmac_chan_probe()
1534 INIT_LIST_HEAD(&rchan->desc.done); in rcar_dmac_chan_probe()
1535 INIT_LIST_HEAD(&rchan->desc.wait); in rcar_dmac_chan_probe()
1552 irqname, rchan); in rcar_dmac_chan_probe()