[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20260109005821.225235-1-andyshrk@163.com>
Date: Fri, 9 Jan 2026 08:58:07 +0800
From: Andy Yan <andyshrk@....com>
To: heiko@...ech.de
Cc: hjc@...k-chips.com,
dri-devel@...ts.freedesktop.org,
linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org,
linux-rockchip@...ts.infradead.org,
airlied@...il.com,
maarten.lankhorst@...ux.intel.com,
mripard@...nel.org,
simona@...ll.ch,
Andy Yan <andy.yan@...k-chips.com>
Subject: [PATCH] drm/rockchip: vop2: Add mode valid callback for crtc
From: Andy Yan <andy.yan@...k-chips.com>
Filter the mode that can't output by the crtc.
Signed-off-by: Andy Yan <andy.yan@...k-chips.com>
---
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
index 498df0ce4680..74fba29bfff3 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c
@@ -1439,6 +1439,17 @@ static void vop2_crtc_disable_vblank(struct drm_crtc *crtc)
vop2_crtc_disable_irq(vp, VP_INT_FS_FIELD);
}
+static enum drm_mode_status vop2_crtc_mode_valid(struct drm_crtc *crtc,
+ const struct drm_display_mode *mode)
+{
+ struct vop2_video_port *vp = to_vop2_video_port(crtc);
+
+ if (mode->hdisplay > vp->data->max_output.width)
+ return MODE_BAD_HVALUE;
+
+ return MODE_OK;
+}
+
static bool vop2_crtc_mode_fixup(struct drm_crtc *crtc,
const struct drm_display_mode *mode,
struct drm_display_mode *adj_mode)
@@ -1884,6 +1895,7 @@ static void vop2_crtc_atomic_flush(struct drm_crtc *crtc,
static const struct drm_crtc_helper_funcs vop2_crtc_helper_funcs = {
.mode_fixup = vop2_crtc_mode_fixup,
+ .mode_valid = vop2_crtc_mode_valid,
.atomic_check = vop2_crtc_atomic_check,
.atomic_begin = vop2_crtc_atomic_begin,
.atomic_flush = vop2_crtc_atomic_flush,
--
2.43.0
base-commit: 84f1d42065381b7c3fbdeefe917e5e24ec0c6d87
branch: rk3576-dp-upstream
Powered by blists - more mailing lists