Merge branch 'i2c/for-5.12' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[linux-2.6-microblaze.git] / drivers / i2c / busses / i2c-i801.c
index 877fe37..4acee6f 100644 (file)
@@ -72,6 +72,7 @@
  * Jasper Lake (SOC)           0x4da3  32      hard    yes     yes     yes
  * Comet Lake-V (PCH)          0xa3a3  32      hard    yes     yes     yes
  * Alder Lake-S (PCH)          0x7aa3  32      hard    yes     yes     yes
+ * Alder Lake-P (PCH)          0x51a3  32      hard    yes     yes     yes
  *
  * Features supported by this driver:
  * Software PEC                                no
 #define PCI_DEVICE_ID_INTEL_TIGERLAKE_H_SMBUS          0x43a3
 #define PCI_DEVICE_ID_INTEL_ELKHART_LAKE_SMBUS         0x4b23
 #define PCI_DEVICE_ID_INTEL_JASPER_LAKE_SMBUS          0x4da3
+#define PCI_DEVICE_ID_INTEL_ALDER_LAKE_P_SMBUS         0x51a3
 #define PCI_DEVICE_ID_INTEL_BROXTON_SMBUS              0x5ad4
 #define PCI_DEVICE_ID_INTEL_ALDER_LAKE_S_SMBUS         0x7aa3
 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS            0x8c22
@@ -1084,6 +1086,7 @@ static const struct pci_device_id i801_ids[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TIGERLAKE_H_SMBUS) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_JASPER_LAKE_SMBUS) },
        { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ALDER_LAKE_S_SMBUS) },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ALDER_LAKE_P_SMBUS) },
        { 0, }
 };
 
@@ -1433,7 +1436,7 @@ static int i801_add_mux(struct i801_priv *priv)
        const struct i801_mux_config *mux_config;
        struct i2c_mux_gpio_platform_data gpio_data;
        struct gpiod_lookup_table *lookup;
-       int err, i;
+       int i;
 
        if (!priv->mux_drvdata)
                return 0;
@@ -1473,22 +1476,17 @@ static int i801_add_mux(struct i801_priv *priv)
                                PLATFORM_DEVID_NONE, &gpio_data,
                                sizeof(struct i2c_mux_gpio_platform_data));
        if (IS_ERR(priv->mux_pdev)) {
-               err = PTR_ERR(priv->mux_pdev);
                gpiod_remove_lookup_table(lookup);
-               priv->mux_pdev = NULL;
                dev_err(dev, "Failed to register i2c-mux-gpio device\n");
-               return err;
        }
 
-       return 0;
+       return PTR_ERR_OR_ZERO(priv->mux_pdev);
 }
 
 static void i801_del_mux(struct i801_priv *priv)
 {
-       if (priv->mux_pdev)
-               platform_device_unregister(priv->mux_pdev);
-       if (priv->lookup)
-               gpiod_remove_lookup_table(priv->lookup);
+       platform_device_unregister(priv->mux_pdev);
+       gpiod_remove_lookup_table(priv->lookup);
 }
 
 static unsigned int i801_get_adapter_class(struct i801_priv *priv)
@@ -1772,6 +1770,7 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
        case PCI_DEVICE_ID_INTEL_JASPER_LAKE_SMBUS:
        case PCI_DEVICE_ID_INTEL_EBG_SMBUS:
        case PCI_DEVICE_ID_INTEL_ALDER_LAKE_S_SMBUS:
+       case PCI_DEVICE_ID_INTEL_ALDER_LAKE_P_SMBUS:
                priv->features |= FEATURE_BLOCK_PROC;
                priv->features |= FEATURE_I2C_BLOCK_READ;
                priv->features |= FEATURE_IRQ;