Thread (17 messages) 17 messages, 4 authors, 2026-02-13

Re: [PATCH v4 4/4] drm/rockchip: vop2: Support setting custom background color

From: Cristian Ciocaltea <hidden>
Date: 2026-01-26 18:52:47
Also in: dri-devel, linux-rockchip, lkml

Hi Nícolas,

On 1/26/26 8:30 PM, Nícolas F. R. A. Prado wrote:
On Fri, 2025-12-19 at 23:47 +0200, Cristian Ciocaltea wrote:
quoted
The Rockchip VOP2 display controller allows configuring the
background
color of each video output port.

Since a previous patch introduced the BACKGROUND_COLOR CRTC property,
which defaults to solid black, make use of it when programming the
hardware.

Note the maximum precision allowed by the display controller is
10bpc,
while the alpha component is not supported, hence ignored.

Signed-off-by: Cristian Ciocaltea <redacted>
---
 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 13 ++++++++++++-
 drivers/gpu/drm/rockchip/rockchip_drm_vop2.h |  4 ++++
 2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
index 498df0ce4680..3a232d0d4acb 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
@@ -1554,6 +1554,7 @@ static void vop2_post_config(struct drm_crtc
*crtc)
 	struct vop2_video_port *vp = to_vop2_video_port(crtc);
 	struct vop2 *vop2 = vp->vop2;
 	struct drm_display_mode *mode = &crtc->state->adjusted_mode;
+	u64 bgcolor = crtc->state->background_color;
 	u16 vtotal = mode->crtc_vtotal;
 	u16 hdisplay = mode->crtc_hdisplay;
 	u16 hact_st = mode->crtc_htotal - mode->crtc_hsync_start;
@@ -1599,7 +1600,11 @@ static void vop2_post_config(struct drm_crtc
*crtc)
 		vop2_vp_write(vp, RK3568_VP_POST_DSP_VACT_INFO_F1,
val);
 	}
 
-	vop2_vp_write(vp, RK3568_VP_DSP_BG, 0);
+	/* Background color is programmed with 10 bits of precision
*/
+	val = FIELD_PREP(RK3568_VP_DSP_BG__DSP_BG_RED,
DRM_ARGB64_GETR(bgcolor) >> 6);
+	val |= FIELD_PREP(RK3568_VP_DSP_BG__DSP_BG_GREEN,
DRM_ARGB64_GETG(bgcolor) >> 6);
+	val |= FIELD_PREP(RK3568_VP_DSP_BG__DSP_BG_BLUE,
DRM_ARGB64_GETB(bgcolor) >> 6);
Why aren't the DRM_ARGB64_GET*_BPC() helpers used here to get the
values with a custom precision?
That's for performance reasons, please see "Changes in v4" section in the cover
letter.  I should have probably added a comment here (noted for v5).

Thanks for the review!

Regards,
Cristian 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help