iio: dac: ad5791: Add support for controlling RBUF via devicetree
authorMichael Hennerich <michael.hennerich@analog.com>
Wed, 29 Nov 2023 13:03:53 +0000 (14:03 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 4 Dec 2023 13:19:48 +0000 (13:19 +0000)
This patch adds support for an external amplifier to be connected in a
gain of two configuration.

Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Nuno Sa <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20231129-ad5791-michael-stuff-v3-2-48e192b00909@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/dac/ad5791.c

index a4167454da8188a8c5134b2a792aba41b0e3ddf6..75b549827e15a5d9aff5541ee098bdd3920c30b7 100644 (file)
@@ -345,6 +345,7 @@ static int ad5791_probe(struct spi_device *spi)
        struct iio_dev *indio_dev;
        struct ad5791_state *st;
        int ret, pos_voltage_uv = 0, neg_voltage_uv = 0;
+       bool use_rbuf_gain2;
 
        indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
        if (!indio_dev)
@@ -379,6 +380,12 @@ static int ad5791_probe(struct spi_device *spi)
        st->pwr_down = true;
        st->spi = spi;
 
+       if (pdata)
+               use_rbuf_gain2 = pdata->use_rbuf_gain2;
+       else
+               use_rbuf_gain2 = device_property_read_bool(&spi->dev,
+                                                          "adi,rbuf-gain2-en");
+
        if (!IS_ERR(st->reg_vss) && !IS_ERR(st->reg_vdd)) {
                st->vref_mv = (pos_voltage_uv + neg_voltage_uv) / 1000;
                st->vref_neg_mv = neg_voltage_uv / 1000;
@@ -398,7 +405,7 @@ static int ad5791_probe(struct spi_device *spi)
 
 
        st->ctrl = AD5761_CTRL_LINCOMP(st->chip_info->get_lin_comp(st->vref_mv))
-                 | ((pdata && pdata->use_rbuf_gain2) ? 0 : AD5791_CTRL_RBUF) |
+                 | (use_rbuf_gain2 ? 0 : AD5791_CTRL_RBUF) |
                  AD5791_CTRL_BIN2SC;
 
        ret = ad5791_spi_write(st, AD5791_ADDR_CTRL, st->ctrl |