Commit 146e87f3 authored by James A. MacInnes's avatar James A. MacInnes Committed by Dmitry Baryshkov
Browse files

drm/msm/disp: Correct porch timing for SDM845



Type-C DisplayPort inoperable due to incorrect porch settings.
- Re-used wide_bus_en as flag to prevent porch shifting

Fixes: c943b494 ("drm/msm/dp: add displayPort driver support")
Signed-off-by: default avatarJames A. MacInnes <james.a.macinnes@gmail.com>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/636945/
Link: https://lore.kernel.org/r/20250212-sdm845_dp-v2-2-4954e51458f4@gmail.com


Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
parent 83c4c670
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -94,17 +94,21 @@ static void drm_mode_to_intf_timing_params(
		timing->vsync_polarity = 0;
	}

	/* for DP/EDP, Shift timings to align it to bottom right */
	if (phys_enc->hw_intf->cap->type == INTF_DP) {
	timing->wide_bus_en = dpu_encoder_is_widebus_enabled(phys_enc->parent);
	timing->compression_en = dpu_encoder_is_dsc_enabled(phys_enc->parent);

	/*
	 *  For DP/EDP, Shift timings to align it to bottom right.
	 *  wide_bus_en is set for everything excluding SDM845 &
	 *  porch changes cause DisplayPort failure and HDMI tearing.
	 */
	if (phys_enc->hw_intf->cap->type == INTF_DP && timing->wide_bus_en) {
		timing->h_back_porch += timing->h_front_porch;
		timing->h_front_porch = 0;
		timing->v_back_porch += timing->v_front_porch;
		timing->v_front_porch = 0;
	}

	timing->wide_bus_en = dpu_encoder_is_widebus_enabled(phys_enc->parent);
	timing->compression_en = dpu_encoder_is_dsc_enabled(phys_enc->parent);

	/*
	 * for DP, divide the horizonal parameters by 2 when
	 * widebus is enabled