intel_alpm_disable() incorrectly passes cpu_transcoder as the index to PORT_ALPM_CTL(), which expects an enum port. This writes to the wrong register, potentially corrupting state on unrelated ports.
Use dp_to_dig_port(intel_dp)->base.port to access the correct port-indexed register. Signed-off-by: Kaushlendra Kumar <[email protected]> --- drivers/gpu/drm/i915/display/intel_alpm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c b/drivers/gpu/drm/i915/display/intel_alpm.c index 6372f533f65b..09ba1c2be16c 100644 --- a/drivers/gpu/drm/i915/display/intel_alpm.c +++ b/drivers/gpu/drm/i915/display/intel_alpm.c @@ -557,6 +557,7 @@ void intel_alpm_disable(struct intel_dp *intel_dp) { struct intel_display *display = to_intel_display(intel_dp); enum transcoder cpu_transcoder = intel_dp->alpm.transcoder; + enum port port = dp_to_dig_port(intel_dp)->base.port; if (DISPLAY_VER(display) < 20 || !intel_dp->alpm_dpcd) return; @@ -568,7 +569,7 @@ void intel_alpm_disable(struct intel_dp *intel_dp) ALPM_CTL_ALPM_AUX_LESS_ENABLE, 0); intel_de_rmw(display, - PORT_ALPM_CTL(cpu_transcoder), + PORT_ALPM_CTL(port), PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE, 0); drm_dbg_kms(display->drm, "Disabling ALPM\n"); -- 2.34.1
