]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/dma/dma-jz4780.c
Merge tag 'socfpga_update_for_v5.5' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / drivers / dma / dma-jz4780.c
index cafb1cc065bb76f397541f54bb597982dbc4ece4..fa626acdc9b961919208a316d719ad9d2f25118b 100644 (file)
@@ -858,13 +858,7 @@ static int jz4780_dma_probe(struct platform_device *pdev)
        jzdma->soc_data = soc_data;
        platform_set_drvdata(pdev, jzdma);
 
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               dev_err(dev, "failed to get I/O memory\n");
-               return -EINVAL;
-       }
-
-       jzdma->chn_base = devm_ioremap_resource(dev, res);
+       jzdma->chn_base = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(jzdma->chn_base))
                return PTR_ERR(jzdma->chn_base);
 
@@ -987,6 +981,7 @@ static int jz4780_dma_remove(struct platform_device *pdev)
 
        of_dma_controller_free(pdev->dev.of_node);
 
+       clk_disable_unprepare(jzdma->clk);
        free_irq(jzdma->irq, jzdma);
 
        for (i = 0; i < jzdma->soc_data->nb_channels; i++)
@@ -1019,11 +1014,18 @@ static const struct jz4780_dma_soc_data jz4780_dma_soc_data = {
        .flags = JZ_SOC_DATA_ALLOW_LEGACY_DT | JZ_SOC_DATA_PROGRAMMABLE_DMA,
 };
 
+static const struct jz4780_dma_soc_data x1000_dma_soc_data = {
+       .nb_channels = 8,
+       .transfer_ord_max = 7,
+       .flags = JZ_SOC_DATA_PROGRAMMABLE_DMA,
+};
+
 static const struct of_device_id jz4780_dma_dt_match[] = {
        { .compatible = "ingenic,jz4740-dma", .data = &jz4740_dma_soc_data },
        { .compatible = "ingenic,jz4725b-dma", .data = &jz4725b_dma_soc_data },
        { .compatible = "ingenic,jz4770-dma", .data = &jz4770_dma_soc_data },
        { .compatible = "ingenic,jz4780-dma", .data = &jz4780_dma_soc_data },
+       { .compatible = "ingenic,x1000-dma", .data = &x1000_dma_soc_data },
        {},
 };
 MODULE_DEVICE_TABLE(of, jz4780_dma_dt_match);