summaryrefslogtreecommitdiffstats
path: root/drivers/i2c/busses/i2c-i801.c
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2009-12-06 17:06:27 +0100
committerJean Delvare <khali@linux-fr.org>2009-12-06 17:06:27 +0100
commit7e2193a8f942a80eef4ae87e3850615450966d0a (patch)
tree00c0b46a1ce90845e28571713ce6e5cd8770532b /drivers/i2c/busses/i2c-i801.c
parenti2c: Remove big kernel lock from i2cdev_open (diff)
downloadlinux-7e2193a8f942a80eef4ae87e3850615450966d0a.tar.xz
linux-7e2193a8f942a80eef4ae87e3850615450966d0a.zip
i2c-i801: Retry on lost arbitration
The Intel 82801 is sometimes used on systems with a BMC connected. The BMC can access the SMBus, resulting in lost arbitration for the 82801. We should let i2c-core retry transactions for us in this case. Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/i2c/busses/i2c-i801.c')
-rw-r--r--drivers/i2c/busses/i2c-i801.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index 55edcfe5b851..df6ab553f975 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -767,6 +767,9 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id
/* set up the sysfs linkage to our parent device */
i801_adapter.dev.parent = &dev->dev;
+ /* Retry up to 3 times on lost arbitration */
+ i801_adapter.retries = 3;
+
snprintf(i801_adapter.name, sizeof(i801_adapter.name),
"SMBus I801 adapter at %04lx", i801_smba);
err = i2c_add_adapter(&i801_adapter);