bool intel_phy_is_tc(struct drm_i915_private *dev_priv, enum phy phy)
 {
-       if (IS_TIGERLAKE(dev_priv))
+       if (IS_ALDERLAKE_P(dev_priv))
+               return phy >= PHY_F && phy <= PHY_I;
+       else if (IS_TIGERLAKE(dev_priv))
                return phy >= PHY_D && phy <= PHY_I;
        else if (IS_ICELAKE(dev_priv))
                return phy >= PHY_C && phy <= PHY_F;
        if (!HAS_DISPLAY(dev_priv))
                return;
 
-       if (IS_ALDERLAKE_S(dev_priv)) {
+       if (IS_ALDERLAKE_P(dev_priv)) {
+               intel_ddi_init(dev_priv, PORT_A);
+               intel_ddi_init(dev_priv, PORT_B);
+               intel_ddi_init(dev_priv, PORT_TC1);
+               intel_ddi_init(dev_priv, PORT_TC2);
+               intel_ddi_init(dev_priv, PORT_TC3);
+               intel_ddi_init(dev_priv, PORT_TC4);
+       } else if (IS_ALDERLAKE_S(dev_priv)) {
                intel_ddi_init(dev_priv, PORT_A);
                intel_ddi_init(dev_priv, PORT_TC1);
                intel_ddi_init(dev_priv, PORT_TC2);