diff mbox series

[v2] iio: adc: imx8qxp-adc: propagate regulator_get_voltage error

Message ID 20220720153136.3502440-1-martin.larsson@actia.se (mailing list archive)
State Accepted
Headers show
Series [v2] iio: adc: imx8qxp-adc: propagate regulator_get_voltage error | expand

Commit Message

Martin Larsson July 20, 2022, 3:31 p.m. UTC
If the ADC vref regulator returns an error, for example, if CONFIG_REGULATOR
is not set, the error will be used as a reference voltage.

Introduce a guard for negative return values instead of unconditionally
casting it to u32.

Acked-by: Haibo Chen <haibo.chen@nxp.com>
Signed-off-by: Martin Larsson <martin.larsson@actia.se>
---
v2:
  - Added missing Signed-off-by (Fabio)
  - Collected Haibo's Acked-by

 drivers/iio/adc/imx8qxp-adc.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Fabio Estevam July 20, 2022, 3:47 p.m. UTC | #1
Hi Martin,

On Wed, Jul 20, 2022 at 12:31 PM Martin Larsson <martin.larsson@actia.se> wrote:
>
> If the ADC vref regulator returns an error, for example, if CONFIG_REGULATOR
> is not set, the error will be used as a reference voltage.
>
> Introduce a guard for negative return values instead of unconditionally
> casting it to u32.
>
> Acked-by: Haibo Chen <haibo.chen@nxp.com>
> Signed-off-by: Martin Larsson <martin.larsson@actia.se>

Reviewed-by: Fabio Estevam <festevam@gmail.com>
diff mbox series

Patch

diff --git a/drivers/iio/adc/imx8qxp-adc.c b/drivers/iio/adc/imx8qxp-adc.c
index 901dd8e1b32f..8a786d73ae8e 100644
--- a/drivers/iio/adc/imx8qxp-adc.c
+++ b/drivers/iio/adc/imx8qxp-adc.c
@@ -201,7 +201,7 @@  static int imx8qxp_adc_read_raw(struct iio_dev *indio_dev,
 	struct imx8qxp_adc *adc = iio_priv(indio_dev);
 	struct device *dev = adc->dev;
 
-	u32 ctrl, vref_uv;
+	u32 ctrl;
 	long ret;
 
 	switch (mask) {
@@ -244,8 +244,10 @@  static int imx8qxp_adc_read_raw(struct iio_dev *indio_dev,
 		return IIO_VAL_INT;
 
 	case IIO_CHAN_INFO_SCALE:
-		vref_uv = regulator_get_voltage(adc->vref);
-		*val = vref_uv / 1000;
+		ret = regulator_get_voltage(adc->vref);
+		if (ret < 0)
+			return ret;
+		*val = ret / 1000;
 		*val2 = 12;
 		return IIO_VAL_FRACTIONAL_LOG2;