]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iio: adc: extract setup function without backend
authorIoana Risteiu <Ioana.Risteiu@analog.com>
Mon, 25 Aug 2025 22:13:51 +0000 (01:13 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sun, 31 Aug 2025 12:36:25 +0000 (13:36 +0100)
Refactor probe function by moving the initialization specific to
communication without iio-backend into a separate setup function.

The purpose of this modification is better code organization. No
functional changes intended.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Ioana Risteiu <Ioana.Risteiu@analog.com>
Link: https://patch.msgid.link/20250825221355.6214-4-Ioana.Risteiu@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/adc/ad7779.c

index 845adc510239c42db67e8860ddc9e2bc859af632..4e6fa63705935bc4efa4f013ed4dcb0ae17d4411 100644 (file)
@@ -752,6 +752,51 @@ static int ad7779_conf(struct ad7779_state *st, struct gpio_desc *start_gpio)
        return 0;
 }
 
+static int ad7779_setup_without_backend(struct ad7779_state *st, struct iio_dev *indio_dev)
+{
+       int ret;
+       struct device *dev = &st->spi->dev;
+
+       indio_dev->info = &ad7779_info;
+       indio_dev->channels = st->chip_info->channels;
+       indio_dev->num_channels = ARRAY_SIZE(ad7779_channels);
+
+       st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
+                                         iio_device_id(indio_dev));
+       if (!st->trig)
+               return -ENOMEM;
+
+       st->trig->ops = &ad7779_trigger_ops;
+
+       iio_trigger_set_drvdata(st->trig, st);
+
+       ret = devm_request_irq(dev, st->spi->irq, iio_trigger_generic_data_rdy_poll,
+                              IRQF_ONESHOT | IRQF_NO_AUTOEN, indio_dev->name,
+                              st->trig);
+       if (ret)
+               return dev_err_probe(dev, ret, "request IRQ %d failed\n",
+                                    st->spi->irq);
+
+       ret = devm_iio_trigger_register(dev, st->trig);
+       if (ret)
+               return ret;
+
+       indio_dev->trig = iio_trigger_get(st->trig);
+
+       init_completion(&st->completion);
+
+       ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
+                                             &iio_pollfunc_store_time,
+                                             &ad7779_trigger_handler,
+                                             &ad7779_buffer_setup_ops);
+       if (ret)
+               return ret;
+
+       return ad7779_spi_write_mask(st, AD7779_REG_DOUT_FORMAT,
+                                    AD7779_DCLK_CLK_DIV_MSK,
+                                    FIELD_PREP(AD7779_DCLK_CLK_DIV_MSK, 7));
+}
+
 static int ad7779_probe(struct spi_device *spi)
 {
        struct iio_dev *indio_dev;
@@ -760,9 +805,6 @@ static int ad7779_probe(struct spi_device *spi)
        struct device *dev = &spi->dev;
        int ret = -EINVAL;
 
-       if (!spi->irq)
-               return dev_err_probe(dev, ret, "DRDY irq not present\n");
-
        indio_dev = devm_iio_device_alloc(dev, sizeof(*st));
        if (!indio_dev)
                return -ENOMEM;
@@ -804,45 +846,9 @@ static int ad7779_probe(struct spi_device *spi)
                return ret;
 
        indio_dev->name = st->chip_info->name;
-       indio_dev->info = &ad7779_info;
        indio_dev->modes = INDIO_DIRECT_MODE;
-       indio_dev->channels = st->chip_info->channels;
-       indio_dev->num_channels = ARRAY_SIZE(ad7779_channels);
-
-       st->trig = devm_iio_trigger_alloc(dev, "%s-dev%d", indio_dev->name,
-                                         iio_device_id(indio_dev));
-       if (!st->trig)
-               return -ENOMEM;
 
-       st->trig->ops = &ad7779_trigger_ops;
-
-       iio_trigger_set_drvdata(st->trig, st);
-
-       ret = devm_request_irq(dev, spi->irq, iio_trigger_generic_data_rdy_poll,
-                              IRQF_ONESHOT | IRQF_NO_AUTOEN, indio_dev->name,
-                              st->trig);
-       if (ret)
-               return dev_err_probe(dev, ret, "request IRQ %d failed\n",
-                                    st->spi->irq);
-
-       ret = devm_iio_trigger_register(dev, st->trig);
-       if (ret)
-               return ret;
-
-       indio_dev->trig = iio_trigger_get(st->trig);
-
-       init_completion(&st->completion);
-
-       ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
-                                             &iio_pollfunc_store_time,
-                                             &ad7779_trigger_handler,
-                                             &ad7779_buffer_setup_ops);
-       if (ret)
-               return ret;
-
-       ret = ad7779_spi_write_mask(st, AD7779_REG_DOUT_FORMAT,
-                                   AD7779_DCLK_CLK_DIV_MSK,
-                                   FIELD_PREP(AD7779_DCLK_CLK_DIV_MSK, 7));
+       ret = ad7779_setup_without_backend(st, indio_dev);
        if (ret)
                return ret;