@@ -12,69 +12,69 @@
/*
* 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
- * Braswell (SOC) 0x2292 32 hard yes yes yes
- * Sunrise Point-H (PCH) 0xa123 32 hard yes yes yes
- * Sunrise Point-LP (PCH) 0x9d23 32 hard yes yes yes
- * DNV (SOC) 0x19df 32 hard yes yes yes
- * Emmitsburg (PCH) 0x1bc9 32 hard yes yes yes
- * Broxton (SOC) 0x5ad4 32 hard yes yes yes
- * Lewisburg (PCH) 0xa1a3 32 hard yes yes yes
- * Lewisburg Supersku (PCH) 0xa223 32 hard yes yes yes
- * Kaby Lake PCH-H (PCH) 0xa2a3 32 hard yes yes yes
- * Gemini Lake (SOC) 0x31d4 32 hard yes yes yes
- * Cannon Lake-H (PCH) 0xa323 32 hard yes yes yes
- * Cannon Lake-LP (PCH) 0x9da3 32 hard yes yes yes
- * Cedar Fork (PCH) 0x18df 32 hard yes yes yes
- * Ice Lake-LP (PCH) 0x34a3 32 hard yes yes yes
- * Ice Lake-N (PCH) 0x38a3 32 hard yes yes yes
- * Comet Lake (PCH) 0x02a3 32 hard yes yes yes
- * Comet Lake-H (PCH) 0x06a3 32 hard yes yes yes
- * Elkhart Lake (PCH) 0x4b23 32 hard yes yes yes
- * Tiger Lake-LP (PCH) 0xa0a3 32 hard yes yes yes
- * Tiger Lake-H (PCH) 0x43a3 32 hard yes yes yes
- * Jasper Lake (SOC) 0x4da3 32 hard yes yes yes
- * Comet Lake-V (PCH) 0xa3a3 32 hard yes yes yes
- * Alder Lake-S (PCH) 0x7aa3 32 hard yes yes yes
- * Alder Lake-P (PCH) 0x51a3 32 hard yes yes yes
- * Alder Lake-M (PCH) 0x54a3 32 hard yes yes yes
+ * I/O Block
+ * region SMBus Block proc.
+ * Chip name PCI ID size PEC buffer call
+ * -------------------------------------------------------------------
+ * 82801AA (ICH) 0x2413 16 no no no
+ * 82801AB (ICH0) 0x2423 16 no no no
+ * 82801BA (ICH2) 0x2443 16 no no no
+ * 82801CA (ICH3) 0x2483 32 soft no no
+ * 82801DB (ICH4) 0x24c3 32 hard yes no
+ * 82801E (ICH5) 0x24d3 32 hard yes yes
+ * 6300ESB 0x25a4 32 hard yes yes
+ * 82801F (ICH6) 0x266a 32 hard yes yes
+ * 6310ESB/6320ESB 0x269b 32 hard yes yes
+ * 82801G (ICH7) 0x27da 32 hard yes yes
+ * 82801H (ICH8) 0x283e 32 hard yes yes
+ * 82801I (ICH9) 0x2930 32 hard yes yes
+ * EP80579 (Tolapai) 0x5032 32 hard yes yes
+ * ICH10 0x3a30 32 hard yes yes
+ * ICH10 0x3a60 32 hard yes yes
+ * 5/3400 Series (PCH) 0x3b30 32 hard yes yes
+ * 6 Series (PCH) 0x1c22 32 hard yes yes
+ * Patsburg (PCH) 0x1d22 32 hard yes yes
+ * Patsburg (PCH) IDF 0x1d70 32 hard yes yes
+ * Patsburg (PCH) IDF 0x1d71 32 hard yes yes
+ * Patsburg (PCH) IDF 0x1d72 32 hard yes yes
+ * DH89xxCC (PCH) 0x2330 32 hard yes yes
+ * Panther Point (PCH) 0x1e22 32 hard yes yes
+ * Lynx Point (PCH) 0x8c22 32 hard yes yes
+ * Lynx Point-LP (PCH) 0x9c22 32 hard yes yes
+ * Avoton (SOC) 0x1f3c 32 hard yes yes
+ * Wellsburg (PCH) 0x8d22 32 hard yes yes
+ * Wellsburg (PCH) MS 0x8d7d 32 hard yes yes
+ * Wellsburg (PCH) MS 0x8d7e 32 hard yes yes
+ * Wellsburg (PCH) MS 0x8d7f 32 hard yes yes
+ * Coleto Creek (PCH) 0x23b0 32 hard yes yes
+ * Wildcat Point (PCH) 0x8ca2 32 hard yes yes
+ * Wildcat Point-LP (PCH) 0x9ca2 32 hard yes yes
+ * BayTrail (SOC) 0x0f12 32 hard yes yes
+ * Braswell (SOC) 0x2292 32 hard yes yes
+ * Sunrise Point-H (PCH) 0xa123 32 hard yes yes
+ * Sunrise Point-LP (PCH) 0x9d23 32 hard yes yes
+ * DNV (SOC) 0x19df 32 hard yes yes
+ * Emmitsburg (PCH) 0x1bc9 32 hard yes yes
+ * Broxton (SOC) 0x5ad4 32 hard yes yes
+ * Lewisburg (PCH) 0xa1a3 32 hard yes yes
+ * Lewisburg Supersku (PCH) 0xa223 32 hard yes yes
+ * Kaby Lake PCH-H (PCH) 0xa2a3 32 hard yes yes
+ * Gemini Lake (SOC) 0x31d4 32 hard yes yes
+ * Cannon Lake-H (PCH) 0xa323 32 hard yes yes
+ * Cannon Lake-LP (PCH) 0x9da3 32 hard yes yes
+ * Cedar Fork (PCH) 0x18df 32 hard yes yes
+ * Ice Lake-LP (PCH) 0x34a3 32 hard yes yes
+ * Ice Lake-N (PCH) 0x38a3 32 hard yes yes
+ * Comet Lake (PCH) 0x02a3 32 hard yes yes
+ * Comet Lake-H (PCH) 0x06a3 32 hard yes yes
+ * Elkhart Lake (PCH) 0x4b23 32 hard yes yes
+ * Tiger Lake-LP (PCH) 0xa0a3 32 hard yes yes
+ * Tiger Lake-H (PCH) 0x43a3 32 hard yes yes
+ * Jasper Lake (SOC) 0x4da3 32 hard yes yes
+ * Comet Lake-V (PCH) 0xa3a3 32 hard yes yes
+ * Alder Lake-S (PCH) 0x7aa3 32 hard yes yes
+ * Alder Lake-P (PCH) 0x51a3 32 hard yes yes
+ * Alder Lake-M (PCH) 0x54a3 32 hard yes yes
*
* Features supported by this driver:
* Software PEC no
@@ -168,7 +168,7 @@
#define I801_WORD_DATA 0x0C
#define I801_PROC_CALL 0x10 /* unimplemented */
#define I801_BLOCK_DATA 0x14
-#define I801_I2C_BLOCK_DATA 0x18 /* ICH5 and later */
+#define I801_I2C_BLOCK_DATA 0x18
#define I801_BLOCK_PROC_CALL 0x1C
/* I801 Host Control register bits */
@@ -979,11 +979,8 @@ static const struct i2c_algorithm smbus_algorithm = {
.functionality = i801_func,
};
-#define FEATURES_ICH5 (FEATURE_BLOCK_PROC | FEATURE_I2C_BLOCK_READ | \
- FEATURE_IRQ | FEATURE_SMBUS_PEC | \
- FEATURE_BLOCK_BUFFER | FEATURE_HOST_NOTIFY)
-#define FEATURES_ICH4 (FEATURE_SMBUS_PEC | FEATURE_BLOCK_BUFFER | \
- FEATURE_HOST_NOTIFY)
+#define FEATURES_ICH4 (FEATURE_SMBUS_PEC | FEATURE_BLOCK_BUFFER | FEATURE_HOST_NOTIFY)
+#define FEATURES_ICH5 (FEATURES_ICH4 | FEATURE_BLOCK_PROC)
static const struct pci_device_id i801_ids[] = {
{ PCI_DEVICE_DATA(INTEL, 82801AA_3, 0) },
@@ -1670,7 +1667,8 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
mutex_init(&priv->acpi_lock);
priv->pci_dev = dev;
- priv->features = id->driver_data;
+ priv->features = FEATURE_IRQ | FEATURE_I2C_BLOCK_READ;
+ priv->features |= id->driver_data;
/* Disable features on user request */
for (i = 0; i < ARRAY_SIZE(i801_feature_names); i++) {
According to the datasheets interrupt mode and i2c block read are supported on all chip versions. Therefore set both feature flags for all chip versions. Note: Don't remove the two feature flags as such (at least for now), so that in case of a problem users can use the disable_features module parameter to disable a problematic feature. Patch is based solely on the datasheets. I don't have old enough test hw, therefore the patch is compile-tested only. Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> --- drivers/i2c/busses/i2c-i801.c | 138 +++++++++++++++++----------------- 1 file changed, 68 insertions(+), 70 deletions(-)