Commit 0bbfb87c authored by Laxman Dewangan's avatar Laxman Dewangan Committed by Lee Jones
Browse files

mfd: as3722: 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: default avatarLaxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent ae9810e2
Loading
Loading
Loading
Loading
+9 −22
Original line number Diff line number Diff line
@@ -385,7 +385,8 @@ static int as3722_i2c_probe(struct i2c_client *i2c,
		return ret;

	irq_flags = as3722->irq_flags | IRQF_ONESHOT;
	ret = regmap_add_irq_chip(as3722->regmap, as3722->chip_irq,
	ret = devm_regmap_add_irq_chip(as3722->dev, as3722->regmap,
				       as3722->chip_irq,
				       irq_flags, -1, &as3722_irq_chip,
				       &as3722->irq_data);
	if (ret < 0) {
@@ -395,33 +396,20 @@ static int as3722_i2c_probe(struct i2c_client *i2c,

	ret = as3722_configure_pullups(as3722);
	if (ret < 0)
		goto scrub;
		return ret;

	ret = mfd_add_devices(&i2c->dev, -1, as3722_devs,
	ret = devm_mfd_add_devices(&i2c->dev, -1, as3722_devs,
				   ARRAY_SIZE(as3722_devs), NULL, 0,
				   regmap_irq_get_domain(as3722->irq_data));
	if (ret) {
		dev_err(as3722->dev, "Failed to add MFD devices: %d\n", ret);
		goto scrub;
		return ret;
	}

	device_init_wakeup(as3722->dev, true);

	dev_dbg(as3722->dev, "AS3722 core driver initialized successfully\n");
	return 0;

scrub:
	regmap_del_irq_chip(as3722->chip_irq, as3722->irq_data);
	return ret;
}

static int as3722_i2c_remove(struct i2c_client *i2c)
{
	struct as3722 *as3722 = i2c_get_clientdata(i2c);

	mfd_remove_devices(as3722->dev);
	regmap_del_irq_chip(as3722->chip_irq, as3722->irq_data);
	return 0;
}

static int __maybe_unused as3722_i2c_suspend(struct device *dev)
@@ -470,7 +458,6 @@ static struct i2c_driver as3722_i2c_driver = {
		.pm = &as3722_pm_ops,
	},
	.probe = as3722_i2c_probe,
	.remove = as3722_i2c_remove,
	.id_table = as3722_i2c_id,
};