drm/i915: Give DDI encoders even better names
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 28 Oct 2020 21:33:07 +0000 (23:33 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 30 Oct 2020 12:47:15 +0000 (14:47 +0200)
Let's pimp the DDI encoder->name to reflect what the spec calls them.
Ie. on pre-tgl DDI A-F, on tgl+ DDI A-C or DDI TC1-6.

Also since each encoder is really a combination of the DDI and the PHY
we include the PHY name as well.

ICL is a bit special since it already has the two different types
of DDIs (combo or TC) but it still calls them just DDI A-F regarless
of the type. For that let's add an extra "(TC)" note to remind
is which type of DDI it really is.

The code is darn ugly, but not sure there's much we can do about it.

Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201028213323.5423-4-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/intel_ddi.c

index 24245157dcb94ac70cc7c6effc6cf5b79b0eb91f..19b16517a5025f2e8dd983c2cd4a58c1208f2fd2 100644 (file)
@@ -5174,8 +5174,31 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
 
        encoder = &dig_port->base;
 
-       drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs,
-                        DRM_MODE_ENCODER_TMDS, "DDI %c", port_name(port));
+       if (INTEL_GEN(dev_priv) >= 12) {
+               enum tc_port tc_port = intel_port_to_tc(dev_priv, port);
+
+               drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs,
+                                DRM_MODE_ENCODER_TMDS,
+                                "DDI %s%c/PHY %s%c",
+                                port >= PORT_TC1 ? "TC" : "",
+                                port >= PORT_TC1 ? port_name(port) : port - PORT_TC1 + '1',
+                                tc_port != TC_PORT_NONE ? "TC" : "",
+                                tc_port != TC_PORT_NONE ? phy_name(phy) : tc_port - TC_PORT_1 + '1');
+       } else if (INTEL_GEN(dev_priv) >= 11) {
+               enum tc_port tc_port = intel_port_to_tc(dev_priv, port);
+
+               drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs,
+                                DRM_MODE_ENCODER_TMDS,
+                                "DDI %c%s/PHY %s%c",
+                                port_name(port),
+                                port >= PORT_C ? " (TC)" : "",
+                                tc_port != TC_PORT_NONE ? "TC" : "",
+                                tc_port != TC_PORT_NONE ? phy_name(phy) : tc_port - TC_PORT_1 + '1');
+       } else {
+               drm_encoder_init(&dev_priv->drm, &encoder->base, &intel_ddi_funcs,
+                                DRM_MODE_ENCODER_TMDS,
+                                "DDI %c/PHY %c", port_name(port),  phy_name(phy));
+       }
 
        mutex_init(&dig_port->hdcp_mutex);
        dig_port->num_hdcp_streams = 0;