[prev in list] [next in list] [prev in thread] [next in thread]
List: lm-sensors
Subject: Re: [lm-sensors] [PATCH 1/6] hwmon: (f75375s) Fix register write order when setting fans to full spe
From: Nikolaus Schulz <mail () microschulz ! de>
Date: 2012-02-23 1:46:40
Message-ID: 20120223014640.GA7948 () luigi ! zusammrottung ! local
[Download RAW message or body]
On Wed, Feb 22, 2012 at 05:14:22PM -0800, Guenter Roeck wrote:
> On Wed, Feb 22, 2012 at 05:18:44PM -0500, Nikolaus Schulz wrote:
> > From: Nikolaus Schulz <schulz@macnetix.de>
> >
> > By hwmon sysfs interface convention, setting pwm_enable to zero sets a fan
> > to full speed. In the f75375s driver, this need be done by enabling
> > manual fan control, plus duty mode for the F875387 chip, and then setting
> > the maximum duty cycle. Fix a bug where the two necessary register writes
> > were swapped, effectively discarding the setting to full-speed.
> >
> > Signed-off-by: Nikolaus Schulz <mail@microschulz.de>
> > ---
> > drivers/hwmon/f75375s.c | 7 +++----
> > 1 files changed, 3 insertions(+), 4 deletions(-)
> >
> Nikolaus,
>
> this patch modifies register write order for the other chips as well.
> Does that have any impact on the other chips ? Or, in other words,
> is this patch also necessary for stable ?
I think so, although I have tested it only on the F75387.
(For stable kernels it needs to be backported.)
Nikolaus
> > diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c
> > index faf66c8..5dae122 100644
> > --- a/drivers/hwmon/f75375s.c
> > +++ b/drivers/hwmon/f75375s.c
> > @@ -340,8 +340,6 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
> > fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
> > fanmode |= (1 << F75387_FAN_DUTY_MODE(nr));
> > data->pwm[nr] = 255;
> > - f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
> > - data->pwm[nr]);
> > break;
> > case 1: /* PWM */
> > fanmode |= (1 << F75387_FAN_MANU_MODE(nr));
> > @@ -361,8 +359,6 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
> > case 0: /* full speed */
> > fanmode |= (3 << FAN_CTRL_MODE(nr));
> > data->pwm[nr] = 255;
> > - f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
> > - data->pwm[nr]);
> > break;
> > case 1: /* PWM */
> > fanmode |= (3 << FAN_CTRL_MODE(nr));
> > @@ -377,6 +373,9 @@ static int set_pwm_enable_direct(struct i2c_client *client, int nr, int val)
> >
> > f75375_write8(client, F75375_REG_FAN_TIMER, fanmode);
> > data->pwm_enable[nr] = val;
> > + if (val == 0)
> > + f75375_write8(client, F75375_REG_FAN_PWM_DUTY(nr),
> > + data->pwm[nr]);
> > return 0;
> > }
> >
> > --
> > 1.7.9.1
> >
>
_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic