Lines Matching refs:pchan

147 	struct sun4i_dma_pchan		*pchan;  member
231 struct sun4i_dma_pchan *pchan = NULL, *pchans = priv->pchans; in find_and_use_pchan() local
249 pchan = &pchans[i]; in find_and_use_pchan()
250 pchan->vchan = vchan; in find_and_use_pchan()
256 return pchan; in find_and_use_pchan()
260 struct sun4i_dma_pchan *pchan) in release_pchan() argument
263 int nr = pchan - priv->pchans; in release_pchan()
267 pchan->vchan = NULL; in release_pchan()
273 static void configure_pchan(struct sun4i_dma_pchan *pchan, in configure_pchan() argument
280 if (pchan->is_dedicated) { in configure_pchan()
281 writel_relaxed(d->src, pchan->base + SUN4I_DDMA_SRC_ADDR_REG); in configure_pchan()
282 writel_relaxed(d->dst, pchan->base + SUN4I_DDMA_DST_ADDR_REG); in configure_pchan()
283 writel_relaxed(d->len, pchan->base + SUN4I_DDMA_BYTE_COUNT_REG); in configure_pchan()
284 writel_relaxed(d->para, pchan->base + SUN4I_DDMA_PARA_REG); in configure_pchan()
285 writel_relaxed(d->cfg, pchan->base + SUN4I_DDMA_CFG_REG); in configure_pchan()
287 writel_relaxed(d->src, pchan->base + SUN4I_NDMA_SRC_ADDR_REG); in configure_pchan()
288 writel_relaxed(d->dst, pchan->base + SUN4I_NDMA_DST_ADDR_REG); in configure_pchan()
289 writel_relaxed(d->len, pchan->base + SUN4I_NDMA_BYTE_COUNT_REG); in configure_pchan()
290 writel_relaxed(d->cfg, pchan->base + SUN4I_NDMA_CFG_REG); in configure_pchan()
295 struct sun4i_dma_pchan *pchan, in set_pchan_interrupt() argument
299 int pchan_number = pchan - priv->pchans; in set_pchan_interrupt()
335 struct sun4i_dma_pchan *pchan; in __execute_vchan_pending() local
342 pchan = find_and_use_pchan(priv, vchan); in __execute_vchan_pending()
343 if (!pchan) in __execute_vchan_pending()
385 vchan->pchan = pchan; in __execute_vchan_pending()
386 set_pchan_interrupt(priv, pchan, contract->use_half_int, 1); in __execute_vchan_pending()
387 configure_pchan(pchan, promise); in __execute_vchan_pending()
393 release_pchan(priv, pchan); in __execute_vchan_pending()
891 struct sun4i_dma_pchan *pchan = vchan->pchan; in sun4i_dma_terminate_all() local
903 if (pchan) { in sun4i_dma_terminate_all()
904 if (pchan->is_dedicated) in sun4i_dma_terminate_all()
905 writel(0, pchan->base + SUN4I_DDMA_CFG_REG); in sun4i_dma_terminate_all()
907 writel(0, pchan->base + SUN4I_NDMA_CFG_REG); in sun4i_dma_terminate_all()
908 set_pchan_interrupt(priv, pchan, 0, 0); in sun4i_dma_terminate_all()
909 release_pchan(priv, pchan); in sun4i_dma_terminate_all()
915 vchan->pchan = NULL; in sun4i_dma_terminate_all()
968 struct sun4i_dma_pchan *pchan = vchan->pchan; in sun4i_dma_tx_status() local
996 if (promise && pchan) { in sun4i_dma_tx_status()
998 if (pchan->is_dedicated) in sun4i_dma_tx_status()
999 bytes += readl(pchan->base + SUN4I_DDMA_BYTE_COUNT_REG); in sun4i_dma_tx_status()
1001 bytes += readl(pchan->base + SUN4I_NDMA_BYTE_COUNT_REG); in sun4i_dma_tx_status()
1033 struct sun4i_dma_pchan *pchans = priv->pchans, *pchan; in sun4i_dma_interrupt() local
1048 pchan = &pchans[bit >> 1]; in sun4i_dma_interrupt()
1049 vchan = pchan->vchan; in sun4i_dma_interrupt()
1084 configure_pchan(pchan, promise); in sun4i_dma_interrupt()
1088 vchan->pchan = NULL; in sun4i_dma_interrupt()
1092 release_pchan(priv, pchan); in sun4i_dma_interrupt()