aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Hubbard <david.c.hubbard@gmail.com>2007-06-24 05:17:09 -0400
committerMark M. Hoffman <mhoffman@lightlink.com>2007-07-19 14:22:17 -0400
commit475ef85512900dcb87435e13656c1f5e724de379 (patch)
tree21a831861be0ae4253e75baa74b741d73a5797e5
parent1ea6dd3840e5a22924d78299fee018c82e425d80 (diff)
hwmon/w83627ehf: Add error messages for two error cases
If the Super-I/O device is disabled, it is likely the BIOS has a good reason for leaving it disabled, so give a warning when enabling it -- it's not likely to be wired correctly or be able to give good data. Also, if the Super-I/O device is configured with an address of 0, the driver refuses to initialize it. Signed-off-by: David Hubbard <david.c.hubbard@gmail.com> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
-rw-r--r--drivers/hwmon/w83627ehf.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
index 2157c3424de1..e615b8378fc3 100644
--- a/drivers/hwmon/w83627ehf.c
+++ b/drivers/hwmon/w83627ehf.c
@@ -1387,14 +1387,19 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr,
1387 | superio_inb(sioaddr, SIO_REG_ADDR + 1); 1387 | superio_inb(sioaddr, SIO_REG_ADDR + 1);
1388 *addr = val & IOREGION_ALIGNMENT; 1388 *addr = val & IOREGION_ALIGNMENT;
1389 if (*addr == 0) { 1389 if (*addr == 0) {
1390 printk(KERN_ERR DRVNAME ": Refusing to enable a Super-I/O "
1391 "device with a base I/O port 0.\n");
1390 superio_exit(sioaddr); 1392 superio_exit(sioaddr);
1391 return -ENODEV; 1393 return -ENODEV;
1392 } 1394 }
1393 1395
1394 /* Activate logical device if needed */ 1396 /* Activate logical device if needed */
1395 val = superio_inb(sioaddr, SIO_REG_ENABLE); 1397 val = superio_inb(sioaddr, SIO_REG_ENABLE);
1396 if (!(val & 0x01)) 1398 if (!(val & 0x01)) {
1399 printk(KERN_WARNING DRVNAME ": Forcibly enabling Super-I/O. "
1400 "Sensor is probably unusable.\n");
1397 superio_outb(sioaddr, SIO_REG_ENABLE, val | 0x01); 1401 superio_outb(sioaddr, SIO_REG_ENABLE, val | 0x01);
1402 }
1398 1403
1399 superio_exit(sioaddr); 1404 superio_exit(sioaddr);
1400 pr_info(DRVNAME ": Found %s chip at %#x\n", sio_name, *addr); 1405 pr_info(DRVNAME ": Found %s chip at %#x\n", sio_name, *addr);