diff --git a/drivers/hwmon/ads7871.c b/drivers/hwmon/ads7871.c index 753bf77ce19b..9bfdf9e6bcd7 100644 --- a/drivers/hwmon/ads7871.c +++ b/drivers/hwmon/ads7871.c @@ -104,10 +104,14 @@ static ssize_t voltage_show(struct device *dev, struct device_attribute *da, */ /*MUX_M3_BM forces single ended*/ /*This is also where the gain of the PGA would be set*/ - ads7871_write_reg8(spi, REG_GAIN_MUX, - (MUX_CNV_BM | MUX_M3_BM | channel)); + ret = ads7871_write_reg8(spi, REG_GAIN_MUX, + (MUX_CNV_BM | MUX_M3_BM | channel)); + if (ret < 0) + return ret; ret = ads7871_read_reg8(spi, REG_GAIN_MUX); + if (ret < 0) + return ret; mux_cnv = ((ret & MUX_CNV_BM) >> MUX_CNV_BV); /* * on 400MHz arm9 platform the conversion @@ -116,12 +120,16 @@ static ssize_t voltage_show(struct device *dev, struct device_attribute *da, while ((i < 2) && mux_cnv) { i++; ret = ads7871_read_reg8(spi, REG_GAIN_MUX); + if (ret < 0) + return ret; mux_cnv = ((ret & MUX_CNV_BM) >> MUX_CNV_BV); msleep_interruptible(1); } if (mux_cnv == 0) { val = ads7871_read_reg16(spi, REG_LS_BYTE); + if (val < 0) + return val; /*result in volts*10000 = (val/8192)*2.5*10000*/ val = ((val >> 2) * 25000) / 8192; return sysfs_emit(buf, "%d\n", val);