Pull acpi_bus_register_driver into release branch
[pandora-kernel.git] / drivers / i2c / busses / i2c-i801.c
index 4f63195..dfca749 100644 (file)
@@ -32,6 +32,7 @@
     ICH6               266A
     ICH7               27DA
     ESB2               269B
+    ICH8               283E
     This driver supports several versions of Intel's I/O Controller Hubs (ICH).
     For SMBus support, they are similar to the PIIX4 and are part
     of Intel's '810' and other chipsets.
@@ -468,8 +469,7 @@ static s32 i801_access(struct i2c_adapter * adap, u16 addr,
                return -1;
        }
 
-       if (hwpec)
-               outb_p(1, SMBAUXCTL);   /* enable hardware PEC */
+       outb_p(hwpec, SMBAUXCTL);       /* enable/disable hardware PEC */
 
        if(block)
                ret = i801_block_transaction(data, read_write, size, hwpec);
@@ -478,8 +478,10 @@ static s32 i801_access(struct i2c_adapter * adap, u16 addr,
                ret = i801_transaction();
        }
 
+       /* Some BIOSes don't like it when PEC is enabled at reboot or resume
+          time, so we forcibly disable it after every transaction. */
        if (hwpec)
-               outb_p(0, SMBAUXCTL);   /* disable hardware PEC */
+               outb_p(0, SMBAUXCTL);
 
        if(block)
                return ret;
@@ -531,6 +533,7 @@ static struct pci_device_id i801_ids[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH6_16) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH7_17) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_17) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ICH8_5) },
        { 0, }
 };
 
@@ -560,7 +563,6 @@ static void __devexit i801_remove(struct pci_dev *dev)
 }
 
 static struct pci_driver i801_driver = {
-       .owner          = THIS_MODULE,
        .name           = "i801_smbus",
        .id_table       = i801_ids,
        .probe          = i801_probe,