[openchrome-devel] drm-openchrome: Branch 'drm-next-5.3' - 3 commits - drivers/gpu/drm

Kevin Brace kevinbrace at kemper.freedesktop.org
Wed Jun 5 00:16:57 UTC 2019


 drivers/gpu/drm/openchrome/openchrome_crtc.c    |   73 ++++++++++++++++++++----
 drivers/gpu/drm/openchrome/openchrome_display.c |   10 +++
 drivers/gpu/drm/openchrome/openchrome_display.h |    1 
 drivers/gpu/drm/openchrome/openchrome_drv.h     |    6 +
 4 files changed, 78 insertions(+), 12 deletions(-)

New commits:
commit 5836aaa19bd95e0a2e9b11a37582d80764d31889
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jun 4 19:15:30 2019 -0500

    drm/openchrome: Version bumped to 3.1.8
    
    Adopted the use of primary plane for the frame buffer
    
    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 cd7e3c1bc6a0..dd0107ff6bea 100644
--- a/drivers/gpu/drm/openchrome/openchrome_drv.h
+++ b/drivers/gpu/drm/openchrome/openchrome_drv.h
@@ -51,10 +51,10 @@
 
 #define DRIVER_MAJOR		3
 #define DRIVER_MINOR		1
-#define DRIVER_PATCHLEVEL	7
+#define DRIVER_PATCHLEVEL	8
 #define DRIVER_NAME		"openchrome"
 #define DRIVER_DESC		"OpenChrome DRM for VIA Technologies Chrome IGP"
-#define DRIVER_DATE		"20190521"
+#define DRIVER_DATE		"20190604"
 #define DRIVER_AUTHOR		"OpenChrome Project"
 
 
commit eddad0bb3993a3c2524a5d880683119fc321f58e
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jun 4 19:13:33 2019 -0500

    drm/openchrome: Adopt the use of primary plane for the frame buffer
    
    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 6dd4d10fd66d..a25081273de5 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -2478,29 +2478,76 @@ drm_crtc_helper_funcs openchrome_iga2_drm_crtc_helper_funcs = {
 	.mode_set_base_atomic = via_iga2_mode_set_base_atomic,
 };
 
+static const uint32_t openchrome_drm_plane_format[] = {
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_RGB888,
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_RGB332,
+};
+
+static const struct drm_plane_helper_funcs
+openchrome_drm_plane_helper_funcs = {
+};
+
+int openchrome_plane_init(struct drm_device *dev, int index)
+{
+	struct openchrome_drm_private *dev_private =
+						dev->dev_private;
+	struct drm_plane *primary;
+	int ret;
+
+	DRM_DEBUG_KMS("Entered %s.\n", __func__);
+
+	primary = &dev_private->primary[index];
+
+	drm_plane_helper_add(primary,
+			&openchrome_drm_plane_helper_funcs);
+	ret = drm_universal_plane_init(dev, primary, 0,
+			&drm_primary_helper_funcs,
+			openchrome_drm_plane_format,
+			ARRAY_SIZE(openchrome_drm_plane_format),
+			NULL, DRM_PLANE_TYPE_PRIMARY, NULL);
+	if (ret) {
+		DRM_ERROR("Failed to initialize a primary "
+				"plane.\n");
+		goto free_primary;
+	}
+
+	goto exit;
+free_primary:
+	drm_plane_cleanup(primary);
+exit:
+	DRM_DEBUG_KMS("Exiting %s.\n", __func__);
+	return ret;
+}
+
 int via_crtc_init(struct drm_device *dev, int index)
 {
 	struct openchrome_drm_private *dev_private =
 						dev->dev_private;
 	struct via_crtc *iga = &dev_private->iga[index];
+	struct drm_plane *primary;
 	struct drm_crtc *crtc = &iga->base;
 	struct openchrome_bo *bo;
 	int cursor_size = 64 * 64 * 4, i;
 	u16 *gamma;
 	int ret;
 
+	primary = &dev_private->primary[index];
+
 	iga->index = index;
 	if (index) {
-		ret = drm_crtc_init(dev, crtc,
-				&openchrome_iga2_drm_crtc_funcs);
+		drm_crtc_helper_add(crtc,
+			&openchrome_iga2_drm_crtc_helper_funcs);
+		ret = drm_crtc_init_with_planes(dev, crtc, primary,
+				NULL, &openchrome_iga2_drm_crtc_funcs,
+				NULL);
 		if (ret) {
 			DRM_ERROR("Failed to initialize CRTC!\n");
 			goto exit;
 		}
 
-		drm_crtc_helper_add(crtc,
-			&openchrome_iga2_drm_crtc_helper_funcs);
-
 		iga->timings.htotal.count = ARRAY_SIZE(iga2_hor_total);
 		iga->timings.htotal.regs = iga2_hor_total;
 
@@ -2575,16 +2622,16 @@ int via_crtc_init(struct drm_device *dev, int index)
 		iga->offset.count = ARRAY_SIZE(iga2_offset) - 1;
 		iga->offset.regs = iga2_offset;
 	} else {
-		ret = drm_crtc_init(dev, crtc,
-				&openchrome_iga1_drm_crtc_funcs);
+		drm_crtc_helper_add(crtc,
+			&openchrome_iga1_drm_crtc_helper_funcs);
+		ret = drm_crtc_init_with_planes(dev, crtc, primary,
+				NULL, &openchrome_iga1_drm_crtc_funcs,
+				NULL);
 		if (ret) {
 			DRM_ERROR("Failed to initialize CRTC!\n");
 			goto exit;
 		}
 
-		drm_crtc_helper_add(crtc,
-			&openchrome_iga1_drm_crtc_helper_funcs);
-
 		iga->timings.htotal.count = ARRAY_SIZE(iga1_hor_total);
 		iga->timings.htotal.regs = iga1_hor_total;
 
diff --git a/drivers/gpu/drm/openchrome/openchrome_display.c b/drivers/gpu/drm/openchrome/openchrome_display.c
index 7f3993b07149..135dffa73931 100644
--- a/drivers/gpu/drm/openchrome/openchrome_display.c
+++ b/drivers/gpu/drm/openchrome/openchrome_display.c
@@ -497,6 +497,16 @@ via_modeset_init(struct drm_device *dev)
 	via_i2c_init(dev);
 	via_hwcursor_init(dev_private);
 
+	ret = openchrome_plane_init(dev, 0);
+	if (ret) {
+		goto exit;
+	}
+
+	ret = openchrome_plane_init(dev, 1);
+	if (ret) {
+		goto exit;
+	}
+
 	ret = via_crtc_init(dev, 0);
 	if (ret) {
 		goto exit;
diff --git a/drivers/gpu/drm/openchrome/openchrome_display.h b/drivers/gpu/drm/openchrome/openchrome_display.h
index 8e001d4a48b5..b0c205ad8576 100644
--- a/drivers/gpu/drm/openchrome/openchrome_display.h
+++ b/drivers/gpu/drm/openchrome/openchrome_display.h
@@ -175,6 +175,7 @@ extern void via_fbdev_fini(struct drm_device *dev);
 /* crtc */
 extern void via_load_crtc_pixel_timing(struct drm_crtc *crtc,
 					struct drm_display_mode *mode);
+int openchrome_plane_init(struct drm_device *dev, int index);
 extern int via_crtc_init(struct drm_device *dev, int index);
 
 /* encoders */
diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h b/drivers/gpu/drm/openchrome/openchrome_drv.h
index a5e20c1979eb..cd7e3c1bc6a0 100644
--- a/drivers/gpu/drm/openchrome/openchrome_drv.h
+++ b/drivers/gpu/drm/openchrome/openchrome_drv.h
@@ -152,6 +152,8 @@ struct openchrome_drm_private {
 
 	enum via_engine engine_type;
 
+	struct drm_plane primary[2];
+
 	struct via_crtc iga[2];
 	bool spread_spectrum;
 
commit 76fd4b36f99b8fffdda06dcee2525286e0ef6c05
Author: Kevin Brace <kevinbrace at gmx.com>
Date:   Tue Jun 4 17:55:18 2019 -0500

    drm/openchrome: Rename drm_crtc callback function structs
    
    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 4cc50c25c0cc..6dd4d10fd66d 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -567,7 +567,7 @@ exit:
 	drm_crtc_cleanup(crtc);
 }
 
-static const struct drm_crtc_funcs via_iga1_funcs = {
+static const struct drm_crtc_funcs openchrome_iga1_drm_crtc_funcs = {
 	.cursor_set = via_crtc_cursor_set,
 	.cursor_move = via_crtc_cursor_move,
 	.gamma_set = via_iga1_gamma_set,
@@ -575,7 +575,7 @@ static const struct drm_crtc_funcs via_iga1_funcs = {
 	.destroy = via_crtc_destroy,
 };
 
-static const struct drm_crtc_funcs via_iga2_funcs = {
+static const struct drm_crtc_funcs openchrome_iga2_drm_crtc_funcs = {
 	.cursor_set = via_crtc_cursor_set,
 	.cursor_move = via_crtc_cursor_move,
 	.gamma_set = via_iga2_gamma_set,
@@ -2456,7 +2456,8 @@ via_iga2_mode_set_base_atomic(struct drm_crtc *crtc,
 	return 0;
 }
 
-static const struct drm_crtc_helper_funcs via_iga1_helper_funcs = {
+static const struct
+drm_crtc_helper_funcs openchrome_iga1_drm_crtc_helper_funcs = {
 	.dpms = via_iga1_crtc_dpms,
 	.disable = via_iga1_crtc_disable,
 	.prepare = via_iga1_crtc_prepare,
@@ -2466,7 +2467,8 @@ static const struct drm_crtc_helper_funcs via_iga1_helper_funcs = {
 	.mode_set_base_atomic = via_iga1_mode_set_base_atomic,
 };
 
-static const struct drm_crtc_helper_funcs via_iga2_helper_funcs = {
+static const struct
+drm_crtc_helper_funcs openchrome_iga2_drm_crtc_helper_funcs = {
 	.dpms = via_iga2_crtc_dpms,
 	.disable = via_iga2_crtc_disable,
 	.prepare = via_iga2_crtc_prepare,
@@ -2489,13 +2491,15 @@ int via_crtc_init(struct drm_device *dev, int index)
 
 	iga->index = index;
 	if (index) {
-		ret = drm_crtc_init(dev, crtc, &via_iga2_funcs);
+		ret = drm_crtc_init(dev, crtc,
+				&openchrome_iga2_drm_crtc_funcs);
 		if (ret) {
 			DRM_ERROR("Failed to initialize CRTC!\n");
 			goto exit;
 		}
 
-		drm_crtc_helper_add(crtc, &via_iga2_helper_funcs);
+		drm_crtc_helper_add(crtc,
+			&openchrome_iga2_drm_crtc_helper_funcs);
 
 		iga->timings.htotal.count = ARRAY_SIZE(iga2_hor_total);
 		iga->timings.htotal.regs = iga2_hor_total;
@@ -2571,13 +2575,15 @@ int via_crtc_init(struct drm_device *dev, int index)
 		iga->offset.count = ARRAY_SIZE(iga2_offset) - 1;
 		iga->offset.regs = iga2_offset;
 	} else {
-		ret = drm_crtc_init(dev, crtc, &via_iga1_funcs);
+		ret = drm_crtc_init(dev, crtc,
+				&openchrome_iga1_drm_crtc_funcs);
 		if (ret) {
 			DRM_ERROR("Failed to initialize CRTC!\n");
 			goto exit;
 		}
 
-		drm_crtc_helper_add(crtc, &via_iga1_helper_funcs);
+		drm_crtc_helper_add(crtc,
+			&openchrome_iga1_drm_crtc_helper_funcs);
 
 		iga->timings.htotal.count = ARRAY_SIZE(iga1_hor_total);
 		iga->timings.htotal.regs = iga1_hor_total;


More information about the openchrome-devel mailing list