Commit e7a4f368 authored by Tom Rini's avatar Tom Rini

[PATCH] I2C: Fix for i2c-piix4 with on some boards

Hello all.  On some boards with an Intel PIIX4 the BIOS (such as the one
found on a Force CPCI-735) will incorrectly configure the chipset, and
leaves a register in an undefined state causing i2c to behave strangley.
The following patches (first vs lm_sensors-2.8.0 and then vs
2.6.0-test3)  fixes the issue.
parent 3f16e892
...@@ -160,6 +160,15 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id ...@@ -160,6 +160,15 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
} }
pci_read_config_byte(PIIX4_dev, SMBHSTCFG, &temp); pci_read_config_byte(PIIX4_dev, SMBHSTCFG, &temp);
/* Some BIOS will set up the chipset incorrectly and leave a register
in an undefined state (causing I2C to act very strangely). */
if (temp & 0x02) {
printk("Fixed I2C problem on Force CPCI735\n");
temp = temp & 0xfd;
pci_write_config_byte(PIIX4_dev, SMBHSTCFG, temp);
}
/* If force_addr is set, we program the new address here. Just to make /* If force_addr is set, we program the new address here. Just to make
sure, we disable the PIIX4 first. */ sure, we disable the PIIX4 first. */
if (force_addr) { if (force_addr) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment