All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] drm: mxsfb: Primary plane format fix and enhancement
@ 2020-10-12 23:28 Laurent Pinchart
  2020-10-12 23:28 ` [PATCH 1/2] drm: mxsfb: Fix format changes for primary plane Laurent Pinchart
  2020-10-12 23:28 ` [PATCH 2/2] drm: mxsfb: Add RGB888 support on the " Laurent Pinchart
  0 siblings, 2 replies; 3+ messages in thread
From: Laurent Pinchart @ 2020-10-12 23:28 UTC (permalink / raw)
  To: dri-devel; +Cc: Marek Vasut, kernel, linux-imx

Hello,

This small patch series fixes format switching for the primary plane,
and adds support for the RGB888 format. There's not much else to tell,
please see individual patches for details.

Laurent Pinchart (2):
  drm: mxsfb: Fix format changes for primary plane
  drm: mxsfb: Add RGB888 support on the primary plane

 drivers/gpu/drm/mxsfb/mxsfb_drv.c |  5 +++++
 drivers/gpu/drm/mxsfb/mxsfb_kms.c | 29 +++++++++++++++++++++++++----
 2 files changed, 30 insertions(+), 4 deletions(-)

-- 
Regards,

Laurent Pinchart

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] drm: mxsfb: Fix format changes for primary plane
  2020-10-12 23:28 [PATCH 0/2] drm: mxsfb: Primary plane format fix and enhancement Laurent Pinchart
@ 2020-10-12 23:28 ` Laurent Pinchart
  2020-10-12 23:28 ` [PATCH 2/2] drm: mxsfb: Add RGB888 support on the " Laurent Pinchart
  1 sibling, 0 replies; 3+ messages in thread
From: Laurent Pinchart @ 2020-10-12 23:28 UTC (permalink / raw)
  To: dri-devel; +Cc: Marek Vasut, kernel, linux-imx

The primary plane's format is configured in registers that have no
shadow support for live updates. They require the display to be fully
reconfigured in order to be updated. Force a mode set when the primary
plane format changes to ensure this.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/gpu/drm/mxsfb/mxsfb_kms.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
index 6d512f346918..7a69d9f3a875 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
@@ -407,14 +407,28 @@ static int mxsfb_plane_atomic_check(struct drm_plane *plane,
 {
 	struct mxsfb_drm_private *mxsfb = to_mxsfb_drm_private(plane->dev);
 	struct drm_crtc_state *crtc_state;
+	int ret;
 
 	crtc_state = drm_atomic_get_new_crtc_state(plane_state->state,
 						   &mxsfb->crtc);
 
-	return drm_atomic_helper_check_plane_state(plane_state, crtc_state,
-						   DRM_PLANE_HELPER_NO_SCALING,
-						   DRM_PLANE_HELPER_NO_SCALING,
-						   false, true);
+	ret = drm_atomic_helper_check_plane_state(plane_state, crtc_state,
+						  DRM_PLANE_HELPER_NO_SCALING,
+						  DRM_PLANE_HELPER_NO_SCALING,
+						  false, true);
+	if (ret < 0)
+		return ret;
+
+	/*
+	 * Changing the primary plane format requires stopping the display
+	 * controller first. Force a full mode set to do so.
+	 */
+	if (plane == mxsfb->crtc.primary &&
+	    plane_state->visible && plane->state->visible &&
+	    plane_state->fb->format != plane->state->fb->format)
+		crtc_state->mode_changed = true;
+
+	return 0;
 }
 
 static void mxsfb_plane_primary_atomic_update(struct drm_plane *plane,
-- 
Regards,

Laurent Pinchart

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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] drm: mxsfb: Add RGB888 support on the primary plane
  2020-10-12 23:28 [PATCH 0/2] drm: mxsfb: Primary plane format fix and enhancement Laurent Pinchart
  2020-10-12 23:28 ` [PATCH 1/2] drm: mxsfb: Fix format changes for primary plane Laurent Pinchart
@ 2020-10-12 23:28 ` Laurent Pinchart
  1 sibling, 0 replies; 3+ messages in thread
From: Laurent Pinchart @ 2020-10-12 23:28 UTC (permalink / raw)
  To: dri-devel; +Cc: Marek Vasut, kernel, linux-imx

The primary plane can support the packed 24-bit RGB888 format. Enable
it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/gpu/drm/mxsfb/mxsfb_drv.c | 5 +++++
 drivers/gpu/drm/mxsfb/mxsfb_kms.c | 7 +++++++
 2 files changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index d52cf8a506a5..5ec10f0f6508 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -97,6 +97,11 @@ mxsfb_fb_create(struct drm_device *dev, struct drm_file *file_priv,
 		return ERR_PTR(-EINVAL);
 	}
 
+	if (info->cpp[0] == 3 && mode_cmd->width % 4) {
+		dev_dbg(dev->dev, "24-bit RGB format requires a width aligned to 4\n");
+		return ERR_PTR(-EINVAL);
+	}
+
 	return drm_gem_fb_create(dev, file_priv, mode_cmd);
 }
 
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
index 7a69d9f3a875..7a0d6bc58be0 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
@@ -75,6 +75,12 @@ static void mxsfb_set_formats(struct mxsfb_drm_private *mxsfb)
 		ctrl |= CTRL_WORD_LENGTH_16;
 		ctrl1 |= CTRL1_SET_BYTE_PACKAGING(0xf);
 		break;
+	case DRM_FORMAT_RGB888:
+		dev_dbg(drm->dev, "Setting up RGB888 mode\n");
+		ctrl |= CTRL_WORD_LENGTH_24;
+		/* Enable pixel packing, 4 pixels in 3 bytes. */
+		ctrl1 |= CTRL1_SET_BYTE_PACKAGING(0xf);
+		break;
 	case DRM_FORMAT_XRGB8888:
 		dev_dbg(drm->dev, "Setting up XRGB8888 mode\n");
 		ctrl |= CTRL_WORD_LENGTH_24;
@@ -523,6 +529,7 @@ static const struct drm_plane_funcs mxsfb_plane_funcs = {
 
 static const uint32_t mxsfb_primary_plane_formats[] = {
 	DRM_FORMAT_RGB565,
+	DRM_FORMAT_RGB888,
 	DRM_FORMAT_XRGB8888,
 };
 
-- 
Regards,

Laurent Pinchart

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

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-10-12 23:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-12 23:28 [PATCH 0/2] drm: mxsfb: Primary plane format fix and enhancement Laurent Pinchart
2020-10-12 23:28 ` [PATCH 1/2] drm: mxsfb: Fix format changes for primary plane Laurent Pinchart
2020-10-12 23:28 ` [PATCH 2/2] drm: mxsfb: Add RGB888 support on the " Laurent Pinchart

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.