Lines Matching refs:dmadev
151 static inline uint32_t jz4740_dma_read(struct jz4740_dma_dev *dmadev, in jz4740_dma_read() argument
154 return readl(dmadev->base + reg); in jz4740_dma_read()
157 static inline void jz4740_dma_write(struct jz4740_dma_dev *dmadev, in jz4740_dma_write() argument
160 writel(val, dmadev->base + reg); in jz4740_dma_write()
163 static inline void jz4740_dma_write_mask(struct jz4740_dma_dev *dmadev, in jz4740_dma_write_mask() argument
168 tmp = jz4740_dma_read(dmadev, reg); in jz4740_dma_write_mask()
171 jz4740_dma_write(dmadev, reg, tmp); in jz4740_dma_write_mask()
212 struct jz4740_dma_dev *dmadev = jz4740_dma_chan_get_dev(chan); in jz4740_dma_slave_config() local
262 jz4740_dma_write(dmadev, JZ_REG_DMA_CMD(chan->id), cmd); in jz4740_dma_slave_config()
263 jz4740_dma_write(dmadev, JZ_REG_DMA_STATUS_CTRL(chan->id), 0); in jz4740_dma_slave_config()
264 jz4740_dma_write(dmadev, JZ_REG_DMA_REQ_TYPE(chan->id), in jz4740_dma_slave_config()
273 struct jz4740_dma_dev *dmadev = jz4740_dma_chan_get_dev(chan); in jz4740_dma_terminate_all() local
278 jz4740_dma_write_mask(dmadev, JZ_REG_DMA_STATUS_CTRL(chan->id), 0, in jz4740_dma_terminate_all()
291 struct jz4740_dma_dev *dmadev = jz4740_dma_chan_get_dev(chan); in jz4740_dma_start_transfer() local
296 jz4740_dma_write_mask(dmadev, JZ_REG_DMA_STATUS_CTRL(chan->id), 0, in jz4740_dma_start_transfer()
319 jz4740_dma_write(dmadev, JZ_REG_DMA_SRC_ADDR(chan->id), src_addr); in jz4740_dma_start_transfer()
320 jz4740_dma_write(dmadev, JZ_REG_DMA_DST_ADDR(chan->id), dst_addr); in jz4740_dma_start_transfer()
321 jz4740_dma_write(dmadev, JZ_REG_DMA_TRANSFER_COUNT(chan->id), in jz4740_dma_start_transfer()
326 jz4740_dma_write_mask(dmadev, JZ_REG_DMA_STATUS_CTRL(chan->id), in jz4740_dma_start_transfer()
331 jz4740_dma_write_mask(dmadev, JZ_REG_DMA_CTRL, in jz4740_dma_start_transfer()
358 struct jz4740_dma_dev *dmadev = devid; in jz4740_dma_irq() local
362 irq_status = readl(dmadev->base + JZ_REG_DMA_IRQ); in jz4740_dma_irq()
366 jz4740_dma_write_mask(dmadev, in jz4740_dma_irq()
371 jz4740_dma_chan_irq(&dmadev->chan[i]); in jz4740_dma_irq()
449 struct jz4740_dma_dev *dmadev = jz4740_dma_chan_get_dev(chan); in jz4740_dma_desc_residue() local
459 count = jz4740_dma_read(dmadev, in jz4740_dma_desc_residue()
511 struct jz4740_dma_dev *dmadev; in jz4740_dma_probe() local
518 dmadev = devm_kzalloc(&pdev->dev, sizeof(*dmadev), GFP_KERNEL); in jz4740_dma_probe()
519 if (!dmadev) in jz4740_dma_probe()
522 dd = &dmadev->ddev; in jz4740_dma_probe()
525 dmadev->base = devm_ioremap_resource(&pdev->dev, res); in jz4740_dma_probe()
526 if (IS_ERR(dmadev->base)) in jz4740_dma_probe()
527 return PTR_ERR(dmadev->base); in jz4740_dma_probe()
529 dmadev->clk = clk_get(&pdev->dev, "dma"); in jz4740_dma_probe()
530 if (IS_ERR(dmadev->clk)) in jz4740_dma_probe()
531 return PTR_ERR(dmadev->clk); in jz4740_dma_probe()
533 clk_prepare_enable(dmadev->clk); in jz4740_dma_probe()
552 chan = &dmadev->chan[i]; in jz4740_dma_probe()
563 ret = request_irq(irq, jz4740_dma_irq, 0, dev_name(&pdev->dev), dmadev); in jz4740_dma_probe()
567 platform_set_drvdata(pdev, dmadev); in jz4740_dma_probe()
578 struct jz4740_dma_dev *dmadev = platform_get_drvdata(pdev); in jz4740_dma_remove() local
581 free_irq(irq, dmadev); in jz4740_dma_remove()
582 dma_async_device_unregister(&dmadev->ddev); in jz4740_dma_remove()
583 clk_disable_unprepare(dmadev->clk); in jz4740_dma_remove()