Skip to content

Commit

Permalink
mfd: da9052: Fix genirq abuse
Browse files Browse the repository at this point in the history
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: Mark Brown <broonie@opensource.wolfsonmicro.com>
  • Loading branch information
Mark Brown committed May 13, 2012
1 parent dd775ae commit 8614419
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 5 deletions.
8 changes: 3 additions & 5 deletions drivers/mfd/da9052-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -681,8 +680,7 @@ int __devinit da9052_device_init(struct da9052 *da9052, u8 chip_id)

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);
}

Expand Down
1 change: 1 addition & 0 deletions include/linux/mfd/da9052/da9052.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 8614419

Please sign in to comment.