mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-15 16:53:54 +08:00
mfd: max77686: Use devm_mfd_add_devices and devm_regmap_add_irq_chip
Use devm_mfd_add_devices() for adding MFD child devices and devm_regmap_add_irq_chip() for IRQ chip registration. This reduces the error code path and .remove callback for removing MFD child devices and deleting IRQ chip data. Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
This commit is contained in:
parent
0bbfb87c56
commit
1a5422c9e5
@ -230,37 +230,23 @@ static int max77686_i2c_probe(struct i2c_client *i2c,
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = regmap_add_irq_chip(max77686->regmap, max77686->irq,
|
ret = devm_regmap_add_irq_chip(&i2c->dev, max77686->regmap,
|
||||||
IRQF_TRIGGER_FALLING | IRQF_ONESHOT |
|
max77686->irq,
|
||||||
IRQF_SHARED, 0, irq_chip,
|
IRQF_TRIGGER_FALLING | IRQF_ONESHOT |
|
||||||
&max77686->irq_data);
|
IRQF_SHARED, 0, irq_chip,
|
||||||
|
&max77686->irq_data);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&i2c->dev, "failed to add PMIC irq chip: %d\n", ret);
|
dev_err(&i2c->dev, "failed to add PMIC irq chip: %d\n", ret);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = mfd_add_devices(max77686->dev, -1, cells, n_devs, NULL, 0, NULL);
|
ret = devm_mfd_add_devices(max77686->dev, -1, cells, n_devs, NULL,
|
||||||
|
0, NULL);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(&i2c->dev, "failed to add MFD devices: %d\n", ret);
|
dev_err(&i2c->dev, "failed to add MFD devices: %d\n", ret);
|
||||||
goto err_del_irqc;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
err_del_irqc:
|
|
||||||
regmap_del_irq_chip(max77686->irq, max77686->irq_data);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int max77686_i2c_remove(struct i2c_client *i2c)
|
|
||||||
{
|
|
||||||
struct max77686_dev *max77686 = i2c_get_clientdata(i2c);
|
|
||||||
|
|
||||||
mfd_remove_devices(max77686->dev);
|
|
||||||
|
|
||||||
regmap_del_irq_chip(max77686->irq, max77686->irq_data);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,7 +303,6 @@ static struct i2c_driver max77686_i2c_driver = {
|
|||||||
.of_match_table = of_match_ptr(max77686_pmic_dt_match),
|
.of_match_table = of_match_ptr(max77686_pmic_dt_match),
|
||||||
},
|
},
|
||||||
.probe = max77686_i2c_probe,
|
.probe = max77686_i2c_probe,
|
||||||
.remove = max77686_i2c_remove,
|
|
||||||
.id_table = max77686_i2c_id,
|
.id_table = max77686_i2c_id,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user