]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: adc: sun20i-gpadc: add A523 gpadc support
authorMichal Piekos <michal.piekos@mmpsystems.pl>
Sat, 16 May 2026 05:34:15 +0000 (07:34 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sun, 31 May 2026 09:59:41 +0000 (10:59 +0100)
A523 differs from existing sun20i-gpadc-iio by having two clocks; bus
clock and module clock.

Change driver to enable all clocks.

Signed-off-by: Michal Piekos <michal.piekos@mmpsystems.pl>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/adc/sun20i-gpadc-iio.c

index 861c14da75addceeba196bb9c963313afa7f2907..f5fd2240b808d15a6f689311590d076a70f4b3b9 100644 (file)
@@ -177,10 +177,10 @@ static int sun20i_gpadc_alloc_channels(struct iio_dev *indio_dev,
 static int sun20i_gpadc_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       struct iio_dev *indio_dev;
        struct sun20i_gpadc_iio *info;
+       struct clk_bulk_data *clks;
        struct reset_control *rst;
-       struct clk *clk;
+       struct iio_dev *indio_dev;
        int irq;
        int ret;
 
@@ -205,9 +205,11 @@ static int sun20i_gpadc_probe(struct platform_device *pdev)
        if (IS_ERR(info->regs))
                return PTR_ERR(info->regs);
 
-       clk = devm_clk_get_enabled(dev, NULL);
-       if (IS_ERR(clk))
-               return dev_err_probe(dev, PTR_ERR(clk), "failed to enable bus clock\n");
+       ret = devm_clk_bulk_get_all_enabled(dev, &clks);
+       if (ret < 0)
+               return dev_err_probe(dev, ret, "failed to enable clocks\n");
+       if (ret == 0)
+               return dev_err_probe(dev, -ENODEV, "needs at least one clocks\n");
 
        rst = devm_reset_control_get_exclusive(dev, NULL);
        if (IS_ERR(rst))
@@ -243,6 +245,7 @@ static int sun20i_gpadc_probe(struct platform_device *pdev)
 
 static const struct of_device_id sun20i_gpadc_of_id[] = {
        { .compatible = "allwinner,sun20i-d1-gpadc" },
+       { .compatible = "allwinner,sun55i-a523-gpadc" },
        { }
 };
 MODULE_DEVICE_TABLE(of, sun20i_gpadc_of_id);