diff mbox series

hwmon: (adt7475) Fix default duty on fan is disabled

Message ID 20240701073252.317397-1-chineweff@gmail.com (mailing list archive)
State Accepted
Headers show
Series hwmon: (adt7475) Fix default duty on fan is disabled | expand

Commit Message

Wayne Tung July 1, 2024, 7:32 a.m. UTC
According to the comments on fan is disabled, we change to manual mode
and set the duty cycle to 0.
For setting the duty cycle part, the register is wrong. Fix it.

Signed-off-by: Wayne Tung <chineweff@gmail.com>
---
 drivers/hwmon/adt7475.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Guenter Roeck July 1, 2024, 10:45 p.m. UTC | #1
On Mon, Jul 01, 2024 at 03:32:52PM +0800, Wayne Tung wrote:
> According to the comments on fan is disabled, we change to manual mode
> and set the duty cycle to 0.
> For setting the duty cycle part, the register is wrong. Fix it.
> 
> Signed-off-by: Wayne Tung <chineweff@gmail.com>
> ---

Applied. 

Curious - how did you find that ? That bug existed since the driver was
introduced.

Thanks,
Guenter

>  drivers/hwmon/adt7475.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
> index 4224ffb30483..ec3336804720 100644
> --- a/drivers/hwmon/adt7475.c
> +++ b/drivers/hwmon/adt7475.c
> @@ -1900,7 +1900,7 @@ static void adt7475_read_pwm(struct i2c_client *client, int index)
>  		data->pwm[CONTROL][index] &= ~0xE0;
>  		data->pwm[CONTROL][index] |= (7 << 5);
>  
> -		i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
> +		i2c_smbus_write_byte_data(client, PWM_REG(index),
>  					  data->pwm[INPUT][index]);
>  
>  		i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
Wayne Tung July 2, 2024, 11:04 a.m. UTC | #2
I'm using adt7475 on the x86 system.
When I tried to probe the driver manually, fans would run at full
speed (It's in disabled mode by default).
It's not the expected behavior.
I traced the driver and found the issue.

Thanks,
Wayne

Guenter Roeck <linux@roeck-us.net> 於 2024年7月2日 週二 上午6:45寫道:
>
> On Mon, Jul 01, 2024 at 03:32:52PM +0800, Wayne Tung wrote:
> > According to the comments on fan is disabled, we change to manual mode
> > and set the duty cycle to 0.
> > For setting the duty cycle part, the register is wrong. Fix it.
> >
> > Signed-off-by: Wayne Tung <chineweff@gmail.com>
> > ---
>
> Applied.
>
> Curious - how did you find that ? That bug existed since the driver was
> introduced.
>
> Thanks,
> Guenter
>
> >  drivers/hwmon/adt7475.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
> > index 4224ffb30483..ec3336804720 100644
> > --- a/drivers/hwmon/adt7475.c
> > +++ b/drivers/hwmon/adt7475.c
> > @@ -1900,7 +1900,7 @@ static void adt7475_read_pwm(struct i2c_client *client, int index)
> >               data->pwm[CONTROL][index] &= ~0xE0;
> >               data->pwm[CONTROL][index] |= (7 << 5);
> >
> > -             i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
> > +             i2c_smbus_write_byte_data(client, PWM_REG(index),
> >                                         data->pwm[INPUT][index]);
> >
> >               i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
Guenter Roeck July 2, 2024, 7:41 p.m. UTC | #3
On 7/2/24 03:31, Wayne Tung wrote:
> I'm using adt7475 on the x86 system.
> I found that when I tried to probe the driver manually, fans would run full speed (It's in disabled mode by default).
> So I traced the driver and found the issue.
> 

Thanks for the update. It is interesting to learn that this chip
is still actively used.

Guenter
diff mbox series

Patch

diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
index 4224ffb30483..ec3336804720 100644
--- a/drivers/hwmon/adt7475.c
+++ b/drivers/hwmon/adt7475.c
@@ -1900,7 +1900,7 @@  static void adt7475_read_pwm(struct i2c_client *client, int index)
 		data->pwm[CONTROL][index] &= ~0xE0;
 		data->pwm[CONTROL][index] |= (7 << 5);
 
-		i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),
+		i2c_smbus_write_byte_data(client, PWM_REG(index),
 					  data->pwm[INPUT][index]);
 
 		i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(index),