regulator: wm831x-ldo: Convert to devm_request_threaded_irq
PATCH 1/2 regulator: wm831x-ldo: Convert to devm_request_threaded_irq
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/wm831x-ldo.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/regulator/wm831x-ldo.c +3 -6
@@ -322,9 +322,9 @@ static __devinit int wm831x_gp_ldo_probe(struct platform_device *pdev) } irq =wm831x_irq (wm831x,platform_get_irq_byname (pdev,"UV" )); - ret =request_threaded_irq (irq,NULL , wm831x_ldo_uv_irq, -IRQF_TRIGGER_RISING , ldo->name, - ldo); + ret =devm_request_threaded_irq (&pdev->dev, irq,NULL , + wm831x_ldo_uv_irq,IRQF_TRIGGER_RISING , + ldo->name, ldo);if (ret !=0 ) {dev_err (&pdev->dev,"Failed to request UV IRQ %d: %d\n" , irq, ret);
@@ -346,9 +346,6 @@ static __devexit int wm831x_gp_ldo_remove(struct platform_device *pdev)struct wm831x_ldo *ldo =platform_get_drvdata (pdev);platform_set_drvdata (pdev,NULL ); - -free_irq (wm831x_irq (ldo->wm831x, -platform_get_irq_byname (pdev,"UV" )), ldo);regulator_unregister (ldo->regulator);return 0 ;
Signature · 1 line
1.7.9.5
PATCH 2/2 regulator: wm831x-isink: Convert to devm_request_threaded_irq
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/wm831x-isink.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
drivers/regulator/wm831x-isink.c +3 -5
@@ -203,8 +203,9 @@ static __devinit int wm831x_isink_probe(struct platform_device *pdev) } irq =wm831x_irq (wm831x,platform_get_irq (pdev,0 )); - ret =request_threaded_irq (irq,NULL , wm831x_isink_irq, -IRQF_TRIGGER_RISING , isink->name, isink); + ret =devm_request_threaded_irq (&pdev->dev, irq,NULL , + wm831x_isink_irq,IRQF_TRIGGER_RISING , + isink->name, isink);if (ret !=0 ) {dev_err (&pdev->dev,"Failed to request ISINK IRQ %d: %d\n" , irq, ret);
@@ -226,9 +227,6 @@ static __devexit int wm831x_isink_remove(struct platform_device *pdev)struct wm831x_isink *isink =platform_get_drvdata (pdev);platform_set_drvdata (pdev,NULL ); - -free_irq (wm831x_irq (isink->wm831x,platform_get_irq (pdev,0 )), isink); -regulator_unregister (isink->regulator);return 0 ;
Signature · 1 line
1.7.9.5
Quoted 1 line · Axel Lin
Signed-off-by Axel Lin <[email protected]>
No, this (and generally a large proportion of possible usages of devm_request_threaded_irq()) is a bad idea - we need to ensure that the interrupt cannot fire when we're not in a position to handle it which in thi case means after the regulator is unregistered. Since we're not doing anything to explicitly quiesce the interrupt other than free it we need to ensure that the free_irq() happens strictly before the regulator is unregistered.