video: mxsfb: use devm_* managed functions
authorShawn Guo <shawn.guo@linaro.org>
Wed, 13 Mar 2013 05:37:11 +0000 (13:37 +0800)
committerShawn Guo <shawn.guo@linaro.org>
Thu, 4 Apr 2013 13:22:41 +0000 (21:22 +0800)
Use devm_* managed functions to make code a little cleaner.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
drivers/video/mxsfb.c

index 45169cbaba6e288e714e2ce414dff1061a4569af..69fb3f1d1e1286b91b57bc7e2924217d51fb1213 100644 (file)
@@ -802,23 +802,19 @@ static int mxsfb_probe(struct platform_device *pdev)
                return -ENODEV;
        }
 
-       if (!request_mem_region(res->start, resource_size(res), pdev->name))
-               return -EBUSY;
-
        fb_info = framebuffer_alloc(sizeof(struct mxsfb_info), &pdev->dev);
        if (!fb_info) {
                dev_err(&pdev->dev, "Failed to allocate fbdev\n");
-               ret = -ENOMEM;
-               goto error_alloc_info;
+               return -ENOMEM;
        }
 
        host = to_imxfb_host(fb_info);
 
-       host->base = ioremap(res->start, resource_size(res));
-       if (!host->base) {
+       host->base = devm_ioremap_resource(&pdev->dev, res);
+       if (IS_ERR(host->base)) {
                dev_err(&pdev->dev, "ioremap failed\n");
-               ret = -ENOMEM;
-               goto error_ioremap;
+               ret = PTR_ERR(host->base);
+               goto fb_release;
        }
 
        host->pdev = pdev;
@@ -829,13 +825,13 @@ static int mxsfb_probe(struct platform_device *pdev)
        pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
        if (IS_ERR(pinctrl)) {
                ret = PTR_ERR(pinctrl);
-               goto error_getpin;
+               goto fb_release;
        }
 
-       host->clk = clk_get(&host->pdev->dev, NULL);
+       host->clk = devm_clk_get(&host->pdev->dev, NULL);
        if (IS_ERR(host->clk)) {
                ret = PTR_ERR(host->clk);
-               goto error_getclock;
+               goto fb_release;
        }
 
        panel_enable = of_get_named_gpio_flags(pdev->dev.of_node,
@@ -850,14 +846,15 @@ static int mxsfb_probe(struct platform_device *pdev)
                        dev_err(&pdev->dev,
                                "failed to request gpio %d: %d\n",
                                panel_enable, ret);
-                       goto error_panel_enable;
+                       goto fb_release;
                }
        }
 
-       fb_info->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL);
+       fb_info->pseudo_palette = devm_kzalloc(&pdev->dev, sizeof(u32) * 16,
+                                              GFP_KERNEL);
        if (!fb_info->pseudo_palette) {
                ret = -ENOMEM;
-               goto error_pseudo_pallette;
+               goto fb_release;
        }
 
        INIT_LIST_HEAD(&fb_info->modelist);
@@ -866,7 +863,7 @@ static int mxsfb_probe(struct platform_device *pdev)
 
        ret = mxsfb_init_fbinfo(host);
        if (ret != 0)
-               goto error_init_fb;
+               goto fb_release;
 
        for (i = 0; i < pdata->mode_count; i++)
                fb_add_videomode(&pdata->mode_list[i], &fb_info->modelist);
@@ -883,7 +880,7 @@ static int mxsfb_probe(struct platform_device *pdev)
        ret = register_framebuffer(fb_info);
        if (ret != 0) {
                dev_err(&pdev->dev,"Failed to register framebuffer\n");
-               goto error_register;
+               goto fb_destroy;
        }
 
        if (!host->enabled) {
@@ -896,22 +893,12 @@ static int mxsfb_probe(struct platform_device *pdev)
 
        return 0;
 
-error_register:
+fb_destroy:
        if (host->enabled)
                clk_disable_unprepare(host->clk);
        fb_destroy_modelist(&fb_info->modelist);
-error_init_fb:
-       kfree(fb_info->pseudo_palette);
-error_pseudo_pallette:
-error_panel_enable:
-       clk_put(host->clk);
-error_getclock:
-error_getpin:
-       iounmap(host->base);
-error_ioremap:
+fb_release:
        framebuffer_release(fb_info);
-error_alloc_info:
-       release_mem_region(res->start, resource_size(res));
 
        return ret;
 }
@@ -920,19 +907,14 @@ static int mxsfb_remove(struct platform_device *pdev)
 {
        struct fb_info *fb_info = platform_get_drvdata(pdev);
        struct mxsfb_info *host = to_imxfb_host(fb_info);
-       struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
        if (host->enabled)
                mxsfb_disable_controller(fb_info);
 
        unregister_framebuffer(fb_info);
-       kfree(fb_info->pseudo_palette);
        mxsfb_free_videomem(host);
-       iounmap(host->base);
-       clk_put(host->clk);
 
        framebuffer_release(fb_info);
-       release_mem_region(res->start, resource_size(res));
 
        platform_set_drvdata(pdev, NULL);