]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
i2c: piix4: Register SPDs
authorThomas Weißschuh <linux@weissschuh.net>
Tue, 9 Jul 2024 17:35:36 +0000 (19:35 +0200)
committerAndi Shyti <andi.shyti@kernel.org>
Sat, 20 Jul 2024 11:29:10 +0000 (13:29 +0200)
The piix4 I2C bus can carry SPDs, register them if present.
Only look on bus 0, as this is where the SPDs seem to be located.

Only the first 8 slots are supported. If the system has more,
then these will not be visible.

The AUX bus can not be probed as on some platforms it reports all
devices present and all reads return "0".
This would allow the ee1004 to be probed incorrectly.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
drivers/i2c/busses/Kconfig
drivers/i2c/busses/i2c-piix4.c

index 3e32fb882101c0c84d7f3b0f53fa3ec473f3a00d..a22f9125322a723b31925fd86b26ef0b8d3b8a19 100644 (file)
@@ -196,6 +196,7 @@ config I2C_ISMT
 config I2C_PIIX4
        tristate "Intel PIIX4 and compatible (ATI/AMD/Serverworks/Broadcom/SMSC)"
        depends on PCI && HAS_IOPORT
+       select I2C_SMBUS
        help
          If you say yes to this option, support will be included for the Intel
          PIIX4 family of mainboard I2C interfaces.  Specifically, the following
index 84aa18d1003b51ca3d3dd22fbfb4c0db958314fe..4e32d57ae0bf370c7d25cf969948e3e49184f0c4 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/stddef.h>
 #include <linux/ioport.h>
 #include <linux/i2c.h>
+#include <linux/i2c-smbus.h>
 #include <linux/slab.h>
 #include <linux/dmi.h>
 #include <linux/acpi.h>
@@ -982,6 +983,14 @@ static int piix4_add_adapter(struct pci_dev *dev, unsigned short smba,
                return retval;
        }
 
+       /*
+        * The AUX bus can not be probed as on some platforms it reports all
+        * devices present and all reads return "0".
+        * This would allow the ee1004 to be probed incorrectly.
+        */
+       if (port == 0)
+               i2c_register_spd(adap);
+
        *padap = adap;
        return 0;
 }