i2c: i801: Add device ID for Intel Wildcat Point PCH
[pandora-kernel.git] / drivers / i2c / busses / i2c-i801.c
index ab26840..4da450f 100644 (file)
 */
 
 /*
-  Supports the following Intel I/O Controller Hubs (ICH):
-
-                                  I/O                     Block   I2C
-                                  region  SMBus   Block   proc.   block
-  Chip name             PCI ID    size    PEC     buffer  call    read
-  ----------------------------------------------------------------------
-  82801AA  (ICH)        0x2413     16      no      no      no      no
-  82801AB  (ICH0)       0x2423     16      no      no      no      no
-  82801BA  (ICH2)       0x2443     16      no      no      no      no
-  82801CA  (ICH3)       0x2483     32     soft     no      no      no
-  82801DB  (ICH4)       0x24c3     32     hard     yes     no      no
-  82801E   (ICH5)       0x24d3     32     hard     yes     yes     yes
-  6300ESB               0x25a4     32     hard     yes     yes     yes
-  82801F   (ICH6)       0x266a     32     hard     yes     yes     yes
-  6310ESB/6320ESB       0x269b     32     hard     yes     yes     yes
-  82801G   (ICH7)       0x27da     32     hard     yes     yes     yes
-  82801H   (ICH8)       0x283e     32     hard     yes     yes     yes
-  82801I   (ICH9)       0x2930     32     hard     yes     yes     yes
-  EP80579 (Tolapai)     0x5032     32     hard     yes     yes     yes
-  ICH10                 0x3a30     32     hard     yes     yes     yes
-  ICH10                 0x3a60     32     hard     yes     yes     yes
-  5/3400 Series (PCH)   0x3b30     32     hard     yes     yes     yes
-  6 Series (PCH)        0x1c22     32     hard     yes     yes     yes
-  Patsburg (PCH)        0x1d22     32     hard     yes     yes     yes
-  Patsburg (PCH) IDF    0x1d70     32     hard     yes     yes     yes
-  Patsburg (PCH) IDF    0x1d71     32     hard     yes     yes     yes
-  Patsburg (PCH) IDF    0x1d72     32     hard     yes     yes     yes
-  DH89xxCC (PCH)        0x2330     32     hard     yes     yes     yes
-  Panther Point (PCH)   0x1e22     32     hard     yes     yes     yes
-
-  Features supported by this driver:
-  Software PEC                     no
-  Hardware PEC                     yes
-  Block buffer                     yes
-  Block process call transaction   no
-  I2C block read transaction       yes  (doesn't use the block buffer)
-  Slave mode                       no
-
-  See the file Documentation/i2c/busses/i2c-i801 for details.
-*/
+ * Supports the following Intel I/O Controller Hubs (ICH):
+ *
+ *                                     I/O                     Block   I2C
+ *                                     region  SMBus   Block   proc.   block
+ * Chip name                   PCI ID  size    PEC     buffer  call    read
+ * ---------------------------------------------------------------------------
+ * 82801AA (ICH)               0x2413  16      no      no      no      no
+ * 82801AB (ICH0)              0x2423  16      no      no      no      no
+ * 82801BA (ICH2)              0x2443  16      no      no      no      no
+ * 82801CA (ICH3)              0x2483  32      soft    no      no      no
+ * 82801DB (ICH4)              0x24c3  32      hard    yes     no      no
+ * 82801E (ICH5)               0x24d3  32      hard    yes     yes     yes
+ * 6300ESB                     0x25a4  32      hard    yes     yes     yes
+ * 82801F (ICH6)               0x266a  32      hard    yes     yes     yes
+ * 6310ESB/6320ESB             0x269b  32      hard    yes     yes     yes
+ * 82801G (ICH7)               0x27da  32      hard    yes     yes     yes
+ * 82801H (ICH8)               0x283e  32      hard    yes     yes     yes
+ * 82801I (ICH9)               0x2930  32      hard    yes     yes     yes
+ * EP80579 (Tolapai)           0x5032  32      hard    yes     yes     yes
+ * ICH10                       0x3a30  32      hard    yes     yes     yes
+ * ICH10                       0x3a60  32      hard    yes     yes     yes
+ * 5/3400 Series (PCH)         0x3b30  32      hard    yes     yes     yes
+ * 6 Series (PCH)              0x1c22  32      hard    yes     yes     yes
+ * Patsburg (PCH)              0x1d22  32      hard    yes     yes     yes
+ * Patsburg (PCH) IDF          0x1d70  32      hard    yes     yes     yes
+ * Patsburg (PCH) IDF          0x1d71  32      hard    yes     yes     yes
+ * Patsburg (PCH) IDF          0x1d72  32      hard    yes     yes     yes
+ * DH89xxCC (PCH)              0x2330  32      hard    yes     yes     yes
+ * Panther Point (PCH)         0x1e22  32      hard    yes     yes     yes
+ * Lynx Point (PCH)            0x8c22  32      hard    yes     yes     yes
+ * Lynx Point-LP (PCH)         0x9c22  32      hard    yes     yes     yes
+ * Avoton (SOC)                        0x1f3c  32      hard    yes     yes     yes
+ * Wellsburg (PCH)             0x8d22  32      hard    yes     yes     yes
+ * Wellsburg (PCH) MS          0x8d7d  32      hard    yes     yes     yes
+ * Wellsburg (PCH) MS          0x8d7e  32      hard    yes     yes     yes
+ * Wellsburg (PCH) MS          0x8d7f  32      hard    yes     yes     yes
+ * Coleto Creek (PCH)          0x23b0  32      hard    yes     yes     yes
+ * Wildcat Point (PCH)         0x8ca2  32      hard    yes     yes     yes
+ * Wildcat Point-LP (PCH)      0x9ca2  32      hard    yes     yes     yes
+ * BayTrail (SOC)              0x0f12  32      hard    yes     yes     yes
+ *
+ * Features supported by this driver:
+ * Software PEC                                no
+ * Hardware PEC                                yes
+ * Block buffer                                yes
+ * Block process call transaction      no
+ * I2C block read transaction          yes (doesn't use the block buffer)
+ * Slave mode                          no
+ *
+ * See the file Documentation/i2c/busses/i2c-i801 for details.
+ */
 
 #include <linux/module.h>
 #include <linux/pci.h>
                                 SMBHSTSTS_INTR)
 
 /* Older devices have their ID defined in <linux/pci_ids.h> */
-#define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS  0x1c22
-#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS     0x1d22
+#define PCI_DEVICE_ID_INTEL_BAYTRAIL_SMBUS             0x0f12
+#define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS          0x1c22
+#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS             0x1d22
 /* Patsburg also has three 'Integrated Device Function' SMBus controllers */
-#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0        0x1d70
-#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1        0x1d71
-#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2        0x1d72
-#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS 0x1e22
-#define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS     0x2330
-#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS        0x3b30
+#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0                0x1d70
+#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1                0x1d71
+#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2                0x1d72
+#define PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS         0x1e22
+#define PCI_DEVICE_ID_INTEL_AVOTON_SMBUS               0x1f3c
+#define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS             0x2330
+#define PCI_DEVICE_ID_INTEL_COLETOCREEK_SMBUS          0x23b0
+#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS                0x3b30
+#define PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS            0x8c22
+#define PCI_DEVICE_ID_INTEL_WILDCATPOINT_SMBUS         0x8ca2
+#define PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS            0x8d22
+#define PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS0                0x8d7d
+#define PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS1                0x8d7e
+#define PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS2                0x8d7f
+#define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS         0x9c22
+#define PCI_DEVICE_ID_INTEL_WILDCATPOINT_LP_SMBUS      0x9ca2
 
 struct i801_priv {
        struct i2c_adapter adapter;
@@ -633,6 +655,17 @@ static const struct pci_device_id i801_ids[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_AVOTON_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS0) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS1) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS2) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_COLETOCREEK_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WILDCATPOINT_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_WILDCATPOINT_LP_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_BAYTRAIL_SMBUS) },
        { 0, }
 };
 
@@ -780,6 +813,9 @@ static int __devinit i801_probe(struct pci_dev *dev,
        case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0:
        case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1:
        case PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2:
+       case PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS0:
+       case PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS1:
+       case PCI_DEVICE_ID_INTEL_WELLSBURG_SMBUS_MS2:
                priv->features |= FEATURE_IDF;
                /* fall through */
        default: