On Fri, 17 Dec 2021, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > 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@xxxxxxxxx> > > 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@xxxxxxxxxxxxxxx> > --- > 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