Message ID | 20200707142747.118414-1-vishwas.reddy.vr@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | hwmon: (emc2103) fix unable to change fan pwm1_enable attribute | expand |
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@gmail.com> > --- > 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
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; }
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@gmail.com> --- drivers/hwmon/emc2103.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)