All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joonyoung Shim <jy0922.shim@samsung.com>
To: dri-devel@lists.freedesktop.org
Cc: sw0312.kim@samsung.com
Subject: [PATCH 4/9] drm/exynos: update fb_info via only one function
Date: Tue, 01 Sep 2015 16:22:50 +0900	[thread overview]
Message-ID: <1441092175-18187-4-git-send-email-jy0922.shim@samsung.com> (raw)
In-Reply-To: <1441092175-18187-1-git-send-email-jy0922.shim@samsung.com>

This patch moves codes to update fb_info into exynos_drm_fbdev_update(),
so fb_info is updated via only one function.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c | 29 +++++++++++++----------------
 1 file changed, 13 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 4ef8739..133cf5f 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -78,12 +78,22 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
 				   struct drm_fb_helper_surface_size *sizes,
 				   struct exynos_drm_gem_obj *obj)
 {
-	struct fb_info *fbi = helper->fbdev;
+	struct fb_info *fbi;
 	struct drm_framebuffer *fb = helper->fb;
 	unsigned int size = fb->width * fb->height * (fb->bits_per_pixel >> 3);
 	unsigned int nr_pages;
 	unsigned long offset;
 
+	fbi = drm_fb_helper_alloc_fbi(helper);
+	if (IS_ERR(fbi)) {
+		DRM_ERROR("failed to allocate fb info.\n");
+		return PTR_ERR(fbi);
+	}
+
+	fbi->par = helper;
+	fbi->flags = FBINFO_FLAG_DEFAULT;
+	fbi->fbops = &exynos_drm_fb_ops;
+
 	drm_fb_helper_fill_fix(fbi, fb->pitches[0], fb->depth);
 	drm_fb_helper_fill_var(fbi, helper, sizes->fb_width, sizes->fb_height);
 
@@ -93,6 +103,7 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
 			pgprot_writecombine(PAGE_KERNEL));
 	if (!obj->kvaddr) {
 		DRM_ERROR("failed to map pages to kernel space.\n");
+		drm_fb_helper_release_fbi(helper);
 		return -EIO;
 	}
 
@@ -112,7 +123,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
 	struct exynos_drm_fbdev *exynos_fbdev = to_exynos_fbdev(helper);
 	struct exynos_drm_gem_obj *obj;
 	struct drm_device *dev = helper->dev;
-	struct fb_info *fbi;
 	struct drm_mode_fb_cmd2 mode_cmd = { 0 };
 	struct platform_device *pdev = dev->platformdev;
 	unsigned long size;
@@ -130,13 +140,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
 
 	mutex_lock(&dev->struct_mutex);
 
-	fbi = drm_fb_helper_alloc_fbi(helper);
-	if (IS_ERR(fbi)) {
-		DRM_ERROR("failed to allocate fb info.\n");
-		ret = PTR_ERR(fbi);
-		goto out;
-	}
-
 	size = mode_cmd.pitches[0] * mode_cmd.height;
 
 	obj = exynos_drm_gem_create(dev, EXYNOS_BO_CONTIG, size);
@@ -152,7 +155,7 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
 
 	if (IS_ERR(obj)) {
 		ret = PTR_ERR(obj);
-		goto err_release_fbi;
+		goto out;
 	}
 
 	exynos_fbdev->obj = obj;
@@ -164,10 +167,6 @@ static int exynos_drm_fbdev_create(struct drm_fb_helper *helper,
 		goto err_destroy_gem;
 	}
 
-	fbi->par = helper;
-	fbi->flags = FBINFO_FLAG_DEFAULT;
-	fbi->fbops = &exynos_drm_fb_ops;
-
 	ret = exynos_drm_fbdev_update(helper, sizes, obj);
 	if (ret < 0)
 		goto err_destroy_framebuffer;
@@ -179,8 +178,6 @@ err_destroy_framebuffer:
 	drm_framebuffer_cleanup(helper->fb);
 err_destroy_gem:
 	exynos_drm_gem_destroy(obj);
-err_release_fbi:
-	drm_fb_helper_release_fbi(helper);
 
 /*
  * if failed, all resources allocated above would be released by
-- 
1.9.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2015-09-01  7:22 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-01  7:22 [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Joonyoung Shim
2015-09-01  7:22 ` [PATCH 2/9] drm/exynos: s/exynos_gem_obj/obj in exynos_drm_fbdev.c Joonyoung Shim
2015-09-01 16:42   ` Gustavo Padovan
2015-09-01  7:22 ` [PATCH 3/9] drm/exynos: cleanup exynos_drm_fbdev_update() Joonyoung Shim
2015-09-01 16:43   ` Gustavo Padovan
2015-09-01  7:22 ` Joonyoung Shim [this message]
2015-09-01 20:30   ` [PATCH 4/9] drm/exynos: update fb_info via only one function Gustavo Padovan
2015-09-01  7:22 ` [PATCH 5/9] drm/exynos: cleanup to get gem object for fb Joonyoung Shim
2015-09-01 20:31   ` Gustavo Padovan
2015-09-01  7:22 ` [PATCH 6/9] drm/exynos: update exynos_drm_framebuffer_init() for multiple buffers Joonyoung Shim
2015-09-01 20:35   ` Gustavo Padovan
2015-09-01 20:39     ` Gustavo Padovan
2015-09-02 10:32     ` Inki Dae
2015-09-01  7:22 ` [PATCH 7/9] drm/exynos: cleanup exynos_user_fb_create() Joonyoung Shim
2015-09-01 20:53   ` Gustavo Padovan
2015-09-01  7:22 ` [PATCH 8/9] drm/exynos: remove exynos_drm_fb_get_buf_cnt() Joonyoung Shim
2015-09-01 20:54   ` Gustavo Padovan
2015-09-01  7:22 ` [PATCH 9/9] drm/exynos: remove buf_cnt from struct exynos_drm_fb Joonyoung Shim
2015-09-01 20:55   ` Gustavo Padovan
2015-09-01 16:41 ` [PATCH 1/9] drm/exynos: remove exynos_drm_fb_set_buf_cnt() Gustavo Padovan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1441092175-18187-4-git-send-email-jy0922.shim@samsung.com \
    --to=jy0922.shim@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=sw0312.kim@samsung.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.