Commit 48bb97cf authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-intel-next-fixes-2025-08-05' of...

Merge tag 'drm-intel-next-fixes-2025-08-05' of https://gitlab.freedesktop.org/drm/i915/kernel

 into drm-next

drm/i915 fixes for v6.17-rc1:
- Fixes around DP LFPS (Low-Frequency Periodic Signaling)

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Jani Nikula <jani.nikula@intel.com>
Link: https://lore.kernel.org/r/e1147bede8f219682419d198022cfe8d9d4edc28@intel.com
parents 6531a2cf 5a569ef4
Loading
Loading
Loading
Loading
+15 −6
Original line number Diff line number Diff line
@@ -3239,14 +3239,22 @@ void intel_lnl_mac_transmit_lfps(struct intel_encoder *encoder,
				 const struct intel_crtc_state *crtc_state)
{
	struct intel_display *display = to_intel_display(encoder);
	u8 owned_lane_mask = intel_cx0_get_owned_lane_mask(encoder);
	bool enable = intel_alpm_is_alpm_aux_less(enc_to_intel_dp(encoder),
						  crtc_state);
	intel_wakeref_t wakeref;
	int i;
	u8 owned_lane_mask;

	if (DISPLAY_VER(display) < 20)
	if (DISPLAY_VER(display) < 20 ||
	    !intel_alpm_is_alpm_aux_less(enc_to_intel_dp(encoder), crtc_state))
		return;

	owned_lane_mask = intel_cx0_get_owned_lane_mask(encoder);

	wakeref = intel_cx0_phy_transaction_begin(encoder);

	if (intel_encoder_is_c10phy(encoder))
		intel_cx0_rmw(encoder, owned_lane_mask, PHY_C10_VDR_CONTROL(1), 0,
			      C10_VDR_CTRL_MSGBUS_ACCESS, MB_WRITE_COMMITTED);

	for (i = 0; i < 4; i++) {
		int tx = i % 2 + 1;
		u8 lane_mask = i < 2 ? INTEL_CX0_LANE0 : INTEL_CX0_LANE1;
@@ -3256,9 +3264,10 @@ void intel_lnl_mac_transmit_lfps(struct intel_encoder *encoder,

		intel_cx0_rmw(encoder, lane_mask, PHY_CMN1_CONTROL(tx, 0),
			      CONTROL0_MAC_TRANSMIT_LFPS,
			      enable ? CONTROL0_MAC_TRANSMIT_LFPS : 0,
			      MB_WRITE_COMMITTED);
			      CONTROL0_MAC_TRANSMIT_LFPS, MB_WRITE_COMMITTED);
	}

	intel_cx0_phy_transaction_end(encoder, wakeref);
}

static u8 cx0_power_control_disable_val(struct intel_encoder *encoder)