lkml.org 
[lkml]   [2010]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] hwmon: f71882fg: properly acquire I/O regions while probing
    On Wed, Mar 24, 2010 at 10:29:42AM +0100, Jean Delvare wrote:
    > On Tue, 23 Mar 2010 15:12:15 +0100, Giel van Schijndel wrote:
    >> static u16 f71882fg_read_temp(struct f71882fg_data *data, int nr)
    >> @@ -2184,6 +2178,13 @@ static int __init f71882fg_find(int sioaddr, unsigned short *address,
    >> int err = -ENODEV;
    >> u16 devid;
    >>
    >> + /* Don't step on other driver's 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 -EIO;
    >
    > This is the wrong error code. This isn't an I/O error. You want -EBUSY.

    Ack. New patch follows this line.
    ========================================================================
    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>
    ---
    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;
    }

    --
    1.6.4.4
    --
    Met vriendelijke groet,
    With kind regards,
    Giel van Schijndel
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2010-03-24 10:37    [W:0.023 / U:1.296 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site