Lines Matching refs:pchan
137 struct sun4i_dma_pchan *pchan; member
220 struct sun4i_dma_pchan *pchan = NULL, *pchans = priv->pchans; in find_and_use_pchan() local
238 pchan = &pchans[i]; in find_and_use_pchan()
239 pchan->vchan = vchan; in find_and_use_pchan()
245 return pchan; in find_and_use_pchan()
249 struct sun4i_dma_pchan *pchan) in release_pchan() argument
252 int nr = pchan - priv->pchans; in release_pchan()
256 pchan->vchan = NULL; in release_pchan()
262 static void configure_pchan(struct sun4i_dma_pchan *pchan, in configure_pchan() argument
269 if (pchan->is_dedicated) { in configure_pchan()
270 writel_relaxed(d->src, pchan->base + SUN4I_DDMA_SRC_ADDR_REG); in configure_pchan()
271 writel_relaxed(d->dst, pchan->base + SUN4I_DDMA_DST_ADDR_REG); in configure_pchan()
272 writel_relaxed(d->len, pchan->base + SUN4I_DDMA_BYTE_COUNT_REG); in configure_pchan()
273 writel_relaxed(d->para, pchan->base + SUN4I_DDMA_PARA_REG); in configure_pchan()
274 writel_relaxed(d->cfg, pchan->base + SUN4I_DDMA_CFG_REG); in configure_pchan()
276 writel_relaxed(d->src, pchan->base + SUN4I_NDMA_SRC_ADDR_REG); in configure_pchan()
277 writel_relaxed(d->dst, pchan->base + SUN4I_NDMA_DST_ADDR_REG); in configure_pchan()
278 writel_relaxed(d->len, pchan->base + SUN4I_NDMA_BYTE_COUNT_REG); in configure_pchan()
279 writel_relaxed(d->cfg, pchan->base + SUN4I_NDMA_CFG_REG); in configure_pchan()
284 struct sun4i_dma_pchan *pchan, in set_pchan_interrupt() argument
288 int pchan_number = pchan - priv->pchans; in set_pchan_interrupt()
324 struct sun4i_dma_pchan *pchan; in __execute_vchan_pending() local
331 pchan = find_and_use_pchan(priv, vchan); in __execute_vchan_pending()
332 if (!pchan) in __execute_vchan_pending()
374 vchan->pchan = pchan; in __execute_vchan_pending()
375 set_pchan_interrupt(priv, pchan, contract->is_cyclic, 1); in __execute_vchan_pending()
376 configure_pchan(pchan, promise); in __execute_vchan_pending()
382 release_pchan(priv, pchan); in __execute_vchan_pending()
871 struct sun4i_dma_pchan *pchan = vchan->pchan; in sun4i_dma_terminate_all() local
883 if (pchan) { in sun4i_dma_terminate_all()
884 if (pchan->is_dedicated) in sun4i_dma_terminate_all()
885 writel(0, pchan->base + SUN4I_DDMA_CFG_REG); in sun4i_dma_terminate_all()
887 writel(0, pchan->base + SUN4I_NDMA_CFG_REG); in sun4i_dma_terminate_all()
888 set_pchan_interrupt(priv, pchan, 0, 0); in sun4i_dma_terminate_all()
889 release_pchan(priv, pchan); in sun4i_dma_terminate_all()
895 vchan->pchan = NULL; in sun4i_dma_terminate_all()
948 struct sun4i_dma_pchan *pchan = vchan->pchan; in sun4i_dma_tx_status() local
976 if (promise && pchan) { in sun4i_dma_tx_status()
978 if (pchan->is_dedicated) in sun4i_dma_tx_status()
979 bytes += readl(pchan->base + SUN4I_DDMA_BYTE_COUNT_REG); in sun4i_dma_tx_status()
981 bytes += readl(pchan->base + SUN4I_NDMA_BYTE_COUNT_REG); in sun4i_dma_tx_status()
1013 struct sun4i_dma_pchan *pchans = priv->pchans, *pchan; in sun4i_dma_interrupt() local
1028 pchan = &pchans[bit >> 1]; in sun4i_dma_interrupt()
1029 vchan = pchan->vchan; in sun4i_dma_interrupt()
1065 configure_pchan(pchan, promise); in sun4i_dma_interrupt()
1069 vchan->pchan = NULL; in sun4i_dma_interrupt()
1073 release_pchan(priv, pchan); in sun4i_dma_interrupt()