Re: patch hwmon-w83627hf-don-t-assume-bank-0.patch queued to -stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



it's fix the sensor type detection (w83627thf)

v2.6.22.10:
Oct 31 16:21:40 pancs sensord:   mb_temp: 21 C (limit = 40 C,
hysteresis = 37 C, sensors = thermistor)
Oct 31 16:21:40 pancs sensord:   cpu_temp: 30.5 C (limit = 54 C,
hysteresis = 47 C, sensor = thermistor)

v2.6.22.10+hwmon_fixes:
Oct 31 16:59:20 pancs sensord:   mb_temp: 26 C (limit = 40 C,
hysteresis = 37 C, sensors = thermistor)
Oct 31 16:59:20 pancs sensord:   cpu_temp: 29.0 C (limit = 54 C,
hysteresis = 47 C, sensor = PII/Celeron diode)
--
Signed-off-by: Oliver Pinter <[email protected]>


On 10/31/07, [email protected] <[email protected]> wrote:
>
> This is a note to let you know that we have just queued up the patch titled
>
>      Subject: hwmon/w83627hf: Don't assume bank 0
>
> to the 2.6.23-stable tree.  Its filename is
>
>      hwmon-w83627hf-don-t-assume-bank-0.patch
>
> A git repo of this tree can be found at
>
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
>
> From [email protected]  Wed Oct 31 07:59:11 2007
> From: Jean Delvare <[email protected]>
> Date: Mon, 15 Oct 2007 15:02:42 +0200
> Subject: hwmon/w83627hf: Don't assume bank 0
> To: [email protected]
> Cc: "Mark M. Hoffman" <[email protected]>
> Message-ID: <[email protected]>
>
> From: Jean Delvare <[email protected]>
>
> Already in Linus' tree:
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d58df9cd788e6fb4962e1c8d5ba7b8b95d639a44
>
> The bank switching code assumes that the bank selector is set to 0
> when the driver is loaded. This might not be the case. This is exactly
> the same bug as was fixed in the w83627ehf driver two months ago:
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0956895aa6f8dc6a33210967252fd7787652537d
>
> In practice, this bug was causing the sensor thermal types to be
> improperly reported for my W83627THF the first time I was loading the
> w83627hf driver. From the driver history, I'd say that it has been
> broken since September 2005 (when we stopped resetting the chip by
> default at driver load.)
>
> Signed-off-by: Jean Delvare <[email protected]>
> Signed-off-by: Mark M. Hoffman <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>
>
> ---
>  drivers/hwmon/w83627hf.c |   44
> ++++++++++++++++++++++----------------------
>  1 file changed, 22 insertions(+), 22 deletions(-)
>
> --- a/drivers/hwmon/w83627hf.c
> +++ b/drivers/hwmon/w83627hf.c
> @@ -1335,6 +1335,24 @@ static int __devexit w83627hf_remove(str
>  }
>
>
> +/* Registers 0x50-0x5f are banked */
> +static inline void w83627hf_set_bank(struct w83627hf_data *data, u16 reg)
> +{
> +	if ((reg & 0x00f0) == 0x50) {
> +		outb_p(W83781D_REG_BANK, data->addr + W83781D_ADDR_REG_OFFSET);
> +		outb_p(reg >> 8, data->addr + W83781D_DATA_REG_OFFSET);
> +	}
> +}
> +
> +/* Not strictly necessary, but play it safe for now */
> +static inline void w83627hf_reset_bank(struct w83627hf_data *data, u16 reg)
> +{
> +	if (reg & 0xff00) {
> +		outb_p(W83781D_REG_BANK, data->addr + W83781D_ADDR_REG_OFFSET);
> +		outb_p(0, data->addr + W83781D_DATA_REG_OFFSET);
> +	}
> +}
> +
>  static int w83627hf_read_value(struct w83627hf_data *data, u16 reg)
>  {
>  	int res, word_sized;
> @@ -1345,12 +1363,7 @@ static int w83627hf_read_value(struct w8
>  		  && (((reg & 0x00ff) == 0x50)
>  		   || ((reg & 0x00ff) == 0x53)
>  		   || ((reg & 0x00ff) == 0x55));
> -	if (reg & 0xff00) {
> -		outb_p(W83781D_REG_BANK,
> -		       data->addr + W83781D_ADDR_REG_OFFSET);
> -		outb_p(reg >> 8,
> -		       data->addr + W83781D_DATA_REG_OFFSET);
> -	}
> +	w83627hf_set_bank(data, reg);
>  	outb_p(reg & 0xff, data->addr + W83781D_ADDR_REG_OFFSET);
>  	res = inb_p(data->addr + W83781D_DATA_REG_OFFSET);
>  	if (word_sized) {
> @@ -1360,11 +1373,7 @@ static int w83627hf_read_value(struct w8
>  		    (res << 8) + inb_p(data->addr +
>  				       W83781D_DATA_REG_OFFSET);
>  	}
> -	if (reg & 0xff00) {
> -		outb_p(W83781D_REG_BANK,
> -		       data->addr + W83781D_ADDR_REG_OFFSET);
> -		outb_p(0, data->addr + W83781D_DATA_REG_OFFSET);
> -	}
> +	w83627hf_reset_bank(data, reg);
>  	mutex_unlock(&data->lock);
>  	return res;
>  }
> @@ -1435,12 +1444,7 @@ static int w83627hf_write_value(struct w
>  		   || ((reg & 0xff00) == 0x200))
>  		  && (((reg & 0x00ff) == 0x53)
>  		   || ((reg & 0x00ff) == 0x55));
> -	if (reg & 0xff00) {
> -		outb_p(W83781D_REG_BANK,
> -		       data->addr + W83781D_ADDR_REG_OFFSET);
> -		outb_p(reg >> 8,
> -		       data->addr + W83781D_DATA_REG_OFFSET);
> -	}
> +	w83627hf_set_bank(data, reg);
>  	outb_p(reg & 0xff, data->addr + W83781D_ADDR_REG_OFFSET);
>  	if (word_sized) {
>  		outb_p(value >> 8,
> @@ -1450,11 +1454,7 @@ static int w83627hf_write_value(struct w
>  	}
>  	outb_p(value & 0xff,
>  	       data->addr + W83781D_DATA_REG_OFFSET);
> -	if (reg & 0xff00) {
> -		outb_p(W83781D_REG_BANK,
> -		       data->addr + W83781D_ADDR_REG_OFFSET);
> -		outb_p(0, data->addr + W83781D_DATA_REG_OFFSET);
> -	}
> +	w83627hf_reset_bank(data, reg);
>  	mutex_unlock(&data->lock);
>  	return 0;
>  }
>
>
> Patches currently in stable-queue which might be from [email protected] are
>
> queue-2.6.23/hwmon-lm87-disable-vid-when-it-should-be.patch
> queue-2.6.23/hwmon-lm87-fix-a-division-by-zero.patch
> queue-2.6.23/hwmon-w83627hf-don-t-assume-bank-0.patch
> queue-2.6.23/hwmon-w83627hf-fix-setting-fan-min-right-after-driver-load.patch
> -
> To unsubscribe from this list: send the line "unsubscribe stable-commits" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>


-- 
Thanks,
Oliver
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux