On 7/7/20 7:27 AM, Vishwas M wrote: > This patch fixes a bug which does not let FAN mode to be changed from > sysfs(pwm1_enable). i.e pwm1_enable can not be set to 3, it will always > remain at 0. > > This is caused because the device driver handles the result of > "read_u8_from_i2c(client, REG_FAN_CONF1, &conf_reg)" incorrectly. The > driver thinks an error has occurred if the (result != 0). This has been > fixed by changing the condition to (result < 0). > > Signed-off-by: Vishwas M <vishwas.reddy.vr@xxxxxxxxx> > --- > drivers/hwmon/emc2103.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c > index 491a570e8e50..924c02c1631d 100644 > --- a/drivers/hwmon/emc2103.c > +++ b/drivers/hwmon/emc2103.c > @@ -443,7 +443,7 @@ static ssize_t pwm1_enable_store(struct device *dev, > } > > result = read_u8_from_i2c(client, REG_FAN_CONF1, &conf_reg); > - if (result) { > + if (result < 0) { > count = result; > goto err; > } > The underlying problem is really that read_u8_from_i2c() returns the value twice - once as return code, and once written into the passed pointer. This unnecessarily complex and messy. But, still, valid bug and fix. Applied. Thanks, Guenter