]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/hwmon/smsc47b397.c
MIPS: R2: Fix local_irq_save()
[linux-2.6-omap-h63xx.git] / drivers / hwmon / smsc47b397.c
index 7fe71576dea4b7416e6b15ae387e56dc6238da1d..8663bbbe97f5a5cb287e61c61b7758bd38d4f491 100644 (file)
@@ -226,8 +226,9 @@ static int smsc47b397_detach_client(struct i2c_client *client)
 static int smsc47b397_detect(struct i2c_adapter *adapter);
 
 static struct i2c_driver smsc47b397_driver = {
-       .owner          = THIS_MODULE,
-       .name           = "smsc47b397",
+       .driver = {
+               .name   = "smsc47b397",
+       },
        .attach_adapter = smsc47b397_detect,
        .detach_client  = smsc47b397_detach_client,
 };
@@ -238,17 +239,17 @@ static int smsc47b397_detect(struct i2c_adapter *adapter)
        struct smsc47b397_data *data;
        int err = 0;
 
-       if (!request_region(address, SMSC_EXTENT, smsc47b397_driver.name)) {
+       if (!request_region(address, SMSC_EXTENT,
+                           smsc47b397_driver.driver.name)) {
                dev_err(&adapter->dev, "Region 0x%x already in use!\n",
                        address);
                return -EBUSY;
        }
 
-       if (!(data = kmalloc(sizeof(struct smsc47b397_data), GFP_KERNEL))) {
+       if (!(data = kzalloc(sizeof(struct smsc47b397_data), GFP_KERNEL))) {
                err = -ENOMEM;
                goto error_release;
        }
-       memset(data, 0x00, sizeof(struct smsc47b397_data));
 
        new_client = &data->client;
        i2c_set_clientdata(new_client, data);
@@ -299,7 +300,7 @@ static int __init smsc47b397_find(unsigned short *addr)
        superio_enter();
        id = superio_inb(SUPERIO_REG_DEVID);
 
-       if (id != 0x6f) {
+       if ((id != 0x6f) && (id != 0x81)) {
                superio_exit();
                return -ENODEV;
        }
@@ -310,8 +311,9 @@ static int __init smsc47b397_find(unsigned short *addr)
        *addr = (superio_inb(SUPERIO_REG_BASE_MSB) << 8)
                 |  superio_inb(SUPERIO_REG_BASE_LSB);
 
-       printk(KERN_INFO "smsc47b397: found SMSC LPC47B397-NC "
-               "(base address 0x%04x, revision %u)\n", *addr, rev);
+       printk(KERN_INFO "smsc47b397: found SMSC %s "
+               "(base address 0x%04x, revision %u)\n",
+               id == 0x81 ? "SCH5307-NS" : "LPC47B397-NC", *addr, rev);
 
        superio_exit();
        return 0;