diff mbox series

[2/3] drm/i915/icl: Detect port F presence via VBT

Message ID 20181220132604.25222-2-imre.deak@intel.com (mailing list archive)
State New, archived
Headers show
Series [1/3] drm/i915/ddi: Move DDI port detection to the corresponding helper | expand

Commit Message

Imre Deak Dec. 20, 2018, 1:26 p.m. UTC
Registering an output for a non-existent port (on a given SKU) can lead
to problems when trying to use the port, for instance timeouts during
power well enabling. Since there are no strap bits for port detection we
have to rely on VBT for this, so do that here.

There are no known SKUs where any of the A-E ports are non-existent, so
to reduce the likelihood of breakage due to incorrect VBT information,
do this detection only for port F (which is known to be missing on some
ICL SKUs).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108915
Cc: Mika Kahola <mika.kahola@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Jani Nikula Dec. 21, 2018, 2:32 p.m. UTC | #1
On Thu, 20 Dec 2018, Imre Deak <imre.deak@intel.com> wrote:
> Registering an output for a non-existent port (on a given SKU) can lead
> to problems when trying to use the port, for instance timeouts during
> power well enabling. Since there are no strap bits for port detection we
> have to rely on VBT for this, so do that here.
>
> There are no known SKUs where any of the A-E ports are non-existent, so
> to reduce the likelihood of breakage due to incorrect VBT information,
> do this detection only for port F (which is known to be missing on some
> ICL SKUs).

Even this one relies on correct VBT... but the code does what it says on
the box, so

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

>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108915
> Cc: Mika Kahola <mika.kahola@intel.com>
> Cc: Jani Nikula <jani.nikula@linux.intel.com>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index a2f8aaf61c61..2b81da068010 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14273,7 +14273,13 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		intel_ddi_init(dev_priv, PORT_C);
>  		intel_ddi_init(dev_priv, PORT_D);
>  		intel_ddi_init(dev_priv, PORT_E);
> -		intel_ddi_init(dev_priv, PORT_F);
> +		/*
> +		 * On some ICL SKUs port F is not present. No strap bits for
> +		 * this, so rely on VBT.
> +		 */
> +		if (intel_bios_is_port_present(dev_priv, PORT_F))
> +			intel_ddi_init(dev_priv, PORT_F);
> +
>  		icl_dsi_init(dev_priv);
>  	} else if (IS_GEN9_LP(dev_priv)) {
>  		/*
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index a2f8aaf61c61..2b81da068010 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14273,7 +14273,13 @@  static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		intel_ddi_init(dev_priv, PORT_C);
 		intel_ddi_init(dev_priv, PORT_D);
 		intel_ddi_init(dev_priv, PORT_E);
-		intel_ddi_init(dev_priv, PORT_F);
+		/*
+		 * On some ICL SKUs port F is not present. No strap bits for
+		 * this, so rely on VBT.
+		 */
+		if (intel_bios_is_port_present(dev_priv, PORT_F))
+			intel_ddi_init(dev_priv, PORT_F);
+
 		icl_dsi_init(dev_priv);
 	} else if (IS_GEN9_LP(dev_priv)) {
 		/*