Lines Matching refs:jzdma

171 static inline uint32_t jz4780_dma_readl(struct jz4780_dma_dev *jzdma,  in jz4780_dma_readl()  argument
174 return readl(jzdma->base + reg); in jz4780_dma_readl()
177 static inline void jz4780_dma_writel(struct jz4780_dma_dev *jzdma, in jz4780_dma_writel() argument
180 writel(val, jzdma->base + reg); in jz4780_dma_writel()
417 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_begin() local
461 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), JZ_DMA_DCS_DES8); in jz4780_dma_begin()
466 jz4780_dma_writel(jzdma, JZ_DMA_REG_DDA(jzchan->id), desc_phys); in jz4780_dma_begin()
467 jz4780_dma_writel(jzdma, JZ_DMA_REG_DDRS, BIT(jzchan->id)); in jz4780_dma_begin()
470 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), in jz4780_dma_begin()
489 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_terminate_all() local
496 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), 0); in jz4780_dma_terminate_all()
526 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_desc_residue() local
536 count = jz4780_dma_readl(jzdma, in jz4780_dma_desc_residue()
577 static void jz4780_dma_chan_irq(struct jz4780_dma_dev *jzdma, in jz4780_dma_chan_irq() argument
584 dcs = jz4780_dma_readl(jzdma, JZ_DMA_REG_DCS(jzchan->id)); in jz4780_dma_chan_irq()
585 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), 0); in jz4780_dma_chan_irq()
620 struct jz4780_dma_dev *jzdma = data; in jz4780_dma_irq_handler() local
624 pending = jz4780_dma_readl(jzdma, JZ_DMA_REG_DIRQP); in jz4780_dma_irq_handler()
630 jz4780_dma_chan_irq(jzdma, &jzdma->chan[i]); in jz4780_dma_irq_handler()
634 dmac = jz4780_dma_readl(jzdma, JZ_DMA_REG_DMAC); in jz4780_dma_irq_handler()
636 jz4780_dma_writel(jzdma, JZ_DMA_REG_DMAC, dmac); in jz4780_dma_irq_handler()
639 jz4780_dma_writel(jzdma, JZ_DMA_REG_DIRQP, 0); in jz4780_dma_irq_handler()
673 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_filter_fn() local
679 } else if (jzdma->chan_reserved & BIT(jzchan->id)) { in jz4780_dma_filter_fn()
691 struct jz4780_dma_dev *jzdma = ofdma->of_dma_data; in jz4780_of_dma_xlate() local
692 dma_cap_mask_t mask = jzdma->dma_device.cap_mask; in jz4780_of_dma_xlate()
703 dev_err(jzdma->dma_device.dev, in jz4780_of_dma_xlate()
710 if (!(jzdma->chan_reserved & BIT(data.channel))) { in jz4780_of_dma_xlate()
711 dev_err(jzdma->dma_device.dev, in jz4780_of_dma_xlate()
724 struct jz4780_dma_dev *jzdma; in jz4780_dma_probe() local
730 jzdma = devm_kzalloc(dev, sizeof(*jzdma), GFP_KERNEL); in jz4780_dma_probe()
731 if (!jzdma) in jz4780_dma_probe()
734 platform_set_drvdata(pdev, jzdma); in jz4780_dma_probe()
742 jzdma->base = devm_ioremap_resource(dev, res); in jz4780_dma_probe()
743 if (IS_ERR(jzdma->base)) in jz4780_dma_probe()
744 return PTR_ERR(jzdma->base); in jz4780_dma_probe()
746 jzdma->irq = platform_get_irq(pdev, 0); in jz4780_dma_probe()
747 if (jzdma->irq < 0) { in jz4780_dma_probe()
749 return jzdma->irq; in jz4780_dma_probe()
752 ret = devm_request_irq(dev, jzdma->irq, jz4780_dma_irq_handler, 0, in jz4780_dma_probe()
753 dev_name(dev), jzdma); in jz4780_dma_probe()
755 dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq); in jz4780_dma_probe()
759 jzdma->clk = devm_clk_get(dev, NULL); in jz4780_dma_probe()
760 if (IS_ERR(jzdma->clk)) { in jz4780_dma_probe()
762 return PTR_ERR(jzdma->clk); in jz4780_dma_probe()
765 clk_prepare_enable(jzdma->clk); in jz4780_dma_probe()
769 0, &jzdma->chan_reserved); in jz4780_dma_probe()
771 dd = &jzdma->dma_device; in jz4780_dma_probe()
799 jz4780_dma_writel(jzdma, JZ_DMA_REG_DMAC, in jz4780_dma_probe()
801 jz4780_dma_writel(jzdma, JZ_DMA_REG_DMACP, 0); in jz4780_dma_probe()
806 jzchan = &jzdma->chan[i]; in jz4780_dma_probe()
821 jzdma); in jz4780_dma_probe()
834 clk_disable_unprepare(jzdma->clk); in jz4780_dma_probe()
840 struct jz4780_dma_dev *jzdma = platform_get_drvdata(pdev); in jz4780_dma_remove() local
843 devm_free_irq(&pdev->dev, jzdma->irq, jzdma); in jz4780_dma_remove()
844 dma_async_device_unregister(&jzdma->dma_device); in jz4780_dma_remove()