regmap: irq: add devm apis for regmap_{add,del}_irq_chip
authorLaxman Dewangan <ldewangan@nvidia.com>
Wed, 10 Feb 2016 08:59:50 +0000 (14:29 +0530)
committerMark Brown <broonie@kernel.org>
Mon, 15 Feb 2016 19:40:13 +0000 (19:40 +0000)
commit800c3a0e683601c4ede490e8525852e63b0f6615
treee691d94a8dda7c6d045f2884b23d99b25c4e353a
parent46189518d73080f4e4ea269a3b0f4b8583f486bd
regmap: irq: add devm apis for regmap_{add,del}_irq_chip

Add device managed APIs for regmap_add_irq_chip() and
regmap_del_irq_chip() so that it can be managed by
device framework for freeing it.

This helps on following:
1. Maintaining the sequence of resource allocation and deallocation
regmap_add_irq_chip(&d);
devm_requested_threaded_irq(virq)

On free path:
regmap_del_irq_chip(d);
and then removing the irq registration.

On this case, regmap irq is deleted before the irq is free.
This force to use normal irq registration.

By using devm apis, the sequence can be maintain properly:
devm_regmap_add_irq_chip(&d);
devm_requested_threaded_irq(virq);

and resource deallocation will be done in reverse order
by device framework.

2. No need to delete the regmap_irq_chip in error path or remove
   callback and hence there is less code on this path.

Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap-irq.c
include/linux/regmap.h