Lines Matching refs:mc

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