Lines Matching refs:mc
94 milbeaut_xdmac_next_desc(struct milbeaut_xdmac_chan *mc) in milbeaut_xdmac_next_desc() argument
98 vd = vchan_next_desc(&mc->vc); in milbeaut_xdmac_next_desc()
100 mc->md = NULL; in milbeaut_xdmac_next_desc()
106 mc->md = to_milbeaut_xdmac_desc(vd); in milbeaut_xdmac_next_desc()
108 return mc->md; in milbeaut_xdmac_next_desc()
112 static void milbeaut_chan_start(struct milbeaut_xdmac_chan *mc, in milbeaut_chan_start() argument
119 writel_relaxed(val, mc->reg_ch_base + M10V_XDTBC); in milbeaut_chan_start()
122 writel_relaxed(val, mc->reg_ch_base + M10V_XDSSA); in milbeaut_chan_start()
125 writel_relaxed(val, mc->reg_ch_base + M10V_XDDSA); in milbeaut_chan_start()
127 val = readl_relaxed(mc->reg_ch_base + M10V_XDSAC); in milbeaut_chan_start()
131 writel_relaxed(val, mc->reg_ch_base + M10V_XDSAC); in milbeaut_chan_start()
133 val = readl_relaxed(mc->reg_ch_base + M10V_XDDAC); in milbeaut_chan_start()
137 writel_relaxed(val, mc->reg_ch_base + M10V_XDDAC); in milbeaut_chan_start()
140 val = readl_relaxed(mc->reg_ch_base + M10V_XDDES); in milbeaut_chan_start()
146 writel_relaxed(val, mc->reg_ch_base + M10V_XDDES); in milbeaut_chan_start()
150 static void milbeaut_xdmac_start(struct milbeaut_xdmac_chan *mc) in milbeaut_xdmac_start() argument
154 md = milbeaut_xdmac_next_desc(mc); in milbeaut_xdmac_start()
156 milbeaut_chan_start(mc, md); in milbeaut_xdmac_start()
161 struct milbeaut_xdmac_chan *mc = dev_id; in milbeaut_xdmac_interrupt() local
165 spin_lock(&mc->vc.lock); in milbeaut_xdmac_interrupt()
169 writel_relaxed(val, mc->reg_ch_base + M10V_XDDSD); in milbeaut_xdmac_interrupt()
171 md = mc->md; in milbeaut_xdmac_interrupt()
177 milbeaut_xdmac_start(mc); in milbeaut_xdmac_interrupt()
179 spin_unlock(&mc->vc.lock); in milbeaut_xdmac_interrupt()
209 struct milbeaut_xdmac_chan *mc = to_milbeaut_xdmac_chan(vc); in milbeaut_xdmac_terminate_all() local
218 val = readl(mc->reg_ch_base + M10V_XDDES); in milbeaut_xdmac_terminate_all()
221 writel(val, mc->reg_ch_base + M10V_XDDES); in milbeaut_xdmac_terminate_all()
223 if (mc->md) { in milbeaut_xdmac_terminate_all()
224 vchan_terminate_vdesc(&mc->md->vd); in milbeaut_xdmac_terminate_all()
225 mc->md = NULL; in milbeaut_xdmac_terminate_all()
245 struct milbeaut_xdmac_chan *mc = to_milbeaut_xdmac_chan(vc); in milbeaut_xdmac_issue_pending() local
250 if (vchan_issue_pending(vc) && !mc->md) in milbeaut_xdmac_issue_pending()
251 milbeaut_xdmac_start(mc); in milbeaut_xdmac_issue_pending()
266 struct milbeaut_xdmac_chan *mc = &mdev->channels[chan_id]; in milbeaut_xdmac_chan_init() local
280 IRQF_SHARED, irq_name, mc); in milbeaut_xdmac_chan_init()
284 mc->reg_ch_base = mdev->reg_base + chan_id * 0x30; in milbeaut_xdmac_chan_init()
286 mc->vc.desc_free = milbeaut_xdmac_desc_free; in milbeaut_xdmac_chan_init()
287 vchan_init(&mc->vc, &mdev->ddev); in milbeaut_xdmac_chan_init()