On 4 June 2014 13:42, Ben Dooks <ben.dooks@xxxxxxxxxxxxxxx> wrote: > Use devm_request_threaded_irq() for the host interrupt handlers so we > do not have to worry about freeing them on exit or error. Tidies up the > exit path code for the driver. > > Signed-off-by: Ben Dooks <ben.dooks@xxxxxxxxxxxxxxx> Signed-off-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> > --- > drivers/mmc/host/sh_mmcif.c | 26 ++++++++------------------ > 1 file changed, 8 insertions(+), 18 deletions(-) > > diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c > index ae278a5..cc6858d 100644 > --- a/drivers/mmc/host/sh_mmcif.c > +++ b/drivers/mmc/host/sh_mmcif.c > @@ -1439,17 +1439,19 @@ static int sh_mmcif_probe(struct platform_device *pdev) > sh_mmcif_writel(host->addr, MMCIF_CE_INT_MASK, MASK_ALL); > > name = irq[1] < 0 ? dev_name(&pdev->dev) : "sh_mmc:error"; > - ret = request_threaded_irq(irq[0], sh_mmcif_intr, sh_mmcif_irqt, 0, name, host); > + ret = devm_request_threaded_irq(&pdev->dev, irq[0], sh_mmcif_intr, > + sh_mmcif_irqt, 0, name, host); > if (ret) { > dev_err(&pdev->dev, "request_irq error (%s)\n", name); > - goto ereqirq0; > + goto err_irq; > } > if (irq[1] >= 0) { > - ret = request_threaded_irq(irq[1], sh_mmcif_intr, sh_mmcif_irqt, > - 0, "sh_mmc:int", host); > + ret = devm_request_threaded_irq(&pdev->dev, irq[1], > + sh_mmcif_intr, sh_mmcif_irqt, > + 0, "sh_mmc:int", host); > if (ret) { > dev_err(&pdev->dev, "request_irq error (sh_mmc:int)\n"); > - goto ereqirq1; > + goto err_irq; > } > } > > @@ -1476,11 +1478,7 @@ static int sh_mmcif_probe(struct platform_device *pdev) > > emmcaddh: > erqcd: > - if (irq[1] >= 0) > - free_irq(irq[1], host); > -ereqirq1: > - free_irq(irq[0], host); > -ereqirq0: > +err_irq: > pm_runtime_suspend(&pdev->dev); > err_clk: > clk_disable_unprepare(host->hclk); > @@ -1494,7 +1492,6 @@ err_host: > static int sh_mmcif_remove(struct platform_device *pdev) > { > struct sh_mmcif_host *host = platform_get_drvdata(pdev); > - int irq[2]; > > host->dying = true; > clk_prepare_enable(host->hclk); > @@ -1512,13 +1509,6 @@ static int sh_mmcif_remove(struct platform_device *pdev) > */ > cancel_delayed_work_sync(&host->timeout_work); > > - irq[0] = platform_get_irq(pdev, 0); > - irq[1] = platform_get_irq(pdev, 1); > - > - free_irq(irq[0], host); > - if (irq[1] >= 0) > - free_irq(irq[1], host); > - > clk_disable_unprepare(host->hclk); > mmc_free_host(host->mmc); > pm_runtime_put_sync(&pdev->dev); > -- > 2.0.0.rc2 > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html