video: mxsfb: use devm_* managed functions
Use devm_* managed functions to make code a little cleaner. Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
This commit is contained in:
parent
d260a7af0f
commit
9e5485791b
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue