diff options
author | Giel van Schijndel <me@mortis.eu> | 2010-05-27 17:58:43 (GMT) |
---|---|---|
committer | Jean Delvare <khali@linux-fr.org> | 2010-05-27 17:58:43 (GMT) |
commit | 729d273aa7c86eb1406ade4eadf249cff188bf9a (patch) | |
tree | c79a0072d3b71c762db8ddbefa68ed54ea68ffa5 | |
parent | bd328acdc6160b95f5d7127a9df3172892f35627 (diff) | |
download | linux-729d273aa7c86eb1406ade4eadf249cff188bf9a.tar.xz |
hwmon: (f71882fg) Acquire I/O regions while we're working with them
Acquire the I/O region for the Super I/O chip while we're working on it.
Signed-off-by: Giel van Schijndel <me@mortis.eu>
Cc: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
-rw-r--r-- | drivers/hwmon/f71882fg.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/hwmon/f71882fg.c b/drivers/hwmon/f71882fg.c index ca34e5c..537841e 100644 --- a/drivers/hwmon/f71882fg.c +++ b/drivers/hwmon/f71882fg.c @@ -2178,6 +2178,13 @@ static int __init f71882fg_find(int sioaddr, unsigned short *address, int err = -ENODEV; u16 devid; + /* Don't step on other drivers' I/O space by accident */ + if (!request_region(sioaddr, 2, DRVNAME)) { + printk(KERN_ERR DRVNAME ": I/O address 0x%04x already in use\n", + (int)sioaddr); + return -EBUSY; + } + superio_enter(sioaddr); devid = superio_inw(sioaddr, SIO_REG_MANID); @@ -2232,6 +2239,7 @@ static int __init f71882fg_find(int sioaddr, unsigned short *address, (int)superio_inb(sioaddr, SIO_REG_DEVREV)); exit: superio_exit(sioaddr); + release_region(sioaddr, 2); return err; } |