[Intel-gfx] [PATCH v3 03/19] drm/i915: Give DDI encoders even better names
Jani Nikula
jani.nikula at linux.intel.com
Tue Nov 17 14:33:24 UTC 2020
On Wed, 28 Oct 2020, Ville Syrjala <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_ddi.c | 27 ++++++++++++++++++++++--
> 1 file changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 24245157dcb9..19b16517a502 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -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');
Frankly, this is a really ugly way to define encoder names, and it's
hard to decipher what's actually going on. Even after I see logs with
obviously bogus names such as:
[ENCODER:235:DDI ./PHY 0]
I find it tedious to decipher what exactly is wrong here.
I guess the 2nd port >= PORT_TC1 check should be reversed, but it
doesn't exactly give me confidence about the rest.
BR,
Jani.
> + } 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;
--
Jani Nikula, Intel Open Source Graphics Center
More information about the Intel-gfx
mailing list