Fix the device address decoding. The lowest 3 bits are ignored, and the chip decodes all 8 addresses, not only the 2 it needs. Signed-off-by: Jean Delvare --- drivers/hwmon/f71805f.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- linux-2.6.19-rc6.orig/drivers/hwmon/f71805f.c 2006-11-21 09:31:56.000000000 +0100 +++ linux-2.6.19-rc6/drivers/hwmon/f71805f.c 2006-11-22 10:22:57.000000000 +0100 @@ -102,9 +102,9 @@ * ISA constants */ -#define REGION_LENGTH 2 -#define ADDR_REG_OFFSET 0 -#define DATA_REG_OFFSET 1 +#define REGION_LENGTH 8 +#define ADDR_REG_OFFSET 5 +#define DATA_REG_OFFSET 6 /* * Registers @@ -1359,6 +1359,7 @@ "skipping\n"); goto exit; } + *address &= ~(REGION_LENGTH - 1); /* Ignore 3 LSB */ err = 0; printk(KERN_INFO DRVNAME ": Found %s chip at %#x, revision %u\n",