Lines Matching refs:pchan

130 	/* Is this a dedicated pchan? */
137 struct sun4i_dma_pchan *pchan;
220 struct sun4i_dma_pchan *pchan = NULL, *pchans = priv->pchans;
238 pchan = &pchans[i];
239 pchan->vchan = vchan;
245 return pchan;
249 struct sun4i_dma_pchan *pchan)
252 int nr = pchan - priv->pchans;
256 pchan->vchan = NULL;
262 static void configure_pchan(struct sun4i_dma_pchan *pchan,
269 if (pchan->is_dedicated) {
270 writel_relaxed(d->src, pchan->base + SUN4I_DDMA_SRC_ADDR_REG);
271 writel_relaxed(d->dst, pchan->base + SUN4I_DDMA_DST_ADDR_REG);
272 writel_relaxed(d->len, pchan->base + SUN4I_DDMA_BYTE_COUNT_REG);
273 writel_relaxed(d->para, pchan->base + SUN4I_DDMA_PARA_REG);
274 writel_relaxed(d->cfg, pchan->base + SUN4I_DDMA_CFG_REG);
276 writel_relaxed(d->src, pchan->base + SUN4I_NDMA_SRC_ADDR_REG);
277 writel_relaxed(d->dst, pchan->base + SUN4I_NDMA_DST_ADDR_REG);
278 writel_relaxed(d->len, pchan->base + SUN4I_NDMA_BYTE_COUNT_REG);
279 writel_relaxed(d->cfg, pchan->base + SUN4I_NDMA_CFG_REG);
284 struct sun4i_dma_pchan *pchan,
288 int pchan_number = pchan - priv->pchans;
314 * pchan and, if successful, will configure it to fulfill a promise
324 struct sun4i_dma_pchan *pchan;
330 /* We need a pchan to do anything, so secure one if available */
331 pchan = find_and_use_pchan(priv, vchan);
332 if (!pchan)
374 vchan->pchan = pchan;
375 set_pchan_interrupt(priv, pchan, contract->is_cyclic, 1);
376 configure_pchan(pchan, promise);
382 release_pchan(priv, pchan);
871 struct sun4i_dma_pchan *pchan = vchan->pchan;
880 * Clearing the configuration register will halt the pchan. Interrupts
883 if (pchan) {
884 if (pchan->is_dedicated)
885 writel(0, pchan->base + SUN4I_DDMA_CFG_REG);
887 writel(0, pchan->base + SUN4I_NDMA_CFG_REG);
888 set_pchan_interrupt(priv, pchan, 0, 0);
889 release_pchan(priv, pchan);
895 vchan->pchan = NULL;
948 struct sun4i_dma_pchan *pchan = vchan->pchan;
976 if (promise && pchan) {
978 if (pchan->is_dedicated)
979 bytes += readl(pchan->base + SUN4I_DDMA_BYTE_COUNT_REG);
981 bytes += readl(pchan->base + SUN4I_NDMA_BYTE_COUNT_REG);
1013 struct sun4i_dma_pchan *pchans = priv->pchans, *pchan;
1028 pchan = &pchans[bit >> 1];
1029 vchan = pchan->vchan;
1035 * Disable the IRQ and free the pchan if it's an end
1055 * whatever we have here, reusing the pchan. There's
1065 configure_pchan(pchan, promise);
1069 vchan->pchan = NULL;
1073 release_pchan(priv, pchan);
1097 * If a pchan was freed, we may be able to schedule something else,