Commit 478306ed authored by Tomi Valkeinen's avatar Tomi Valkeinen
Browse files

drm/tidss: Use the crtc_* timings when programming the HW



Use the crtc_* fields from drm_display_mode, instead of the "logical"
fields. This shouldn't change anything in practice, but afaiu the crtc_*
fields are the correct ones to use here.

Reviewed-by: default avatarAradhya Bhatia <aradhya.bhatia@linux.dev>
Tested-by: default avatarParth Pancholi <parth.pancholi@toradex.com>
Tested-by: default avatarJayesh Choudhary <j-choudhary@ti.com>
Reviewed-by: default avatarDevarsh Thakkar <devarsht@ti.com>
Link: https://lore.kernel.org/r/20250723-cdns-dsi-impro-v5-3-e61cc06074c2@ideasonboard.com


Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
parent f7e831db
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -225,7 +225,7 @@ static void tidss_crtc_atomic_enable(struct drm_crtc *crtc,
	tidss_runtime_get(tidss);

	r = dispc_vp_set_clk_rate(tidss->dispc, tcrtc->hw_videoport,
				  mode->clock * 1000);
				  mode->crtc_clock * 1000);
	if (r != 0)
		return;

+8 −8
Original line number Diff line number Diff line
@@ -1215,13 +1215,13 @@ void dispc_vp_enable(struct dispc_device *dispc, u32 hw_videoport,

	dispc_set_num_datalines(dispc, hw_videoport, fmt->data_width);

	hfp = mode->hsync_start - mode->hdisplay;
	hsw = mode->hsync_end - mode->hsync_start;
	hbp = mode->htotal - mode->hsync_end;
	hfp = mode->crtc_hsync_start - mode->crtc_hdisplay;
	hsw = mode->crtc_hsync_end - mode->crtc_hsync_start;
	hbp = mode->crtc_htotal - mode->crtc_hsync_end;

	vfp = mode->vsync_start - mode->vdisplay;
	vsw = mode->vsync_end - mode->vsync_start;
	vbp = mode->vtotal - mode->vsync_end;
	vfp = mode->crtc_vsync_start - mode->crtc_vdisplay;
	vsw = mode->crtc_vsync_end - mode->crtc_vsync_start;
	vbp = mode->crtc_vtotal - mode->crtc_vsync_end;

	dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
		       FLD_VAL(hsw - 1, 7, 0) |
@@ -1263,8 +1263,8 @@ void dispc_vp_enable(struct dispc_device *dispc, u32 hw_videoport,
		       FLD_VAL(ivs, 12, 12));

	dispc_vp_write(dispc, hw_videoport, DISPC_VP_SIZE_SCREEN,
		       FLD_VAL(mode->hdisplay - 1, 11, 0) |
		       FLD_VAL(mode->vdisplay - 1, 27, 16));
		       FLD_VAL(mode->crtc_hdisplay - 1, 11, 0) |
		       FLD_VAL(mode->crtc_vdisplay - 1, 27, 16));

	VP_REG_FLD_MOD(dispc, hw_videoport, DISPC_VP_CONTROL, 1, 0, 0);
}