[Intel-gfx] [PATCH 2/6] drm/i915/bios: Use i915->vbt.ports[] on CHV

Jani Nikula jani.nikula at linux.intel.com
Wed Dec 22 09:05:50 UTC 2021


On Fri, 17 Dec 2021, Ville Syrjala <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> CHV is currently straddling the divide by using parse_ddi_ports() stuff
> for aux_ch/ddc_pin but going through all old codepaths for the rest
> (intel_bios_is_port_present(), intel_bios_is_port_edp(),
> intel_bios_is_port_dp_dual_mode()). Let's switch over full and use
> i915->vbt.ports[] for the rest of the stuff.

Whoa, this is far more subtle than what the code looks!

We stop checking for port A for CHV in intel_bios_is_port_present(), but
it's a warn and I don't recall any bug reports, so probably fine. We
could add a check in parse_ddi_port(), but meh.

Ditto for intel_bios_is_port_dp_dual_mode(), except it doesn't have a
warn.

The eDP check in intel_bios_is_port_edp() becomes slightly more
relaxed. Both the old and new check require these to be set:

 - DEVICE_TYPE_DISPLAYPORT_OUTPUT
 - DEVICE_TYPE_INTERNAL_CONNECTOR.

The old code also required these to be unset:

 - DEVICE_TYPE_MIPI_OUTPUT
 - DEVICE_TYPE_COMPOSITE_OUTPUT
 - DEVICE_TYPE_DUAL_CHANNEL
 - DEVICE_TYPE_LVDS_SIGNALING
 - DEVICE_TYPE_TMDS_DVI_SIGNALING
 - DEVICE_TYPE_VIDEO_SIGNALING
 - DEVICE_TYPE_ANALOG_OUTPUT

It's possible we've added these just as a sanity check for broken VBTs
more than anything. I guess I'd see if actual problems arise.

Bottom line, I think the functional changes matter only for VBTs with
bogus data.

Reviewed-by: Jani Nikula <jani.nikula at intel.com>

>
> dvo_port_to_port() doesn't know about DSI so we won't get into
> any kind of "is port B HDMI or DSI or both?" conundrum, which
> could otherwise happen on VLV/CHV due to DSI ports living in a
> separate world from the other digital ports.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index fce1ea7a6693..b7adea9827c3 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -2075,14 +2075,14 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  
>  static bool has_ddi_port_info(struct drm_i915_private *i915)
>  {
> -	return HAS_DDI(i915);
> +	return HAS_DDI(i915) || IS_CHERRYVIEW(i915);
>  }
>  
>  static void parse_ddi_ports(struct drm_i915_private *i915)
>  {
>  	struct intel_bios_encoder_data *devdata;
>  
> -	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
> +	if (!has_ddi_port_info(i915))
>  		return;
>  
>  	if (i915->vbt.version < 155)

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-gfx mailing list