mfd: intel_soc_pmic_crc: Use devm_regmap_add_irq_chip()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 1 Aug 2022 11:42:05 +0000 (14:42 +0300)
committerLee Jones <lee@kernel.org>
Wed, 28 Sep 2022 15:09:49 +0000 (16:09 +0100)
Use devm_regmap_add_irq_chip() to simplify the code.

While at it, replace -1 magic parameter by PLATFORM_DEVID_NONE when
calling mfd_add_devices().

Note, the mfd_add_devices() left in non-devm variant here due to
potentially increased churn while wrapping pwm_remove_table().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://lore.kernel.org/r/20220801114211.36267-4-andriy.shevchenko@linux.intel.com
drivers/mfd/intel_soc_pmic_crc.c

index c4e6456..64cdd43 100644 (file)
@@ -189,10 +189,9 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,
 
        pmic->irq = i2c->irq;
 
-       ret = regmap_add_irq_chip(pmic->regmap, pmic->irq,
-                                 config->irq_flags | IRQF_ONESHOT,
-                                 0, config->irq_chip,
-                                 &pmic->irq_chip_data);
+       ret = devm_regmap_add_irq_chip(dev, pmic->regmap, pmic->irq,
+                                      config->irq_flags | IRQF_ONESHOT,
+                                      0, config->irq_chip, &pmic->irq_chip_data);
        if (ret)
                return ret;
 
@@ -207,26 +206,17 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,
        irq_domain_update_bus_token(regmap_irq_get_domain(pmic->irq_chip_data),
                                    DOMAIN_BUS_NEXUS);
 
-       ret = mfd_add_devices(dev, -1, config->cell_dev,
+       ret = mfd_add_devices(dev, PLATFORM_DEVID_NONE, config->cell_dev,
                              config->n_cell_devs, NULL, 0,
                              regmap_irq_get_domain(pmic->irq_chip_data));
        if (ret)
-               goto err_del_irq_chip;
+               pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
 
-       return 0;
-
-err_del_irq_chip:
-       pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
-       regmap_del_irq_chip(pmic->irq, pmic->irq_chip_data);
        return ret;
 }
 
 static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c)
 {
-       struct intel_soc_pmic *pmic = dev_get_drvdata(&i2c->dev);
-
-       regmap_del_irq_chip(pmic->irq, pmic->irq_chip_data);
-
        /* remove crc-pwm lookup table */
        pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));