drivers/video/ep93xx-fb.c: use devm_ functions
The various devm_ functions allocate memory that is released when a driver detaches. This patch uses these functions for data that is allocated in the probe function of a platform device and is only freed in the remove function. Signed-off-by: Damien Cassou <damien.cassou@lifl.fr> Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
This commit is contained in:
committed by
Florian Tobias Schandinat
parent
d5c0eed01c
commit
be86781497
@@ -529,7 +529,8 @@ static int __devinit ep93xxfb_probe(struct platform_device *pdev)
|
|||||||
* any of the framebuffer registers.
|
* any of the framebuffer registers.
|
||||||
*/
|
*/
|
||||||
fbi->res = res;
|
fbi->res = res;
|
||||||
fbi->mmio_base = ioremap(res->start, resource_size(res));
|
fbi->mmio_base = devm_ioremap(&pdev->dev, res->start,
|
||||||
|
resource_size(res));
|
||||||
if (!fbi->mmio_base) {
|
if (!fbi->mmio_base) {
|
||||||
err = -ENXIO;
|
err = -ENXIO;
|
||||||
goto failed_resource;
|
goto failed_resource;
|
||||||
@@ -553,20 +554,20 @@ static int __devinit ep93xxfb_probe(struct platform_device *pdev)
|
|||||||
if (err == 0) {
|
if (err == 0) {
|
||||||
dev_err(info->dev, "No suitable video mode found\n");
|
dev_err(info->dev, "No suitable video mode found\n");
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto failed_mode;
|
goto failed_resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mach_info->setup) {
|
if (mach_info->setup) {
|
||||||
err = mach_info->setup(pdev);
|
err = mach_info->setup(pdev);
|
||||||
if (err)
|
if (err)
|
||||||
goto failed_mode;
|
goto failed_resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ep93xxfb_check_var(&info->var, info);
|
err = ep93xxfb_check_var(&info->var, info);
|
||||||
if (err)
|
if (err)
|
||||||
goto failed_check;
|
goto failed_check;
|
||||||
|
|
||||||
fbi->clk = clk_get(info->dev, NULL);
|
fbi->clk = devm_clk_get(&pdev->dev, NULL);
|
||||||
if (IS_ERR(fbi->clk)) {
|
if (IS_ERR(fbi->clk)) {
|
||||||
err = PTR_ERR(fbi->clk);
|
err = PTR_ERR(fbi->clk);
|
||||||
fbi->clk = NULL;
|
fbi->clk = NULL;
|
||||||
@@ -578,19 +579,15 @@ static int __devinit ep93xxfb_probe(struct platform_device *pdev)
|
|||||||
|
|
||||||
err = register_framebuffer(info);
|
err = register_framebuffer(info);
|
||||||
if (err)
|
if (err)
|
||||||
goto failed;
|
goto failed_check;
|
||||||
|
|
||||||
dev_info(info->dev, "registered. Mode = %dx%d-%d\n",
|
dev_info(info->dev, "registered. Mode = %dx%d-%d\n",
|
||||||
info->var.xres, info->var.yres, info->var.bits_per_pixel);
|
info->var.xres, info->var.yres, info->var.bits_per_pixel);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
failed:
|
|
||||||
clk_put(fbi->clk);
|
|
||||||
failed_check:
|
failed_check:
|
||||||
if (fbi->mach_info->teardown)
|
if (fbi->mach_info->teardown)
|
||||||
fbi->mach_info->teardown(pdev);
|
fbi->mach_info->teardown(pdev);
|
||||||
failed_mode:
|
|
||||||
iounmap(fbi->mmio_base);
|
|
||||||
failed_resource:
|
failed_resource:
|
||||||
ep93xxfb_dealloc_videomem(info);
|
ep93xxfb_dealloc_videomem(info);
|
||||||
failed_videomem:
|
failed_videomem:
|
||||||
@@ -609,8 +606,6 @@ static int __devexit ep93xxfb_remove(struct platform_device *pdev)
|
|||||||
|
|
||||||
unregister_framebuffer(info);
|
unregister_framebuffer(info);
|
||||||
clk_disable(fbi->clk);
|
clk_disable(fbi->clk);
|
||||||
clk_put(fbi->clk);
|
|
||||||
iounmap(fbi->mmio_base);
|
|
||||||
ep93xxfb_dealloc_videomem(info);
|
ep93xxfb_dealloc_videomem(info);
|
||||||
fb_dealloc_cmap(&info->cmap);
|
fb_dealloc_cmap(&info->cmap);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user