Lines Matching refs:dmac

303 static void rcar_dmac_write(struct rcar_dmac *dmac, u32 reg, u32 data)
306 writew(data, dmac->iomem + reg);
308 writel(data, dmac->iomem + reg);
311 static u32 rcar_dmac_read(struct rcar_dmac *dmac, u32 reg)
314 return readw(dmac->iomem + reg);
316 return readl(dmac->iomem + reg);
445 static int rcar_dmac_init(struct rcar_dmac *dmac)
450 rcar_dmac_write(dmac, RCAR_DMACHCLR, dmac->channels_mask);
451 rcar_dmac_write(dmac, RCAR_DMAOR,
454 dmaor = rcar_dmac_read(dmac, RCAR_DMAOR);
456 dev_warn(dmac->dev, "DMAOR initialization failed.\n");
818 static void rcar_dmac_stop_all_chan(struct rcar_dmac *dmac)
823 for (i = 0; i < dmac->n_channels; ++i) {
824 struct rcar_dmac_chan *chan = &dmac->channels[i];
826 if (!(dmac->channels_mask & BIT(i)))
1050 struct rcar_dmac *dmac = to_rcar_dmac(chan->device);
1069 clear_bit(rchan->mid_rid, dmac->modules);
1562 struct rcar_dmac *dmac = to_rcar_dmac(chan->chan.device);
1569 rcar_dmac_write(dmac, RCAR_DMACHCLR, 1 << chan->index);
1659 struct rcar_dmac *dmac = to_rcar_dmac(chan->device);
1672 return !test_and_set_bit(dma_spec->args[0], dmac->modules);
1712 struct rcar_dmac *dmac = dev_get_drvdata(dev);
1714 return rcar_dmac_init(dmac);
1734 static int rcar_dmac_chan_probe(struct rcar_dmac *dmac,
1739 struct platform_device *pdev = to_platform_device(dmac->dev);
1746 rchan->iomem = dmac->iomem + data->chan_offset_base +
1764 irqname = devm_kasprintf(dmac->dev, GFP_KERNEL, "%s:%u",
1765 dev_name(dmac->dev), index);
1773 chan->device = &dmac->engine;
1776 list_add_tail(&chan->device_node, &dmac->engine.channels);
1778 ret = devm_request_threaded_irq(dmac->dev, rchan->irq,
1783 dev_err(dmac->dev, "failed to request IRQ %u (%d)\n",
1793 static int rcar_dmac_parse_of(struct device *dev, struct rcar_dmac *dmac)
1798 ret = of_property_read_u32(np, "dma-channels", &dmac->n_channels);
1805 if (dmac->n_channels <= 0 ||
1806 dmac->n_channels >= RCAR_DMAC_MAX_CHANNELS) {
1808 dmac->n_channels);
1816 dmac->channels_mask = GENMASK(dmac->n_channels - 1, 0);
1817 of_property_read_u32(np, "dma-channel-mask", &dmac->channels_mask);
1820 dmac->channels_mask &= GENMASK(dmac->n_channels - 1, 0);
1832 struct rcar_dmac *dmac;
1841 dmac = devm_kzalloc(&pdev->dev, sizeof(*dmac), GFP_KERNEL);
1842 if (!dmac)
1845 dmac->dev = &pdev->dev;
1846 platform_set_drvdata(pdev, dmac);
1847 ret = dma_set_max_seg_size(dmac->dev, RCAR_DMATCR_MASK);
1851 ret = dma_set_mask_and_coherent(dmac->dev, DMA_BIT_MASK(40));
1855 ret = rcar_dmac_parse_of(&pdev->dev, dmac);
1868 dmac->channels_mask &= ~BIT(0);
1870 dmac->channels = devm_kcalloc(&pdev->dev, dmac->n_channels,
1871 sizeof(*dmac->channels), GFP_KERNEL);
1872 if (!dmac->channels)
1876 dmac->iomem = devm_platform_ioremap_resource(pdev, 0);
1877 if (IS_ERR(dmac->iomem))
1878 return PTR_ERR(dmac->iomem);
1888 ret = rcar_dmac_init(dmac);
1897 engine = &dmac->engine;
1924 for (i = 0; i < dmac->n_channels; ++i) {
1925 if (!(dmac->channels_mask & BIT(i)))
1928 ret = rcar_dmac_chan_probe(dmac, &dmac->channels[i], data, i);
1958 struct rcar_dmac *dmac = platform_get_drvdata(pdev);
1961 dma_async_device_unregister(&dmac->engine);
1970 struct rcar_dmac *dmac = platform_get_drvdata(pdev);
1972 rcar_dmac_stop_all_chan(dmac);
1982 .compatible = "renesas,rcar-dmac",
1992 .name = "rcar-dmac",