]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/hwmon/it87.c
Merge branches 'release' and 'ppc-workaround' into release
[linux-2.6-omap-h63xx.git] / drivers / hwmon / it87.c
index 6a182e14cf589d59f7a5d8e244b8aa9c34c0409d..ad6c8a319903eeb8bf9fcd08950b0b58ddeba605 100644 (file)
@@ -2,6 +2,14 @@
     it87.c - Part of lm_sensors, Linux kernel modules for hardware
              monitoring.
 
+    The IT8705F is an LPC-based Super I/O part that contains UARTs, a
+    parallel port, an IR port, a MIDI port, a floppy controller, etc., in
+    addition to an Environment Controller (Enhanced Hardware Monitor and
+    Fan Controller)
+
+    This driver supports only the Environment Controller in the IT8705F and
+    similar parts.  The other devices are supported by different drivers.
+
     Supports: IT8705F  Super I/O chip w/LPC interface
               IT8712F  Super I/O chip w/LPC interface
               IT8716F  Super I/O chip w/LPC interface
@@ -118,9 +126,15 @@ static int fix_pwm_polarity;
 /* Length of ISA address segment */
 #define IT87_EXTENT 8
 
-/* Where are the ISA address/data registers relative to the base address */
-#define IT87_ADDR_REG_OFFSET 5
-#define IT87_DATA_REG_OFFSET 6
+/* Length of ISA address segment for Environmental Controller */
+#define IT87_EC_EXTENT 2
+
+/* Offset of EC registers from ISA base address */
+#define IT87_EC_OFFSET 5
+
+/* Where are the ISA address/data registers relative to the EC base address */
+#define IT87_ADDR_REG_OFFSET 0
+#define IT87_DATA_REG_OFFSET 1
 
 /*----- The IT87 registers -----*/
 
@@ -968,10 +982,10 @@ static int __devinit it87_probe(struct platform_device *pdev)
        };
 
        res = platform_get_resource(pdev, IORESOURCE_IO, 0);
-       if (!request_region(res->start, IT87_EXTENT, DRVNAME)) {
+       if (!request_region(res->start, IT87_EC_EXTENT, DRVNAME)) {
                dev_err(dev, "Failed to request region 0x%lx-0x%lx\n",
                        (unsigned long)res->start,
-                       (unsigned long)(res->start + IT87_EXTENT - 1));
+                       (unsigned long)(res->start + IT87_EC_EXTENT - 1));
                err = -EBUSY;
                goto ERROR0;
        }
@@ -1124,7 +1138,7 @@ ERROR2:
        platform_set_drvdata(pdev, NULL);
        kfree(data);
 ERROR1:
-       release_region(res->start, IT87_EXTENT);
+       release_region(res->start, IT87_EC_EXTENT);
 ERROR0:
        return err;
 }
@@ -1137,7 +1151,7 @@ static int __devexit it87_remove(struct platform_device *pdev)
        sysfs_remove_group(&pdev->dev.kobj, &it87_group);
        sysfs_remove_group(&pdev->dev.kobj, &it87_group_opt);
 
-       release_region(data->addr, IT87_EXTENT);
+       release_region(data->addr, IT87_EC_EXTENT);
        platform_set_drvdata(pdev, NULL);
        kfree(data);
 
@@ -1402,8 +1416,8 @@ static int __init it87_device_add(unsigned short address,
                                  const struct it87_sio_data *sio_data)
 {
        struct resource res = {
-               .start  = address ,
-               .end    = address + IT87_EXTENT - 1,
+               .start  = address + IT87_EC_OFFSET,
+               .end    = address + IT87_EC_OFFSET + IT87_EC_EXTENT - 1,
                .name   = DRVNAME,
                .flags  = IORESOURCE_IO,
        };