On Wed, 2022-01-26 at 12:43 +0200, Imre Deak wrote: > The TCSS_DDI_STATUS register is indexed by tc_port not by the FIA port > index, fix this up. This only caused an issue on TC#3/4 ports in legacy > mode, as in all other cases the two indices either match (on TC#1/2) or > the TCSS_DDI_STATUS_READY flag is set regardless of something being > connected or not (on TC#1/2/3/4 in dp-alt and tbt-alt modes). > Reviewed-by: José Roberto de Souza <jose.souza@xxxxxxxxx> > Reported-and-tested-by: Chia-Lin Kao (AceLan) <acelan.kao@xxxxxxxxxxxxx> > Fixes: 55ce306c2aa1 ("drm/i915/adl_p: Implement TC sequences") > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4698 > Cc: José Roberto de Souza <jose.souza@xxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # v5.14+ > Signed-off-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_tc.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_tc.c b/drivers/gpu/drm/i915/display/intel_tc.c > index 4eefe7b0bb263..3291124a99e5a 100644 > --- a/drivers/gpu/drm/i915/display/intel_tc.c > +++ b/drivers/gpu/drm/i915/display/intel_tc.c > @@ -346,10 +346,11 @@ static bool icl_tc_phy_status_complete(struct intel_digital_port *dig_port) > static bool adl_tc_phy_status_complete(struct intel_digital_port *dig_port) > { > struct drm_i915_private *i915 = to_i915(dig_port->base.base.dev); > + enum tc_port tc_port = intel_port_to_tc(i915, dig_port->base.port); > struct intel_uncore *uncore = &i915->uncore; > u32 val; > > - val = intel_uncore_read(uncore, TCSS_DDI_STATUS(dig_port->tc_phy_fia_idx)); > + val = intel_uncore_read(uncore, TCSS_DDI_STATUS(tc_port)); > if (val == 0xffffffff) { > drm_dbg_kms(&i915->drm, > "Port %s: PHY in TCCOLD, assuming not complete\n",