Lines Matching refs:pchan
140 /* Is this a dedicated pchan? */
147 struct sun4i_dma_pchan *pchan;
231 struct sun4i_dma_pchan *pchan = NULL, *pchans = priv->pchans;
249 pchan = &pchans[i];
250 pchan->vchan = vchan;
256 return pchan;
260 struct sun4i_dma_pchan *pchan)
263 int nr = pchan - priv->pchans;
267 pchan->vchan = NULL;
273 static void configure_pchan(struct sun4i_dma_pchan *pchan,
280 if (pchan->is_dedicated) {
281 writel_relaxed(d->src, pchan->base + SUN4I_DDMA_SRC_ADDR_REG);
282 writel_relaxed(d->dst, pchan->base + SUN4I_DDMA_DST_ADDR_REG);
283 writel_relaxed(d->len, pchan->base + SUN4I_DDMA_BYTE_COUNT_REG);
284 writel_relaxed(d->para, pchan->base + SUN4I_DDMA_PARA_REG);
285 writel_relaxed(d->cfg, pchan->base + SUN4I_DDMA_CFG_REG);
287 writel_relaxed(d->src, pchan->base + SUN4I_NDMA_SRC_ADDR_REG);
288 writel_relaxed(d->dst, pchan->base + SUN4I_NDMA_DST_ADDR_REG);
289 writel_relaxed(d->len, pchan->base + SUN4I_NDMA_BYTE_COUNT_REG);
290 writel_relaxed(d->cfg, pchan->base + SUN4I_NDMA_CFG_REG);
295 struct sun4i_dma_pchan *pchan,
299 int pchan_number = pchan - priv->pchans;
325 * pchan and, if successful, will configure it to fulfill a promise
335 struct sun4i_dma_pchan *pchan;
341 /* We need a pchan to do anything, so secure one if available */
342 pchan = find_and_use_pchan(priv, vchan);
343 if (!pchan)
385 vchan->pchan = pchan;
386 set_pchan_interrupt(priv, pchan, contract->use_half_int, 1);
387 configure_pchan(pchan, promise);
393 release_pchan(priv, pchan);
891 struct sun4i_dma_pchan *pchan = vchan->pchan;
900 * Clearing the configuration register will halt the pchan. Interrupts
903 if (pchan) {
904 if (pchan->is_dedicated)
905 writel(0, pchan->base + SUN4I_DDMA_CFG_REG);
907 writel(0, pchan->base + SUN4I_NDMA_CFG_REG);
908 set_pchan_interrupt(priv, pchan, 0, 0);
909 release_pchan(priv, pchan);
915 vchan->pchan = NULL;
968 struct sun4i_dma_pchan *pchan = vchan->pchan;
996 if (promise && pchan) {
998 if (pchan->is_dedicated)
999 bytes += readl(pchan->base + SUN4I_DDMA_BYTE_COUNT_REG);
1001 bytes += readl(pchan->base + SUN4I_NDMA_BYTE_COUNT_REG);
1033 struct sun4i_dma_pchan *pchans = priv->pchans, *pchan;
1048 pchan = &pchans[bit >> 1];
1049 vchan = pchan->vchan;
1055 * Disable the IRQ and free the pchan if it's an end
1074 * whatever we have here, reusing the pchan. There's
1084 configure_pchan(pchan, promise);
1088 vchan->pchan = NULL;
1092 release_pchan(priv, pchan);
1116 * If a pchan was freed, we may be able to schedule something else,