Lines Matching refs:pchan

237 					    struct sun6i_pchan *pchan)  in sun6i_dma_dump_chan_regs()  argument
239 phys_addr_t reg = virt_to_phys(pchan->base); in sun6i_dma_dump_chan_regs()
250 pchan->idx, &reg, in sun6i_dma_dump_chan_regs()
252 readl(pchan->base + DMA_CHAN_ENABLE), in sun6i_dma_dump_chan_regs()
254 readl(pchan->base + DMA_CHAN_PAUSE), in sun6i_dma_dump_chan_regs()
256 readl(pchan->base + DMA_CHAN_LLI_ADDR), in sun6i_dma_dump_chan_regs()
258 readl(pchan->base + DMA_CHAN_CUR_CFG), in sun6i_dma_dump_chan_regs()
260 readl(pchan->base + DMA_CHAN_CUR_SRC), in sun6i_dma_dump_chan_regs()
262 readl(pchan->base + DMA_CHAN_CUR_DST), in sun6i_dma_dump_chan_regs()
264 readl(pchan->base + DMA_CHAN_CUR_CNT), in sun6i_dma_dump_chan_regs()
266 readl(pchan->base + DMA_CHAN_CUR_PARA)); in sun6i_dma_dump_chan_regs()
312 static size_t sun6i_get_chan_size(struct sun6i_pchan *pchan) in sun6i_get_chan_size() argument
314 struct sun6i_desc *txd = pchan->desc; in sun6i_get_chan_size()
319 pos = readl(pchan->base + DMA_CHAN_LLI_ADDR); in sun6i_get_chan_size()
320 bytes = readl(pchan->base + DMA_CHAN_CUR_CNT); in sun6i_get_chan_size()
402 struct sun6i_pchan *pchan = vchan->phy; in sun6i_dma_start_desc() local
405 if (!pchan) in sun6i_dma_start_desc()
409 pchan->desc = NULL; in sun6i_dma_start_desc()
410 pchan->done = NULL; in sun6i_dma_start_desc()
416 pchan->desc = to_sun6i_desc(&desc->tx); in sun6i_dma_start_desc()
417 pchan->done = NULL; in sun6i_dma_start_desc()
419 sun6i_dma_dump_lli(vchan, pchan->desc->v_lli); in sun6i_dma_start_desc()
421 irq_reg = pchan->idx / DMA_IRQ_CHAN_NR; in sun6i_dma_start_desc()
422 irq_offset = pchan->idx % DMA_IRQ_CHAN_NR; in sun6i_dma_start_desc()
432 writel(pchan->desc->p_lli, pchan->base + DMA_CHAN_LLI_ADDR); in sun6i_dma_start_desc()
433 writel(DMA_CHAN_ENABLE_START, pchan->base + DMA_CHAN_ENABLE); in sun6i_dma_start_desc()
436 sun6i_dma_dump_chan_regs(sdev, pchan); in sun6i_dma_start_desc()
445 struct sun6i_pchan *pchan; in sun6i_dma_tasklet() local
452 pchan = vchan->phy; in sun6i_dma_tasklet()
454 if (pchan && pchan->done) { in sun6i_dma_tasklet()
460 pchan->idx); in sun6i_dma_tasklet()
464 pchan->vchan = NULL; in sun6i_dma_tasklet()
472 pchan = &sdev->pchans[pchan_idx]; in sun6i_dma_tasklet()
474 if (pchan->vchan || list_empty(&sdev->pending)) in sun6i_dma_tasklet()
485 pchan->vchan = vchan; in sun6i_dma_tasklet()
486 vchan->phy = pchan; in sun6i_dma_tasklet()
488 pchan->idx, &vchan->vc); in sun6i_dma_tasklet()
496 pchan = sdev->pchans + pchan_idx; in sun6i_dma_tasklet()
497 vchan = pchan->vchan; in sun6i_dma_tasklet()
510 struct sun6i_pchan *pchan; in sun6i_dma_interrupt() local
525 pchan = sdev->pchans + j; in sun6i_dma_interrupt()
526 vchan = pchan->vchan; in sun6i_dma_interrupt()
529 vchan_cyclic_callback(&pchan->desc->vd); in sun6i_dma_interrupt()
532 vchan_cookie_complete(&pchan->desc->vd); in sun6i_dma_interrupt()
533 pchan->done = pchan->desc; in sun6i_dma_interrupt()
824 struct sun6i_pchan *pchan = vchan->phy; in sun6i_dma_pause() local
828 if (pchan) { in sun6i_dma_pause()
830 pchan->base + DMA_CHAN_PAUSE); in sun6i_dma_pause()
844 struct sun6i_pchan *pchan = vchan->phy; in sun6i_dma_resume() local
851 if (pchan) { in sun6i_dma_resume()
853 pchan->base + DMA_CHAN_PAUSE); in sun6i_dma_resume()
869 struct sun6i_pchan *pchan = vchan->phy; in sun6i_dma_terminate_all() local
881 if (pchan && pchan->desc) { in sun6i_dma_terminate_all()
882 struct virt_dma_desc *vd = &pchan->desc->vd; in sun6i_dma_terminate_all()
891 if (pchan) { in sun6i_dma_terminate_all()
892 writel(DMA_CHAN_ENABLE_STOP, pchan->base + DMA_CHAN_ENABLE); in sun6i_dma_terminate_all()
893 writel(DMA_CHAN_PAUSE_RESUME, pchan->base + DMA_CHAN_PAUSE); in sun6i_dma_terminate_all()
896 pchan->vchan = NULL; in sun6i_dma_terminate_all()
897 pchan->desc = NULL; in sun6i_dma_terminate_all()
898 pchan->done = NULL; in sun6i_dma_terminate_all()
913 struct sun6i_pchan *pchan = vchan->phy; in sun6i_dma_tx_status() local
933 } else if (!pchan || !pchan->desc) { in sun6i_dma_tx_status()
936 bytes = sun6i_get_chan_size(pchan); in sun6i_dma_tx_status()
1289 struct sun6i_pchan *pchan = &sdc->pchans[i]; in sun6i_dma_probe() local
1291 pchan->idx = i; in sun6i_dma_probe()
1292 pchan->base = sdc->base + 0x100 + i * 0x40; in sun6i_dma_probe()