From: Yu Zhang <[email protected]>
gen11_dsi_get_timings() only doubles hsync_start/end for dual-link
DSI in video mode. For command mode dual-link, the hardware stores
per-link values (e.g. hsync_start=1380 instead of 2762), but the
readout does not compensate, causing:
[drm] *ERROR* hw.pipe_mode.crtc_hsync_start (expected 2762, found 1380)
Fix this by applying the dual-link hsync doubling unconditionally,
matching the SET side where hsync is now halved for all modes.
Fixes: d1aeb5f399d9 ("drm/i915/icl: Configure DSI transcoder timings")
Cc: [email protected]
Signed-off-by: Yu Zhang <[email protected]>
---
drivers/gpu/drm/i915/display/icl_dsi.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c
b/drivers/gpu/drm/i915/display/icl_dsi.c
index c667d5941..f579cba28 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -1527,11 +1527,9 @@ static void gen11_dsi_get_timings(struct intel_encoder
*encoder,
adjusted_mode->crtc_hblank_start = adjusted_mode->crtc_hdisplay;
adjusted_mode->crtc_hblank_end = adjusted_mode->crtc_htotal;
- if (intel_dsi->operation_mode == INTEL_DSI_VIDEO_MODE) {
- if (intel_dsi->dual_link) {
- adjusted_mode->crtc_hsync_start *= 2;
- adjusted_mode->crtc_hsync_end *= 2;
- }
+ if (intel_dsi->dual_link) {
+ adjusted_mode->crtc_hsync_start *= 2;
+ adjusted_mode->crtc_hsync_end *= 2;
}
adjusted_mode->crtc_vblank_start = adjusted_mode->crtc_vdisplay;
adjusted_mode->crtc_vblank_end = adjusted_mode->crtc_vtotal;
--
2.43.0