Commit bd1d558c authored by Martin Larsson's avatar Martin Larsson Committed by Jonathan Cameron

iio: adc: imx8qxp-adc: propagate regulator_get_voltage error

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: default avatarHaibo Chen <haibo.chen@nxp.com>
Signed-off-by: default avatarMartin Larsson <martin.larsson@actia.se>
Reviewed-by: default avatarFabio Estevam <festevam@gmail.com>
Link: https://lore.kernel.org/r/20220720153136.3502440-1-martin.larsson@actia.seSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 9e828450
...@@ -202,7 +202,7 @@ static int imx8qxp_adc_read_raw(struct iio_dev *indio_dev, ...@@ -202,7 +202,7 @@ static int imx8qxp_adc_read_raw(struct iio_dev *indio_dev,
struct imx8qxp_adc *adc = iio_priv(indio_dev); struct imx8qxp_adc *adc = iio_priv(indio_dev);
struct device *dev = adc->dev; struct device *dev = adc->dev;
u32 ctrl, vref_uv; u32 ctrl;
long ret; long ret;
switch (mask) { switch (mask) {
...@@ -245,8 +245,10 @@ static int imx8qxp_adc_read_raw(struct iio_dev *indio_dev, ...@@ -245,8 +245,10 @@ static int imx8qxp_adc_read_raw(struct iio_dev *indio_dev,
return IIO_VAL_INT; return IIO_VAL_INT;
case IIO_CHAN_INFO_SCALE: case IIO_CHAN_INFO_SCALE:
vref_uv = regulator_get_voltage(adc->vref); ret = regulator_get_voltage(adc->vref);
*val = vref_uv / 1000; if (ret < 0)
return ret;
*val = ret / 1000;
*val2 = 12; *val2 = 12;
return IIO_VAL_FRACTIONAL_LOG2; return IIO_VAL_FRACTIONAL_LOG2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment