aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses/i2c-i801.c
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2012-07-24 08:13:59 -0400
committerJean Delvare <khali@endymion.delvare>2012-07-24 08:13:59 -0400
commit29b608540b030d38a978c972cbe99d40efdb7267 (patch)
treedf817d0745398435629f4bb8b7c8334137e18f7f /drivers/i2c/busses/i2c-i801.c
parent636752bcb5177a301d0266270661581de8624828 (diff)
i2c-i801: Enable interrupts on ICH5/7/8/9/10
Enable interrupts on more devices. ICH5, ICH7(-M) and ICH10 have been tested to work OK. ICH8 and ICH9 are expected to work just fine as they are very close to ICH7 and ICH10. Ultimately we want to enable this feature on at least every device since the ICH5, but for now we limit the exposure. We'll enable it for other devices if we don't get negative feedback. As a bonus, let the user know when interrupts are used. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Daniel Kurtz <djkurtz@chromium.org>
Diffstat (limited to 'drivers/i2c/busses/i2c-i801.c')
-rw-r--r--drivers/i2c/busses/i2c-i801.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index bcce18dfcc39..003196fffd2c 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -863,8 +863,14 @@ static int __devinit i801_probe(struct pci_dev *dev,
863 break; 863 break;
864 } 864 }
865 865
866 /* IRQ processing only tested on CougarPoint PCH */ 866 /* IRQ processing tested on CougarPoint PCH, ICH5, ICH7-M and ICH10 */
867 if (dev->device == PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS) 867 if (dev->device == PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS ||
868 dev->device == PCI_DEVICE_ID_INTEL_82801EB_3 ||
869 dev->device == PCI_DEVICE_ID_INTEL_ICH7_17 ||
870 dev->device == PCI_DEVICE_ID_INTEL_ICH8_5 ||
871 dev->device == PCI_DEVICE_ID_INTEL_ICH9_6 ||
872 dev->device == PCI_DEVICE_ID_INTEL_ICH10_4 ||
873 dev->device == PCI_DEVICE_ID_INTEL_ICH10_5)
868 priv->features |= FEATURE_IRQ; 874 priv->features |= FEATURE_IRQ;
869 875
870 /* Disable features on user request */ 876 /* Disable features on user request */
@@ -918,8 +924,6 @@ static int __devinit i801_probe(struct pci_dev *dev,
918 dev_dbg(&dev->dev, "SMBus using interrupt SMI#\n"); 924 dev_dbg(&dev->dev, "SMBus using interrupt SMI#\n");
919 /* Disable SMBus interrupt feature if SMBus using SMI# */ 925 /* Disable SMBus interrupt feature if SMBus using SMI# */
920 priv->features &= ~FEATURE_IRQ; 926 priv->features &= ~FEATURE_IRQ;
921 } else {
922 dev_dbg(&dev->dev, "SMBus using PCI Interrupt\n");
923 } 927 }
924 928
925 /* Clear special mode bits */ 929 /* Clear special mode bits */
@@ -937,6 +941,7 @@ static int __devinit i801_probe(struct pci_dev *dev,
937 dev->irq, err); 941 dev->irq, err);
938 goto exit_release; 942 goto exit_release;
939 } 943 }
944 dev_info(&dev->dev, "SMBus using PCI Interrupt\n");
940 } 945 }
941 946
942 /* set up the sysfs linkage to our parent device */ 947 /* set up the sysfs linkage to our parent device */