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 |
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 --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;