Lines Matching refs:mc

97 milbeaut_hdmac_next_desc(struct milbeaut_hdmac_chan *mc)  in milbeaut_hdmac_next_desc()  argument
101 vd = vchan_next_desc(&mc->vc); in milbeaut_hdmac_next_desc()
103 mc->md = NULL; in milbeaut_hdmac_next_desc()
109 mc->md = to_milbeaut_hdmac_desc(vd); in milbeaut_hdmac_next_desc()
111 return mc->md; in milbeaut_hdmac_next_desc()
115 static void milbeaut_chan_start(struct milbeaut_hdmac_chan *mc, in milbeaut_chan_start() argument
128 width = mc->cfg.dst_addr_width; in milbeaut_chan_start()
129 burst = mc->cfg.dst_maxburst; in milbeaut_chan_start()
131 dest_addr = mc->cfg.dst_addr; in milbeaut_chan_start()
134 width = mc->cfg.src_addr_width; in milbeaut_chan_start()
135 burst = mc->cfg.src_maxburst; in milbeaut_chan_start()
136 src_addr = mc->cfg.src_addr; in milbeaut_chan_start()
142 writel_relaxed(MLB_HDMAC_DE, mc->mdev->reg_base + MLB_HDMAC_DMACR); in milbeaut_chan_start()
143 writel_relaxed(src_addr, mc->reg_ch_base + MLB_HDMAC_DMACSA); in milbeaut_chan_start()
144 writel_relaxed(dest_addr, mc->reg_ch_base + MLB_HDMAC_DMACDA); in milbeaut_chan_start()
145 writel_relaxed(cb, mc->reg_ch_base + MLB_HDMAC_DMACB); in milbeaut_chan_start()
147 ca = FIELD_PREP(MLB_HDMAC_IS, mc->slave_id); in milbeaut_chan_start()
156 writel_relaxed(ca, mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_chan_start()
158 writel_relaxed(ca, mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_chan_start()
162 static void milbeaut_hdmac_start(struct milbeaut_hdmac_chan *mc) in milbeaut_hdmac_start() argument
166 md = milbeaut_hdmac_next_desc(mc); in milbeaut_hdmac_start()
168 milbeaut_chan_start(mc, md); in milbeaut_hdmac_start()
173 struct milbeaut_hdmac_chan *mc = dev_id; in milbeaut_hdmac_interrupt() local
177 spin_lock(&mc->vc.lock); in milbeaut_hdmac_interrupt()
180 val = readl_relaxed(mc->reg_ch_base + MLB_HDMAC_DMACB); in milbeaut_hdmac_interrupt()
182 writel_relaxed(val, mc->reg_ch_base + MLB_HDMAC_DMACB); in milbeaut_hdmac_interrupt()
185 writel_relaxed(val, mc->reg_ch_base + MLB_HDMAC_DMACB); in milbeaut_hdmac_interrupt()
187 md = mc->md; in milbeaut_hdmac_interrupt()
195 md = milbeaut_hdmac_next_desc(mc); in milbeaut_hdmac_interrupt()
200 milbeaut_chan_start(mc, md); in milbeaut_hdmac_interrupt()
203 spin_unlock(&mc->vc.lock); in milbeaut_hdmac_interrupt()
216 struct milbeaut_hdmac_chan *mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_chan_config() local
218 spin_lock(&mc->vc.lock); in milbeaut_hdmac_chan_config()
219 mc->cfg = *cfg; in milbeaut_hdmac_chan_config()
220 spin_unlock(&mc->vc.lock); in milbeaut_hdmac_chan_config()
228 struct milbeaut_hdmac_chan *mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_chan_pause() local
231 spin_lock(&mc->vc.lock); in milbeaut_hdmac_chan_pause()
232 val = readl_relaxed(mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_hdmac_chan_pause()
234 writel_relaxed(val, mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_hdmac_chan_pause()
235 spin_unlock(&mc->vc.lock); in milbeaut_hdmac_chan_pause()
243 struct milbeaut_hdmac_chan *mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_chan_resume() local
246 spin_lock(&mc->vc.lock); in milbeaut_hdmac_chan_resume()
247 val = readl_relaxed(mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_hdmac_chan_resume()
249 writel_relaxed(val, mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_hdmac_chan_resume()
250 spin_unlock(&mc->vc.lock); in milbeaut_hdmac_chan_resume()
290 struct milbeaut_hdmac_chan *mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_terminate_all() local
298 val = readl_relaxed(mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_hdmac_terminate_all()
300 writel_relaxed(val, mc->reg_ch_base + MLB_HDMAC_DMACA); in milbeaut_hdmac_terminate_all()
302 if (mc->md) { in milbeaut_hdmac_terminate_all()
303 vchan_terminate_vdesc(&mc->md->vd); in milbeaut_hdmac_terminate_all()
304 mc->md = NULL; in milbeaut_hdmac_terminate_all()
327 struct milbeaut_hdmac_chan *mc; in milbeaut_hdmac_tx_status() local
342 mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_tx_status()
345 if (mc->md && mc->md->vd.tx.cookie == cookie) { in milbeaut_hdmac_tx_status()
349 md = mc->md; in milbeaut_hdmac_tx_status()
353 done = readl_relaxed(mc->reg_ch_base in milbeaut_hdmac_tx_status()
356 done = readl_relaxed(mc->reg_ch_base in milbeaut_hdmac_tx_status()
383 struct milbeaut_hdmac_chan *mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_issue_pending() local
388 if (vchan_issue_pending(vc) && !mc->md) in milbeaut_hdmac_issue_pending()
389 milbeaut_hdmac_start(mc); in milbeaut_hdmac_issue_pending()
406 struct milbeaut_hdmac_chan *mc; in milbeaut_hdmac_xlate() local
418 mc = to_milbeaut_hdmac_chan(vc); in milbeaut_hdmac_xlate()
419 mc->slave_id = dma_spec->args[0]; in milbeaut_hdmac_xlate()
429 struct milbeaut_hdmac_chan *mc = &mdev->channels[chan_id]; in milbeaut_hdmac_chan_init() local
443 IRQF_SHARED, irq_name, mc); in milbeaut_hdmac_chan_init()
447 mc->mdev = mdev; in milbeaut_hdmac_chan_init()
448 mc->reg_ch_base = mdev->reg_base + MLB_HDMAC_CH_STRIDE * (chan_id + 1); in milbeaut_hdmac_chan_init()
449 mc->vc.desc_free = milbeaut_hdmac_desc_free; in milbeaut_hdmac_chan_init()
450 vchan_init(&mc->vc, &mdev->ddev); in milbeaut_hdmac_chan_init()