[openchrome-devel] drm-openchrome: Branch 'drm-next-5.10' - 4 commits - drivers/gpu/drm

Kevin Brace kevinbrace at kemper.freedesktop.org
Mon Sep 14 21:59:52 UTC 2020


 drivers/gpu/drm/openchrome/openchrome_crtc.c   |   12 ---
 drivers/gpu/drm/openchrome/openchrome_cursor.c |    4 -
 drivers/gpu/drm/openchrome/openchrome_drv.h    |    8 --
 drivers/gpu/drm/openchrome/openchrome_fb.c     |   91 ++++++-------------------
 4 files changed, 30 insertions(+), 85 deletions(-)

New commits:
commit d7cb0f01765df06740cb4a13258f56a3018cd78d
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Sep 14 14:55:03 2020 -0700

    drm/openchrome: Version bumped to 3.3.5
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h
index 51ef0277a5a7..6e43547127df 100644
--- a/drivers/gpu/drm/openchrome/openchrome_drv.h
+++ b/drivers/gpu/drm/openchrome/openchrome_drv.h
@@ -61,7 +61,7 @@
 
 #define DRIVER_MAJOR		3
 #define DRIVER_MINOR		3
-#define DRIVER_PATCHLEVEL	4
+#define DRIVER_PATCHLEVEL	5
 #define DRIVER_NAME		"openchrome"
 #define DRIVER_DESC		"OpenChrome DRM for VIA Technologies Chrome IGP"
 #define DRIVER_DATE		"20200914"
commit edd6b31f6e15aa9b267e51a5bbee3f4cc57525e5
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Sun Sep 13 04:42:26 2020 -0700

    drm/openchrome: Use GEM framebuffer helpers for drm_framebuffer_funcs
    
    This avoids code duplication.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_fb.c b/drivers/gpu/drm/openchrome/openchrome_fb.c
index f6326912aded..13a3945f8841 100644
--- a/drivers/gpu/drm/openchrome/openchrome_fb.c
+++ b/drivers/gpu/drm/openchrome/openchrome_fb.c
@@ -28,40 +28,15 @@
 #include <drm/drm_fb_helper.h>
 #include <drm/drm_fourcc.h>
 #include <drm/drm_gem.h>
+#include <drm_gem_framebuffer_helper.h>
 
 #include "openchrome_drv.h"
 
 
-static int
-via_user_framebuffer_create_handle(struct drm_framebuffer *fb,
-					struct drm_file *file_priv,
-					unsigned int *handle)
-{
-	int ret;
-
-	DRM_DEBUG_KMS("Entered %s.\n", __func__);
-
-	ret = drm_gem_handle_create(file_priv, fb->obj[0], handle);
-
-	DRM_DEBUG_KMS("Exiting %s.\n", __func__);
-	return ret;
-}
-
-static void
-via_user_framebuffer_destroy(struct drm_framebuffer *fb)
-{
-	DRM_DEBUG_KMS("Entered %s.\n", __func__);
-
-	drm_gem_object_put(fb->obj[0]);
-	drm_framebuffer_cleanup(fb);
-	kfree(fb);
-
-	DRM_DEBUG_KMS("Exiting %s.\n", __func__);
-}
-
-static const struct drm_framebuffer_funcs via_fb_funcs = {
-	.create_handle	= via_user_framebuffer_create_handle,
-	.destroy	= via_user_framebuffer_destroy,
+static const struct drm_framebuffer_funcs
+openchrome_drm_framebuffer_funcs = {
+	.create_handle	= drm_gem_fb_create_handle,
+	.destroy	= drm_gem_fb_destroy,
 };
 
 static struct drm_framebuffer *
@@ -87,7 +62,8 @@ via_user_framebuffer_create(struct drm_device *dev,
 
 	drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
 	fb->obj[0] = gem;
-	ret = drm_framebuffer_init(dev, fb, &via_fb_funcs);
+	ret = drm_framebuffer_init(dev, fb,
+				&openchrome_drm_framebuffer_funcs);
 	if (ret) {
 		drm_gem_object_put(gem);
 		kfree(fb);
@@ -204,7 +180,8 @@ via_fb_probe(struct drm_fb_helper *helper,
 
 	drm_helper_mode_fill_fb_struct(dev, fb, &mode_cmd);
 	fb->obj[0] = &via_fbdev->bo->gem;
-	ret = drm_framebuffer_init(dev, fb, &via_fb_funcs);
+	ret = drm_framebuffer_init(dev, fb,
+				&openchrome_drm_framebuffer_funcs);
 	if (unlikely(ret)) {
 		goto out_err;
 	}
commit 15ef643b08865d25799ab4332426cca2546b8447
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Sep 14 14:51:21 2020 -0700

    drm/openchrome: Pass dev pointer to drm_framebuffer_init()
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_fb.c b/drivers/gpu/drm/openchrome/openchrome_fb.c
index 46fd7a7dd8d9..f6326912aded 100644
--- a/drivers/gpu/drm/openchrome/openchrome_fb.c
+++ b/drivers/gpu/drm/openchrome/openchrome_fb.c
@@ -204,7 +204,7 @@ via_fb_probe(struct drm_fb_helper *helper,
 
 	drm_helper_mode_fill_fb_struct(dev, fb, &mode_cmd);
 	fb->obj[0] = &via_fbdev->bo->gem;
-	ret = drm_framebuffer_init(helper->dev, fb, &via_fb_funcs);
+	ret = drm_framebuffer_init(dev, fb, &via_fb_funcs);
 	if (unlikely(ret)) {
 		goto out_err;
 	}
commit 328777a72993ec9ee832aa452ce78faaced1692e
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Mon Sep 14 14:50:59 2020 -0700

    drm/openchrome: Store GEM handle with drm_framebuffer struct
    
    Rather than allocating private storage for allocating a GEM handle,
    store it with drm_framebuffer struct.  Also, stop the use of
    via_framebuffer struct since it is no longer needed.
    
    Signed-off-by: Kevin Brace <kevinbrace at gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c b/drivers/gpu/drm/openchrome/openchrome_crtc.c
index ab467aadcda1..b35fa2d1fd22 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -1681,8 +1681,6 @@ static int openchrome_crtc_mode_set_base(struct drm_crtc *crtc,
 					struct drm_framebuffer *old_fb)
 {
 	struct drm_framebuffer *fb = crtc->primary->fb;
-	struct via_framebuffer *via_fb = container_of(fb,
-					struct via_framebuffer, fb);
 	struct openchrome_bo *bo;
 	struct drm_gem_object *gem;
 	int ret = 0;
@@ -1697,7 +1695,7 @@ static int openchrome_crtc_mode_set_base(struct drm_crtc *crtc,
 		goto exit;
 	}
 
-	gem = via_fb->gem;
+	gem = fb->obj[0];
 	bo = container_of(gem, struct openchrome_bo, gem);
 
 	ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL);
@@ -1732,9 +1730,7 @@ static int openchrome_crtc_mode_set_base(struct drm_crtc *crtc,
 	 * Free the old framebuffer if it exists.
 	 */
 	if (old_fb) {
-		via_fb = container_of(old_fb,
-					struct via_framebuffer, fb);
-		gem = via_fb->gem;
+		gem = old_fb->obj[0];
 		bo = container_of(gem, struct openchrome_bo, gem);
 
 		ret = ttm_bo_reserve(&bo->ttm_bo, true, false, NULL);
@@ -1971,9 +1967,7 @@ static int openchrome_crtc_mode_set_base_atomic(struct drm_crtc *crtc,
 	struct via_crtc *iga = container_of(crtc, struct via_crtc, base);
 	struct openchrome_drm_private *dev_private =
 						crtc->dev->dev_private;
-	struct via_framebuffer *via_fb = container_of(fb,
-					struct via_framebuffer, fb);
-	struct drm_gem_object *gem = via_fb->gem;
+	struct drm_gem_object *gem = fb->obj[0];
 	struct openchrome_bo *bo = container_of(gem,
 					struct openchrome_bo, gem);
 	int ret = 0;
diff --git a/drivers/gpu/drm/openchrome/openchrome_cursor.c b/drivers/gpu/drm/openchrome/openchrome_cursor.c
index a54b7fa20526..612ff28fa69c 100644
--- a/drivers/gpu/drm/openchrome/openchrome_cursor.c
+++ b/drivers/gpu/drm/openchrome/openchrome_cursor.c
@@ -257,7 +257,6 @@ static int openchrome_cursor_update_plane(struct drm_plane *plane,
 				struct drm_modeset_acquire_ctx *ctx)
 {
 	struct drm_device *dev = plane->dev;
-	struct via_framebuffer *via_fb;
 	struct openchrome_bo *ttm_bo;
 	struct drm_gem_object *gem;
 	int ret = 0;
@@ -306,8 +305,7 @@ static int openchrome_cursor_update_plane(struct drm_plane *plane,
 	}
 
 	if (fb != crtc->cursor->fb) {
-		via_fb = container_of(fb, struct via_framebuffer, fb);
-		gem = via_fb->gem;
+		gem = fb->obj[0];
 		ttm_bo = container_of(gem, struct openchrome_bo, gem);
 		openchrome_cursor_address(crtc, ttm_bo);
 	} else {
diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h
index 2d2262e8a3b7..51ef0277a5a7 100644
--- a/drivers/gpu/drm/openchrome/openchrome_drv.h
+++ b/drivers/gpu/drm/openchrome/openchrome_drv.h
@@ -199,14 +199,8 @@ struct openchrome_bo {
 	struct drm_gem_object		gem;
 };
 
-struct via_framebuffer {
-	struct drm_framebuffer		fb;
-	struct drm_gem_object		*gem;
-};
-
 struct via_framebuffer_device {
 	struct drm_fb_helper		helper;
-	struct via_framebuffer		via_fb;
 	struct openchrome_bo		*bo;
 };
 
diff --git a/drivers/gpu/drm/openchrome/openchrome_fb.c b/drivers/gpu/drm/openchrome/openchrome_fb.c
index 068f39f2d132..46fd7a7dd8d9 100644
--- a/drivers/gpu/drm/openchrome/openchrome_fb.c
+++ b/drivers/gpu/drm/openchrome/openchrome_fb.c
@@ -37,13 +37,11 @@ via_user_framebuffer_create_handle(struct drm_framebuffer *fb,
 					struct drm_file *file_priv,
 					unsigned int *handle)
 {
-	struct via_framebuffer *via_fb = container_of(fb,
-					struct via_framebuffer, fb);
 	int ret;
 
 	DRM_DEBUG_KMS("Entered %s.\n", __func__);
 
-	ret = drm_gem_handle_create(file_priv, via_fb->gem, handle);
+	ret = drm_gem_handle_create(file_priv, fb->obj[0], handle);
 
 	DRM_DEBUG_KMS("Exiting %s.\n", __func__);
 	return ret;
@@ -52,18 +50,11 @@ via_user_framebuffer_create_handle(struct drm_framebuffer *fb,
 static void
 via_user_framebuffer_destroy(struct drm_framebuffer *fb)
 {
-	struct via_framebuffer *via_fb = container_of(fb,
-					struct via_framebuffer, fb);
-
 	DRM_DEBUG_KMS("Entered %s.\n", __func__);
 
-	if (via_fb->gem) {
-		drm_gem_object_put(via_fb->gem);
-		via_fb->gem = NULL;
-	}
-
+	drm_gem_object_put(fb->obj[0]);
 	drm_framebuffer_cleanup(fb);
-	kfree(via_fb);
+	kfree(fb);
 
 	DRM_DEBUG_KMS("Exiting %s.\n", __func__);
 }
@@ -78,7 +69,7 @@ via_user_framebuffer_create(struct drm_device *dev,
 				struct drm_file *file_priv,
 				const struct drm_mode_fb_cmd2 *mode_cmd)
 {
-	struct via_framebuffer *via_fb;
+	struct drm_framebuffer *fb;
 	struct drm_gem_object *gem;
 	int ret;
 
@@ -89,23 +80,21 @@ via_user_framebuffer_create(struct drm_device *dev,
 		return ERR_PTR(-ENOENT);
 	}
 
-	via_fb = kzalloc(sizeof(struct via_framebuffer), GFP_KERNEL);
-	if (!via_fb) {
+	fb = kzalloc(sizeof(struct drm_framebuffer), GFP_KERNEL);
+	if (!fb) {
 		return ERR_PTR(-ENOMEM);
 	}
 
-	via_fb->gem = gem;
-
-	drm_helper_mode_fill_fb_struct(dev, &via_fb->fb, mode_cmd);
-	ret = drm_framebuffer_init(dev, &via_fb->fb, &via_fb_funcs);
+	drm_helper_mode_fill_fb_struct(dev, fb, mode_cmd);
+	fb->obj[0] = gem;
+	ret = drm_framebuffer_init(dev, fb, &via_fb_funcs);
 	if (ret) {
-		drm_gem_object_put(via_fb->gem);
-		via_fb->gem = NULL;
-		kfree(via_fb);
+		drm_gem_object_put(gem);
+		kfree(fb);
 		return ERR_PTR(ret);
 	}
 
-	return &via_fb->fb;
+	return fb;
 }
 
 static const struct drm_mode_config_funcs via_mode_funcs = {
@@ -167,8 +156,7 @@ via_fb_probe(struct drm_fb_helper *helper,
 					helper->dev->dev_private;
 	struct via_framebuffer_device *via_fbdev = container_of(helper,
 				struct via_framebuffer_device, helper);
-	struct via_framebuffer *via_fb = &via_fbdev->via_fb;
-	struct drm_framebuffer *fb = &via_fbdev->via_fb.fb;
+	struct drm_framebuffer *fb;
 	struct fb_info *info = helper->fbdev;
 	const struct drm_format_info *format_info;
 	struct drm_mode_fb_cmd2 mode_cmd;
@@ -201,6 +189,11 @@ via_fb_probe(struct drm_fb_helper *helper,
 		goto exit;
 	}
 
+	fb = kzalloc(sizeof(struct drm_framebuffer), GFP_KERNEL);
+	if (!fb) {
+		return ret;
+	}
+
 	info = drm_fb_helper_alloc_fbi(helper);
 	if (IS_ERR(info)) {
 		ret = PTR_ERR(info);
@@ -210,12 +203,12 @@ via_fb_probe(struct drm_fb_helper *helper,
 	info->skip_vt_switch = true;
 
 	drm_helper_mode_fill_fb_struct(dev, fb, &mode_cmd);
+	fb->obj[0] = &via_fbdev->bo->gem;
 	ret = drm_framebuffer_init(helper->dev, fb, &via_fb_funcs);
 	if (unlikely(ret)) {
 		goto out_err;
 	}
 
-	via_fb->gem = &via_fbdev->bo->gem;
 	via_fbdev->helper.fb = fb;
 	via_fbdev->helper.fbdev = info;
 
@@ -247,10 +240,7 @@ out_err:
 		via_fbdev->bo = NULL;
 	}
 
-	if (via_fb->gem) {
-		drm_gem_object_put(via_fb->gem);
-		via_fb->gem = NULL;
-	}
+	kfree(fb);
 exit:
 	DRM_DEBUG_KMS("Exiting %s.\n", __func__);
 	return ret;
@@ -307,8 +297,6 @@ void via_fbdev_fini(struct drm_device *dev)
 	struct openchrome_drm_private *dev_private = dev->dev_private;
 	struct drm_fb_helper *fb_helper = &dev_private->
 						via_fbdev->helper;
-	struct via_framebuffer *via_fb = &dev_private->
-						via_fbdev->via_fb;
 	struct fb_info *info;
 
 	DRM_DEBUG_KMS("Entered %s.\n", __func__);
@@ -325,13 +313,7 @@ void via_fbdev_fini(struct drm_device *dev)
 		fb_helper->fbdev = NULL;
 	}
 
-	if (via_fb->gem) {
-		drm_gem_object_put(via_fb->gem);
-		via_fb->gem = NULL;
-	}
-
 	drm_fb_helper_fini(&dev_private->via_fbdev->helper);
-	drm_framebuffer_cleanup(&dev_private->via_fbdev->via_fb.fb);
 	if (dev_private->via_fbdev) {
 		kfree(dev_private->via_fbdev);
 		dev_private->via_fbdev = NULL;


More information about the openchrome-devel mailing list