2013-09-25 07:37:21

by Wei Yongjun

[permalink] [raw]
Subject: [PATCH] mfd: twl6040: drop devm_free_irq of devm_ allocated irq

From: Wei Yongjun <[email protected]>

The devm_request_irq function allocates irq that is released
when a driver detaches. Thus, there is no reason to explicitly
call devm_free_irq in probe or remove functions.

Signed-off-by: Wei Yongjun <[email protected]>
---
drivers/mfd/twl6040.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/mfd/twl6040.c b/drivers/mfd/twl6040.c
index daf6694..7361dbe 100644
--- a/drivers/mfd/twl6040.c
+++ b/drivers/mfd/twl6040.c
@@ -619,7 +619,7 @@ static int twl6040_probe(struct i2c_client *client,
"twl6040_irq_th", twl6040);
if (ret) {
dev_err(twl6040->dev, "Thermal IRQ request failed: %d\n", ret);
- goto thirq_err;
+ goto readyirq_err;
}

/* dual-access registers controlled by I2C only */
@@ -659,14 +659,10 @@ static int twl6040_probe(struct i2c_client *client,
ret = mfd_add_devices(&client->dev, -1, twl6040->cells, children,
NULL, 0, NULL);
if (ret)
- goto mfd_err;
+ goto readyirq_err;

return 0;

-mfd_err:
- devm_free_irq(&client->dev, twl6040->irq_th, twl6040);
-thirq_err:
- devm_free_irq(&client->dev, twl6040->irq_ready, twl6040);
readyirq_err:
regmap_del_irq_chip(twl6040->irq, twl6040->irq_data);
gpio_err:
@@ -684,8 +680,6 @@ static int twl6040_remove(struct i2c_client *client)
if (twl6040->power_count)
twl6040_power(twl6040, 0);

- devm_free_irq(&client->dev, twl6040->irq_ready, twl6040);
- devm_free_irq(&client->dev, twl6040->irq_th, twl6040);
regmap_del_irq_chip(twl6040->irq, twl6040->irq_data);

mfd_remove_devices(&client->dev);


2013-09-25 10:08:13

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH] mfd: twl6040: drop devm_free_irq of devm_ allocated irq

On Wed, 25 Sep 2013, Wei Yongjun wrote:

> From: Wei Yongjun <[email protected]>
>
> The devm_request_irq function allocates irq that is released
> when a driver detaches. Thus, there is no reason to explicitly
> call devm_free_irq in probe or remove functions.
>
> Signed-off-by: Wei Yongjun <[email protected]>
> ---
> drivers/mfd/twl6040.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)

Applied, thanks.

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

2013-09-25 10:10:36

by Sachin Kamat

[permalink] [raw]
Subject: Re: [PATCH] mfd: twl6040: drop devm_free_irq of devm_ allocated irq

On 25 September 2013 13:07, Wei Yongjun <[email protected]> wrote:
> From: Wei Yongjun <[email protected]>
>
> - devm_free_irq(&client->dev, twl6040->irq_ready, twl6040);
> - devm_free_irq(&client->dev, twl6040->irq_th, twl6040);
> regmap_del_irq_chip(twl6040->irq, twl6040->irq_data);

Now that the freeing of irq will happen after regmap_del_irq_chip,
wouldn't this cause any ordering related issues?


--
With warm regards,
Sachin

2013-09-25 10:28:30

by Lee Jones

[permalink] [raw]
Subject: Re: [PATCH] mfd: twl6040: drop devm_free_irq of devm_ allocated irq

On Wed, 25 Sep 2013, Sachin Kamat wrote:

> On 25 September 2013 13:07, Wei Yongjun <[email protected]> wrote:
> > From: Wei Yongjun <[email protected]>
> >
> > - devm_free_irq(&client->dev, twl6040->irq_ready, twl6040);
> > - devm_free_irq(&client->dev, twl6040->irq_th, twl6040);
> > regmap_del_irq_chip(twl6040->irq, twl6040->irq_data);
>
> Now that the freeing of irq will happen after regmap_del_irq_chip,
> wouldn't this cause any ordering related issues?

I don't believe there is a requirement to free all associated IRQs
before deleting an irqchip.

--
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog