On Wed, Feb 22, 2023 at 7:02 AM Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > I just wanted to init DDI ports in VBT child device order > without any up front assumptions about which conflicting > child device defition is valid. That is pretty much what > we need to do for the ADL laptops with the phantom eDP vs. > native HDMI on DDI B. > > However that approach doesn't work for some of the weird > SKL boards that have a phantom eDP on DDI A+AUX A and > and a real DP->VGA converter on DDI E+AUX A. For those > I had to introduce HPD live status check during eDP init. > > One of the remaining concerns I still have is what happens > when we encounter VBTs with more AUX CH/DDC pin conflicts? > I think what we might want to do eventually is ignore the > conflicts as much as possible, and just init everything > based on VBT, trusting HPD to take care of things in the > end. That of course does have certain issues wrt. connector > forcing, but dunno if we can avoid those at all. > > Also I think we need to nuke all the platform default AUX > CH/DDC pin stuff, or at least only try to utilize those > only once we've consumed the VBT fully. > > v2: Fix SKL DDI A HPD live state > v3: Replace AUX CH/DDC pin sanitation with availability checks The series can solve HDMI detection issue on an ADL laptop. The caveat is that it can't be cleanly applied to current drm-tip, so the test was conducted on older drm tag. Tested-by: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> > Ville Syrjälä (22): > drm/i915: Populate dig_port->connected() before connector init > drm/i915: Fix SKL DDI A digital port .connected() > drm/i915: Get rid of the gm45 HPD live state nonsense > drm/i915: Introduce <platoform>_hotplug_mask() > drm/i915: Introduce intel_hpd_detection() > drm/i915: Check HPD live state during eDP probe > drm/i915: Sanitize child devices later > drm/i915: Split map_aux_ch() into per-platform arrays > drm/i915: Flip VBT DDC pin maps around > drm/i915: Nuke intel_bios_is_port_dp_dual_mode() > drm/i915: Remove bogus DDI-F from hsw/bdw output init > drm/i915: Introduce device info port_mask > drm/i915: Assert that device info bitmasks have enough bits > drm/i915: Assert that the port being initialized is valid > drm/i915: Beef up SDVO/HDMI port checks > drm/i915: Init DDI outputs based on port_mask on skl+ > drm/i915: Try to initialize DDI/ICL+ DSI ports for every VBT child > device > drm/i915: Convert HSW/BDW to use VBT driven DDI probe > drm/i915: Remove DDC pin sanitation > drm/i915: Remove AUX CH sanitation > drm/i915: Initialize dig_port->aux_ch to NONE to be sure > drm/i915: Only populate aux_ch is really needed > > drivers/gpu/drm/i915/display/g4x_dp.c | 39 +- > drivers/gpu/drm/i915/display/g4x_hdmi.c | 26 +- > drivers/gpu/drm/i915/display/icl_dsi.c | 11 +- > drivers/gpu/drm/i915/display/icl_dsi.h | 6 +- > drivers/gpu/drm/i915/display/intel_bios.c | 422 +++++++----------- > drivers/gpu/drm/i915/display/intel_bios.h | 12 +- > drivers/gpu/drm/i915/display/intel_crt.c | 2 + > drivers/gpu/drm/i915/display/intel_ddi.c | 148 ++++-- > drivers/gpu/drm/i915/display/intel_ddi.h | 5 +- > drivers/gpu/drm/i915/display/intel_display.c | 89 +--- > drivers/gpu/drm/i915/display/intel_display.h | 2 + > .../gpu/drm/i915/display/intel_display_core.h | 2 - > drivers/gpu/drm/i915/display/intel_dp.c | 28 ++ > drivers/gpu/drm/i915/display/intel_dp_aux.c | 51 ++- > drivers/gpu/drm/i915/display/intel_dvo.c | 2 + > drivers/gpu/drm/i915/display/intel_hdmi.c | 78 +++- > drivers/gpu/drm/i915/display/intel_sdvo.c | 20 +- > drivers/gpu/drm/i915/i915_irq.c | 365 ++++++++++++--- > drivers/gpu/drm/i915/i915_irq.h | 2 + > drivers/gpu/drm/i915/i915_pci.c | 31 ++ > drivers/gpu/drm/i915/i915_reg.h | 13 +- > drivers/gpu/drm/i915/intel_device_info.c | 9 + > drivers/gpu/drm/i915/intel_device_info.h | 1 + > 23 files changed, 843 insertions(+), 521 deletions(-) > > -- > 2.39.2 > >