i2c: piix4: Detect secondary SMBus controller on AMD AM4 chipsets
authorAdam Honse <calcprogrammer1@gmail.com>
Fri, 10 Apr 2020 20:48:44 +0000 (15:48 -0500)
committerWolfram Sang <wsa@the-dreams.de>
Wed, 15 Apr 2020 10:22:52 +0000 (12:22 +0200)
The AMD X370 and other AM4 chipsets (A/B/X 3/4/5 parts) and Threadripper
equivalents have a secondary SMBus controller at I/O port address
0x0B20.  This bus is used by several manufacturers to control
motherboard RGB lighting via embedded controllers.  I have been using
this bus in my OpenRGB project to control the Aura RGB on many
motherboards and ASRock also uses this bus for their Polychrome RGB
controller.

I am not aware of any CZ-compatible platforms which do not have the
second SMBus channel.  All of AMD's AM4- and Threadripper- series
chipsets that OpenRGB users have tested appear to have this secondary
bus.  I also noticed this secondary bus is present on older AMD
platforms including my FM1 home server.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202587
Signed-off-by: Adam Honse <calcprogrammer1@gmail.com>
Reviewed-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-piix4.c

index 30ded64..69740a4 100644 (file)
@@ -977,7 +977,8 @@ static int piix4_probe(struct pci_dev *dev, const struct pci_device_id *id)
        }
 
        if (dev->vendor == PCI_VENDOR_ID_AMD &&
-           dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS) {
+           (dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS ||
+            dev->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS)) {
                retval = piix4_setup_sb800(dev, id, 1);
        }