aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/i2c
diff options
context:
space:
mode:
authorDaniel Kurtz <djkurtz@chromium.org>2012-07-24 08:13:58 -0400
committerJean Delvare <khali@endymion.delvare>2012-07-24 08:13:58 -0400
commit636752bcb5177a301d0266270661581de8624828 (patch)
tree6277793c24520d0f08a126554e773605a4b4f2ac /Documentation/i2c
parent6cad93c4bbd62ecfa2e1b3a95c1ac4f6f27764c7 (diff)
i2c-i801: Enable IRQ for SMBus transactions
Add a new 'feature' to i2c-i801 to enable using PCI interrupts. When the feature is enabled, then an isr is installed for the device's PCI IRQ. An I2C/SMBus transaction is always terminated by one of the following interrupt sources: FAILED, BUS_ERR, DEV_ERR, or on success: INTR. When the isr fires for one of these cases, it sets the ->status variable and wakes up the waitq. The waitq then saves off the status code, and clears ->status (in preparation for some future transaction). The SMBus controller generates an INTR irq at the end of each transaction where INTREN was set in the HST_CNT register. No locking is needed around accesses to priv->status since all writes to it are serialized: it is only ever set once in the isr at the end of a transaction, and cleared while no interrupts can occur. In addition, the I2C adapter lock guarantees that entire I2C transactions for a single adapter are always serialized. For this patch, the INTREN bit is set only for SMBus block, byte and word transactions, but not for I2C reads or writes. The use of the DS (BYTE_DONE) interrupt with byte-by-byte I2C transactions is implemented in a subsequent patch. The interrupt feature has only been enabled for COUGARPOINT hardware. In addition, it is disabled if SMBus is using the SMI# interrupt. Signed-off-by: Daniel Kurtz <djkurtz@chromium.org> Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'Documentation/i2c')
-rw-r--r--Documentation/i2c/busses/i2c-i80113
1 files changed, 10 insertions, 3 deletions
diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801
index 71f55bbcefc8..615142da4ef6 100644
--- a/Documentation/i2c/busses/i2c-i801
+++ b/Documentation/i2c/busses/i2c-i801
@@ -38,9 +38,10 @@ Module Parameters
38Disable selected features normally supported by the device. This makes it 38Disable selected features normally supported by the device. This makes it
39possible to work around possible driver or hardware bugs if the feature in 39possible to work around possible driver or hardware bugs if the feature in
40question doesn't work as intended for whatever reason. Bit values: 40question doesn't work as intended for whatever reason. Bit values:
41 1 disable SMBus PEC 41 0x01 disable SMBus PEC
42 2 disable the block buffer 42 0x02 disable the block buffer
43 8 disable the I2C block read functionality 43 0x08 disable the I2C block read functionality
44 0x10 don't use interrupts
44 45
45 46
46Description 47Description
@@ -86,6 +87,12 @@ SMBus 2.0 Support
86The 82801DB (ICH4) and later chips support several SMBus 2.0 features. 87The 82801DB (ICH4) and later chips support several SMBus 2.0 features.
87 88
88 89
90Interrupt Support
91-----------------
92
93PCI interrupt support is supported on the 82801EB (ICH5) and later chips.
94
95
89Hidden ICH SMBus 96Hidden ICH SMBus
90---------------- 97----------------
91 98