Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e548579 authored by Shawn Guo's avatar Shawn Guo
Browse files

video: mxsfb: use devm_* managed functions



Use devm_* managed functions to make code a little cleaner.

Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
parent d260a7af
Loading
Loading
Loading
Loading
+16 −34
Original line number Diff line number Diff line
@@ -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);