Lines Matching refs:jzdma
172 static inline uint32_t jz4780_dma_readl(struct jz4780_dma_dev *jzdma, in jz4780_dma_readl() argument
175 return readl(jzdma->base + reg); in jz4780_dma_readl()
178 static inline void jz4780_dma_writel(struct jz4780_dma_dev *jzdma, in jz4780_dma_writel() argument
181 writel(val, jzdma->base + reg); in jz4780_dma_writel()
428 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_begin() local
472 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), JZ_DMA_DCS_DES8); in jz4780_dma_begin()
477 jz4780_dma_writel(jzdma, JZ_DMA_REG_DDA(jzchan->id), desc_phys); in jz4780_dma_begin()
478 jz4780_dma_writel(jzdma, JZ_DMA_REG_DDRS, BIT(jzchan->id)); in jz4780_dma_begin()
481 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), in jz4780_dma_begin()
501 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_terminate_all() local
508 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), 0); in jz4780_dma_terminate_all()
540 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_desc_residue() local
550 count = jz4780_dma_readl(jzdma, in jz4780_dma_desc_residue()
591 static void jz4780_dma_chan_irq(struct jz4780_dma_dev *jzdma, in jz4780_dma_chan_irq() argument
598 dcs = jz4780_dma_readl(jzdma, JZ_DMA_REG_DCS(jzchan->id)); in jz4780_dma_chan_irq()
599 jz4780_dma_writel(jzdma, JZ_DMA_REG_DCS(jzchan->id), 0); in jz4780_dma_chan_irq()
634 struct jz4780_dma_dev *jzdma = data; in jz4780_dma_irq_handler() local
638 pending = jz4780_dma_readl(jzdma, JZ_DMA_REG_DIRQP); in jz4780_dma_irq_handler()
644 jz4780_dma_chan_irq(jzdma, &jzdma->chan[i]); in jz4780_dma_irq_handler()
648 dmac = jz4780_dma_readl(jzdma, JZ_DMA_REG_DMAC); in jz4780_dma_irq_handler()
650 jz4780_dma_writel(jzdma, JZ_DMA_REG_DMAC, dmac); in jz4780_dma_irq_handler()
653 jz4780_dma_writel(jzdma, JZ_DMA_REG_DIRQP, 0); in jz4780_dma_irq_handler()
687 struct jz4780_dma_dev *jzdma = jz4780_dma_chan_parent(jzchan); in jz4780_dma_filter_fn() local
690 if (jzdma->dma_device.dev->of_node != data->of_node) in jz4780_dma_filter_fn()
696 } else if (jzdma->chan_reserved & BIT(jzchan->id)) { in jz4780_dma_filter_fn()
708 struct jz4780_dma_dev *jzdma = ofdma->of_dma_data; in jz4780_of_dma_xlate() local
709 dma_cap_mask_t mask = jzdma->dma_device.cap_mask; in jz4780_of_dma_xlate()
721 dev_err(jzdma->dma_device.dev, in jz4780_of_dma_xlate()
728 if (!(jzdma->chan_reserved & BIT(data.channel))) { in jz4780_of_dma_xlate()
729 dev_err(jzdma->dma_device.dev, in jz4780_of_dma_xlate()
735 jzdma->chan[data.channel].transfer_type = data.transfer_type; in jz4780_of_dma_xlate()
738 &jzdma->chan[data.channel].vchan.chan); in jz4780_of_dma_xlate()
747 struct jz4780_dma_dev *jzdma; in jz4780_dma_probe() local
753 jzdma = devm_kzalloc(dev, sizeof(*jzdma), GFP_KERNEL); in jz4780_dma_probe()
754 if (!jzdma) in jz4780_dma_probe()
757 platform_set_drvdata(pdev, jzdma); in jz4780_dma_probe()
765 jzdma->base = devm_ioremap_resource(dev, res); in jz4780_dma_probe()
766 if (IS_ERR(jzdma->base)) in jz4780_dma_probe()
767 return PTR_ERR(jzdma->base); in jz4780_dma_probe()
775 jzdma->irq = ret; in jz4780_dma_probe()
777 ret = request_irq(jzdma->irq, jz4780_dma_irq_handler, 0, dev_name(dev), in jz4780_dma_probe()
778 jzdma); in jz4780_dma_probe()
780 dev_err(dev, "failed to request IRQ %u!\n", jzdma->irq); in jz4780_dma_probe()
784 jzdma->clk = devm_clk_get(dev, NULL); in jz4780_dma_probe()
785 if (IS_ERR(jzdma->clk)) { in jz4780_dma_probe()
787 ret = PTR_ERR(jzdma->clk); in jz4780_dma_probe()
791 clk_prepare_enable(jzdma->clk); in jz4780_dma_probe()
795 0, &jzdma->chan_reserved); in jz4780_dma_probe()
797 dd = &jzdma->dma_device; in jz4780_dma_probe()
824 jz4780_dma_writel(jzdma, JZ_DMA_REG_DMAC, in jz4780_dma_probe()
826 jz4780_dma_writel(jzdma, JZ_DMA_REG_DMACP, 0); in jz4780_dma_probe()
831 jzchan = &jzdma->chan[i]; in jz4780_dma_probe()
846 jzdma); in jz4780_dma_probe()
859 clk_disable_unprepare(jzdma->clk); in jz4780_dma_probe()
862 free_irq(jzdma->irq, jzdma); in jz4780_dma_probe()
868 struct jz4780_dma_dev *jzdma = platform_get_drvdata(pdev); in jz4780_dma_remove() local
873 free_irq(jzdma->irq, jzdma); in jz4780_dma_remove()
876 tasklet_kill(&jzdma->chan[i].vchan.task); in jz4780_dma_remove()
878 dma_async_device_unregister(&jzdma->dma_device); in jz4780_dma_remove()