Commit b4bde555 authored by Lucas De Marchi's avatar Lucas De Marchi Committed by Rodrigo Vivi

drm/i915/display: split DISPLAY_VER 9 and 10 in intel_setup_outputs()

Commit 5a9d38b2 ("drm/i915/display: hide workaround for broken vbt
in intel_bios.c") moved the workaround for broken or missing VBT to
intel_bios.c. However is_port_valid() only protects the handling of
different skus of the same display version. Since in
intel_setup_outputs() we share the code path with version 9, this would
also create port F for SKL/KBL, which does not exist.

Missing VBT can be reproduced when starting a headless QEMU with no
opregion available.

Avoid the issue by splitting versions 9 and 10 in intel_setup_outputs(),
which also makes it more clear what code path it's taking for each
version.

v2: move generic display version after Geminilake since that one has
a different set of outputs

Fixes: 5a9d38b2 ("drm/i915/display: hide workaround for broken vbt in intel_bios.c")
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reported-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Tested-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20210722232922.3796835-1-lucas.demarchi@intel.com
(cherry picked from commit ec387b8f)
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
parent 5d3a618f
...@@ -11361,13 +11361,19 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv) ...@@ -11361,13 +11361,19 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
intel_ddi_init(dev_priv, PORT_B); intel_ddi_init(dev_priv, PORT_B);
intel_ddi_init(dev_priv, PORT_C); intel_ddi_init(dev_priv, PORT_C);
vlv_dsi_init(dev_priv); vlv_dsi_init(dev_priv);
} else if (DISPLAY_VER(dev_priv) >= 9) { } else if (DISPLAY_VER(dev_priv) == 10) {
intel_ddi_init(dev_priv, PORT_A); intel_ddi_init(dev_priv, PORT_A);
intel_ddi_init(dev_priv, PORT_B); intel_ddi_init(dev_priv, PORT_B);
intel_ddi_init(dev_priv, PORT_C); intel_ddi_init(dev_priv, PORT_C);
intel_ddi_init(dev_priv, PORT_D); intel_ddi_init(dev_priv, PORT_D);
intel_ddi_init(dev_priv, PORT_E); intel_ddi_init(dev_priv, PORT_E);
intel_ddi_init(dev_priv, PORT_F); intel_ddi_init(dev_priv, PORT_F);
} else if (DISPLAY_VER(dev_priv) >= 9) {
intel_ddi_init(dev_priv, PORT_A);
intel_ddi_init(dev_priv, PORT_B);
intel_ddi_init(dev_priv, PORT_C);
intel_ddi_init(dev_priv, PORT_D);
intel_ddi_init(dev_priv, PORT_E);
} else if (HAS_DDI(dev_priv)) { } else if (HAS_DDI(dev_priv)) {
u32 found; u32 found;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment