i2c-i801: Retry on lost arbitration
authorJean Delvare <khali@linux-fr.org>
Sun, 6 Dec 2009 16:06:27 +0000 (17:06 +0100)
committerJean Delvare <khali@linux-fr.org>
Sun, 6 Dec 2009 16:06:27 +0000 (17:06 +0100)
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>
drivers/i2c/busses/i2c-i801.c

index 55edcfe5b851abe5676d1d3c857eed93c233e458..df6ab553f975c98ed078475454d35a58d272aef7 100644 (file)
@@ -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);