Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 86144194 authored by Mark Brown's avatar Mark Brown
Browse files

mfd: da9052: Fix genirq abuse



Rather than using the pointer passed back by the regmap API (or complaining
because that wasn't actually being set) the da9052 driver was having some
fun and games peering through genirq and regmap internals. Fix the driver
to use the API as expected.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent dd775ae2
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -659,12 +659,11 @@ int __devinit da9052_device_init(struct da9052 *da9052, u8 chip_id)
	ret = regmap_add_irq_chip(da9052->regmap, da9052->chip_irq,
				  IRQF_TRIGGER_LOW | IRQF_ONESHOT,
				  da9052->irq_base, &da9052_regmap_irq_chip,
				  NULL);
				  &da9052->irq_data);
	if (ret < 0)
		goto regmap_err;

	desc = irq_to_desc(da9052->chip_irq);
	da9052->irq_base = regmap_irq_chip_get_base(desc->action->dev_id);
	da9052->irq_base = regmap_irq_chip_get_base(da9052->irq_data);

	ret = mfd_add_devices(da9052->dev, -1, da9052_subdev_info,
			      ARRAY_SIZE(da9052_subdev_info), NULL, 0);
@@ -681,8 +680,7 @@ regmap_err:

void da9052_device_exit(struct da9052 *da9052)
{
	regmap_del_irq_chip(da9052->chip_irq,
			    irq_get_irq_data(da9052->irq_base)->chip_data);
	regmap_del_irq_chip(da9052->chip_irq, da9052->irq_data);
	mfd_remove_devices(da9052->dev);
}

+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ struct da9052 {
	struct regmap *regmap;

	int irq_base;
	struct regmap_irq_chip_data *irq_data;
	u8 chip_id;

	int chip_irq;