Quoting Dnyaneshwar Bhadane (2025-09-09 06:45:35-03:00) >On PTL, no combo PHY is connected to PORT B. However, PORT B can >still be used for Type-C and will utilize the C20 PHY for eDP >over Type-C. In such configurations, VBTs also enumerate PORT B. > >This leads to issues where PORT B is incorrectly identified as using the >C10 PHY, due to the assumption that returning true for PORT B in >intel_encoder_is_c10phy() would not cause problems. > >From PTL's perspective, only PORT A/PHY A uses the C10 PHY. > >Update the helper intel_encoder_is_c10phy() to return true only for >PORT A/PHY on PTL. >
I think we need a "Fixes" tag here. Fixes: 9d10de78a37f ("drm/i915/wcl: C10 phy connected to port A and B") >Bspec: 72571,73944 >Signed-off-by: Dnyaneshwar Bhadane <dnyaneshwar.bhad...@intel.com> >Reviewed-by: Ankit Nautiyal <ankit.k.nauti...@intel.com> >--- > drivers/gpu/drm/i915/display/intel_cx0_phy.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > >diff --git a/drivers/gpu/drm/i915/display/intel_cx0_phy.c >b/drivers/gpu/drm/i915/display/intel_cx0_phy.c >index 801235a5bc0a..33963ad14cfa 100644 >--- a/drivers/gpu/drm/i915/display/intel_cx0_phy.c >+++ b/drivers/gpu/drm/i915/display/intel_cx0_phy.c >@@ -39,13 +39,8 @@ bool intel_encoder_is_c10phy(struct intel_encoder *encoder) > struct intel_display *display = to_intel_display(encoder); > enum phy phy = intel_encoder_to_phy(encoder); > >- /* PTL doesn't have a PHY connected to PORT B; as such, >- * there will never be a case where PTL uses PHY B. >- * WCL uses PORT A and B with the C10 PHY. >- * Reusing the condition for WCL and extending it for PORT B >- * should not cause any issues for PTL. >- */ >- if (display->platform.pantherlake && phy < PHY_C) >+ if ((display->platform.pantherlake && phy == PHY_A) || >+ ((DISPLAY_VERx100(display) == 3002) && phy == PHY_B)) This is usually a property of the SoC and not the display IP. So, we probably want to know that we are on WCL rather than display version 3002, which could theoretically be re-used in other platforms with different display PHY(s). Also, as side note, there are many superfluous parentheses in the condition. I think only the one for the if-condition is necessary. -- Gustavo Sousa > return true; > > if ((display->platform.lunarlake || display->platform.meteorlake) && > phy < PHY_C) >-- >2.51.0 >