mfd: Fix tc6387xb resource reclaim
authorAxel Lin <axel.lin@gmail.com>
Tue, 3 Aug 2010 05:44:00 +0000 (13:44 +0800)
committerSamuel Ortiz <sameo@linux.intel.com>
Thu, 12 Aug 2010 09:28:05 +0000 (11:28 +0200)
This patch includes below fixes:
1. add a missing iounmap in tc6387xb_probe() error path
2. fix resource reclaim in tc6387xb_remove()

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/tc6387xb.c

index 517f9bcdeaacb4b7435273e3e278d0b703da9cae..1bc71da5278c287c6a3d60799957fcbfd1acc31a 100644 (file)
@@ -201,6 +201,7 @@ static int tc6387xb_probe(struct platform_device *dev)
        if (!ret)
                return 0;
 
+       iounmap(tc6387xb->scr);
 err_ioremap:
        release_resource(&tc6387xb->rscr);
 err_resource:
@@ -213,12 +214,15 @@ err_no_irq:
 
 static int tc6387xb_remove(struct platform_device *dev)
 {
-       struct clk *clk32k = platform_get_drvdata(dev);
+       struct tc6387xb *tc6387xb = platform_get_drvdata(dev);
 
        mfd_remove_devices(&dev->dev);
-       clk_disable(clk32k);
-       clk_put(clk32k);
+       iounmap(tc6387xb->scr);
+       release_resource(&tc6387xb->rscr);
+       clk_disable(tc6387xb->clk32k);
+       clk_put(tc6387xb->clk32k);
        platform_set_drvdata(dev, NULL);
+       kfree(tc6387xb);
 
        return 0;
 }