All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
@ 2019-01-21 14:21 Jani Nikula
  2019-01-21 14:21 ` [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS Jani Nikula
                   ` (6 more replies)
  0 siblings, 7 replies; 15+ messages in thread
From: Jani Nikula @ 2019-01-21 14:21 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

With new platforms not having CRT support and most conditions in
intel_crt_present() being specific to DDI, split out the CRT
initialization to platform specific blocks in the if ladder. Add new
Pineview block for this.

This puts intel_crt_init() more in line with the rest of the outputs,
and makes it slightly easier for the uninitiated to figure out which
platforms actually have what.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 37 ++++++++++++++++++----------
 1 file changed, 24 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 2fa9f4aec08e..e8bc297c60ab 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14245,23 +14245,17 @@ static bool has_edp_a(struct drm_i915_private *dev_priv)
 	return true;
 }
 
-static bool intel_crt_present(struct drm_i915_private *dev_priv)
+static bool intel_ddi_crt_present(struct drm_i915_private *dev_priv)
 {
-	if (INTEL_GEN(dev_priv) >= 9)
-		return false;
-
 	if (IS_HSW_ULT(dev_priv) || IS_BDW_ULT(dev_priv))
 		return false;
 
-	if (IS_CHERRYVIEW(dev_priv))
-		return false;
-
 	if (HAS_PCH_LPT_H(dev_priv) &&
 	    I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)
 		return false;
 
 	/* DDI E can't be used if DDI A requires 4 lanes */
-	if (HAS_DDI(dev_priv) && I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
+	if (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
 		return false;
 
 	if (!dev_priv->vbt.int_crt_support)
@@ -14323,9 +14317,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	 */
 	intel_lvds_init(dev_priv);
 
-	if (intel_crt_present(dev_priv))
-		intel_crt_init(dev_priv);
-
 	if (IS_ICELAKE(dev_priv)) {
 		intel_ddi_init(dev_priv, PORT_A);
 		intel_ddi_init(dev_priv, PORT_B);
@@ -14354,6 +14345,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	} else if (HAS_DDI(dev_priv)) {
 		int found;
 
+		if (intel_ddi_crt_present(dev_priv))
+			intel_crt_init(dev_priv);
+
 		/*
 		 * Haswell uses DDI functions to detect digital outputs.
 		 * On SKL pre-D0 the strap isn't connected, so we assume
@@ -14385,6 +14379,10 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 	} else if (HAS_PCH_SPLIT(dev_priv)) {
 		int found;
+
+		if (dev_priv->vbt.int_crt_support)
+			intel_crt_init(dev_priv);
+
 		dpd_is_edp = intel_dp_is_port_edp(dev_priv, PORT_D);
 
 		if (has_edp_a(dev_priv))
@@ -14413,6 +14411,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
 		bool has_edp, has_port;
 
+		if (IS_VALLEYVIEW(dev_priv) && dev_priv->vbt.int_crt_support)
+			intel_crt_init(dev_priv);
+
 		/*
 		 * The DP_DETECTED bit is the latched state of the DDC
 		 * SDA pin at boot. However since eDP doesn't require DDC
@@ -14455,9 +14456,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		}
 
 		vlv_dsi_init(dev_priv);
-	} else if (!IS_GEN(dev_priv, 2) && !IS_PINEVIEW(dev_priv)) {
+	} else if (IS_PINEVIEW(dev_priv)) {
+		if (dev_priv->vbt.int_crt_support)
+			intel_crt_init(dev_priv);
+	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
 		bool found = false;
 
+		if (dev_priv->vbt.int_crt_support)
+			intel_crt_init(dev_priv);
+
 		if (I915_READ(GEN3_SDVOB) & SDVO_DETECTED) {
 			DRM_DEBUG_KMS("probing SDVOB\n");
 			found = intel_sdvo_init(dev_priv, GEN3_SDVOB, PORT_B);
@@ -14489,8 +14496,12 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
 			intel_dp_init(dev_priv, DP_D, PORT_D);
-	} else if (IS_GEN(dev_priv, 2))
+	} else if (IS_GEN(dev_priv, 2)) {
+		if (dev_priv->vbt.int_crt_support)
+			intel_crt_init(dev_priv);
+
 		intel_dvo_init(dev_priv);
+	}
 
 	if (SUPPORTS_TV(dev_priv))
 		intel_tv_init(dev_priv);
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
@ 2019-01-21 14:21 ` Jani Nikula
  2019-01-21 19:30   ` Ville Syrjälä
  2019-01-21 14:21 ` [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported() Jani Nikula
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2019-01-21 14:21 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

With new platforms not having LVDS support, only call intel_lvds_init()
on platforms that might actually have LVDS. Move the comment about eDP
init to the PCH block where it's relevant.

This puts intel_lvds_init() more in line with the rest of the outputs,
and makes it slightly easier for the uninitiated to figure out which
platforms actually have what.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index e8bc297c60ab..4b5704a87934 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14310,13 +14310,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	if (!HAS_DISPLAY(dev_priv))
 		return;
 
-	/*
-	 * intel_edp_init_connector() depends on this completing first, to
-	 * prevent the registeration of both eDP and LVDS and the incorrect
-	 * sharing of the PPS.
-	 */
-	intel_lvds_init(dev_priv);
-
 	if (IS_ICELAKE(dev_priv)) {
 		intel_ddi_init(dev_priv, PORT_A);
 		intel_ddi_init(dev_priv, PORT_B);
@@ -14380,6 +14373,13 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	} else if (HAS_PCH_SPLIT(dev_priv)) {
 		int found;
 
+		/*
+		 * intel_edp_init_connector() depends on this completing first,
+		 * to prevent the registration of both eDP and LVDS and the
+		 * incorrect sharing of the PPS.
+		 */
+		intel_lvds_init(dev_priv);
+
 		if (dev_priv->vbt.int_crt_support)
 			intel_crt_init(dev_priv);
 
@@ -14457,11 +14457,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		vlv_dsi_init(dev_priv);
 	} else if (IS_PINEVIEW(dev_priv)) {
+		intel_lvds_init(dev_priv);
+
 		if (dev_priv->vbt.int_crt_support)
 			intel_crt_init(dev_priv);
 	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
 		bool found = false;
 
+		intel_lvds_init(dev_priv);
+
 		if (dev_priv->vbt.int_crt_support)
 			intel_crt_init(dev_priv);
 
@@ -14497,6 +14501,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
 			intel_dp_init(dev_priv, DP_D, PORT_D);
 	} else if (IS_GEN(dev_priv, 2)) {
+		intel_lvds_init(dev_priv);
+
 		if (dev_priv->vbt.int_crt_support)
 			intel_crt_init(dev_priv);
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported()
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
  2019-01-21 14:21 ` [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS Jani Nikula
@ 2019-01-21 14:21 ` Jani Nikula
  2019-01-21 19:31   ` Ville Syrjälä
  2019-01-21 14:21 ` [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV Jani Nikula
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2019-01-21 14:21 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Now that intel_lvds_init() is only called for platforms that might have
LVDS, move the remaining checks to intel_setup_outputs(), again similar
to other outputs, and remove the overlapping checks.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c |  6 ++++--
 drivers/gpu/drm/i915/intel_lvds.c    | 23 -----------------------
 2 files changed, 4 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4b5704a87934..4207ee0b83ce 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14464,7 +14464,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
 		bool found = false;
 
-		intel_lvds_init(dev_priv);
+		if (IS_MOBILE(dev_priv))
+			intel_lvds_init(dev_priv);
 
 		if (dev_priv->vbt.int_crt_support)
 			intel_crt_init(dev_priv);
@@ -14501,7 +14502,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
 			intel_dp_init(dev_priv, DP_D, PORT_D);
 	} else if (IS_GEN(dev_priv, 2)) {
-		intel_lvds_init(dev_priv);
+		if (IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
+			intel_lvds_init(dev_priv);
 
 		if (dev_priv->vbt.int_crt_support)
 			intel_crt_init(dev_priv);
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 46a5dfd5cdf7..815ed463d9c5 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -798,26 +798,6 @@ static bool compute_is_dual_link_lvds(struct intel_lvds_encoder *lvds_encoder)
 	return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP;
 }
 
-static bool intel_lvds_supported(struct drm_i915_private *dev_priv)
-{
-	/*
-	 * With the introduction of the PCH we gained a dedicated
-	 * LVDS presence pin, use it.
-	 */
-	if (HAS_PCH_IBX(dev_priv) || HAS_PCH_CPT(dev_priv))
-		return true;
-
-	/*
-	 * Otherwise LVDS was only attached to mobile products,
-	 * except for the inglorious 830gm
-	 */
-	if (INTEL_GEN(dev_priv) <= 4 &&
-	    IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
-		return true;
-
-	return false;
-}
-
 /**
  * intel_lvds_init - setup LVDS connectors on this device
  * @dev_priv: i915 device
@@ -842,9 +822,6 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
 	u8 pin;
 	u32 allowed_scalers;
 
-	if (!intel_lvds_supported(dev_priv))
-		return;
-
 	/* Skip init on machines we know falsely report LVDS */
 	if (dmi_check_system(intel_no_lvds)) {
 		WARN(!dev_priv->vbt.int_lvds_support,
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
  2019-01-21 14:21 ` [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS Jani Nikula
  2019-01-21 14:21 ` [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported() Jani Nikula
@ 2019-01-21 14:21 ` Jani Nikula
  2019-01-21 19:33   ` Ville Syrjälä
  2019-01-21 14:21 ` [PATCH 5/5] drm/i915: rename has_edp_a() to intel_pch_has_edp_a() Jani Nikula
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2019-01-21 14:21 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

With most platforms not having TV support, only call intel_tv_init() on
platforms that might actually have TV, specifically gens 3 and 4.

This puts intel_tv_init() more in line with the rest of the outputs, and
makes it slightly easier for the uninitiated to figure out which
platforms actually have what.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4207ee0b83ce..6960004fdc94 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14501,6 +14501,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
 			intel_dp_init(dev_priv, DP_D, PORT_D);
+
+		if (SUPPORTS_TV(dev_priv))
+			intel_tv_init(dev_priv);
 	} else if (IS_GEN(dev_priv, 2)) {
 		if (IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
 			intel_lvds_init(dev_priv);
@@ -14511,9 +14514,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		intel_dvo_init(dev_priv);
 	}
 
-	if (SUPPORTS_TV(dev_priv))
-		intel_tv_init(dev_priv);
-
 	intel_psr_init(dev_priv);
 
 	for_each_intel_encoder(&dev_priv->drm, encoder) {
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 5/5] drm/i915: rename has_edp_a() to intel_pch_has_edp_a()
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
                   ` (2 preceding siblings ...)
  2019-01-21 14:21 ` [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV Jani Nikula
@ 2019-01-21 14:21 ` Jani Nikula
  2019-01-21 19:36   ` Ville Syrjälä
  2019-01-21 15:39 ` ✓ Fi.CI.BAT: success for series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 15+ messages in thread
From: Jani Nikula @ 2019-01-21 14:21 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Clarify that the name is specific to PCH platforms.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 6960004fdc94..32270d7b71b9 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14231,7 +14231,7 @@ static int intel_encoder_clones(struct intel_encoder *encoder)
 	return index_mask;
 }
 
-static bool has_edp_a(struct drm_i915_private *dev_priv)
+static bool intel_pch_has_edp_a(struct drm_i915_private *dev_priv)
 {
 	if (!IS_MOBILE(dev_priv))
 		return false;
@@ -14385,7 +14385,7 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 
 		dpd_is_edp = intel_dp_is_port_edp(dev_priv, PORT_D);
 
-		if (has_edp_a(dev_priv))
+		if (intel_pch_has_edp_a(dev_priv))
 			intel_dp_init(dev_priv, DP_A, PORT_A);
 
 		if (I915_READ(PCH_HDMIB) & SDVO_DETECTED) {
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* ✓ Fi.CI.BAT: success for series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
                   ` (3 preceding siblings ...)
  2019-01-21 14:21 ` [PATCH 5/5] drm/i915: rename has_edp_a() to intel_pch_has_edp_a() Jani Nikula
@ 2019-01-21 15:39 ` Patchwork
  2019-01-21 19:03 ` ✓ Fi.CI.IGT: " Patchwork
  2019-01-21 19:30 ` [PATCH 1/5] " Ville Syrjälä
  6 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2019-01-21 15:39 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
URL   : https://patchwork.freedesktop.org/series/55513/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5458 -> Patchwork_11996
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/55513/revisions/1/mbox/

Known issues
------------

  Here are the changes found in Patchwork_11996 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_busy@basic-flip-b:
    - fi-gdg-551:         PASS -> FAIL [fdo#103182]

  * igt@kms_pipe_crc_basic@read-crc-pipe-a-frame-sequence:
    - fi-byt-clapper:     PASS -> FAIL [fdo#103191] / [fdo#107362]

  * igt@kms_pipe_crc_basic@read-crc-pipe-b:
    - fi-byt-clapper:     PASS -> FAIL [fdo#107362] +1

  * igt@pm_rpm@basic-rte:
    - fi-byt-j1900:       PASS -> FAIL [fdo#108800]

  
#### Possible fixes ####

  * igt@i915_module_load@reload-no-display:
    - fi-bwr-2160:        INCOMPLETE -> PASS

  * igt@kms_frontbuffer_tracking@basic:
    - fi-byt-clapper:     FAIL [fdo#103167] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
    - fi-byt-clapper:     FAIL [fdo#103191] / [fdo#107362] -> PASS

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108800]: https://bugs.freedesktop.org/show_bug.cgi?id=108800
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278


Participating hosts (46 -> 43)
------------------------------

  Missing    (3): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan 


Build changes
-------------

    * Linux: CI_DRM_5458 -> Patchwork_11996

  CI_DRM_5458: 74ec7792af09018594097356ddc79d87cb9504f9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4779: d4199510374514489b1ab56e3416f53f6c1d6291 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_11996: 668fb89873712da0211716fc5371e7b7ed7a0fc0 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

668fb8987371 drm/i915: rename has_edp_a() to intel_pch_has_edp_a()
25029515ae52 drm/i915/tv: only call intel_tv_init() on platforms that might have TV
fcb78959a800 drm/i915/lvds: nuke intel_lvds_supported()
63516b14cceb drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS
999884307e02 drm/i915/crt: split out intel_crt_present() to platform specific setup

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11996/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* ✓ Fi.CI.IGT: success for series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
                   ` (4 preceding siblings ...)
  2019-01-21 15:39 ` ✓ Fi.CI.BAT: success for series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Patchwork
@ 2019-01-21 19:03 ` Patchwork
  2019-01-21 19:30 ` [PATCH 1/5] " Ville Syrjälä
  6 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2019-01-21 19:03 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
URL   : https://patchwork.freedesktop.org/series/55513/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5458_full -> Patchwork_11996_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Known issues
------------

  Here are the changes found in Patchwork_11996_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_eio@in-flight-external:
    - shard-glk:          PASS -> FAIL [fdo#105957]

  * igt@kms_busy@extended-pageflip-hang-newfb-render-b:
    - shard-apl:          NOTRUN -> DMESG-WARN [fdo#107956]

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
    - shard-glk:          PASS -> DMESG-WARN [fdo#107956]

  * igt@kms_color@pipe-b-degamma:
    - shard-apl:          PASS -> FAIL [fdo#104782]

  * igt@kms_cursor_crc@cursor-128x128-dpms:
    - shard-apl:          PASS -> FAIL [fdo#103232]

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-apl:          PASS -> FAIL [fdo#103167] +1

  * igt@kms_plane@pixel-format-pipe-a-planes-source-clamping:
    - shard-apl:          PASS -> FAIL [fdo#108948]

  * igt@kms_plane@plane-position-covered-pipe-a-planes:
    - shard-apl:          PASS -> FAIL [fdo#103166] +2

  * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145] / [fdo#108590]

  * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145]

  * igt@kms_setmode@basic:
    - shard-apl:          PASS -> FAIL [fdo#99912]

  
#### Possible fixes ####

  * igt@gem_ctx_isolation@vecs0-s3:
    - shard-kbl:          INCOMPLETE [fdo#103665] -> PASS

  * igt@gem_exec_reuse@contexts:
    - shard-apl:          INCOMPLETE [fdo#103927] -> PASS

  * igt@kms_busy@extended-modeset-hang-newfb-render-a:
    - shard-snb:          DMESG-WARN [fdo#107956] -> PASS

  * igt@kms_color@pipe-c-ctm-max:
    - shard-apl:          FAIL [fdo#108147] -> PASS

  * igt@kms_cursor_crc@cursor-64x64-random:
    - shard-apl:          FAIL [fdo#103232] -> PASS

  * igt@kms_flip@flip-vs-expired-vblank:
    - shard-apl:          FAIL [fdo#102887] / [fdo#105363] -> PASS

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-apl:          FAIL [fdo#103167] -> PASS +2

  * igt@kms_plane_multiple@atomic-pipe-b-tiling-y:
    - shard-apl:          FAIL [fdo#103166] -> PASS

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-apl:          DMESG-FAIL [fdo#108950] -> PASS

  * igt@kms_setmode@basic:
    - shard-kbl:          FAIL [fdo#99912] -> PASS

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#102887]: https://bugs.freedesktop.org/show_bug.cgi?id=102887
  [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104782]: https://bugs.freedesktop.org/show_bug.cgi?id=104782
  [fdo#105363]: https://bugs.freedesktop.org/show_bug.cgi?id=105363
  [fdo#105957]: https://bugs.freedesktop.org/show_bug.cgi?id=105957
  [fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108147]: https://bugs.freedesktop.org/show_bug.cgi?id=108147
  [fdo#108590]: https://bugs.freedesktop.org/show_bug.cgi?id=108590
  [fdo#108948]: https://bugs.freedesktop.org/show_bug.cgi?id=108948
  [fdo#108950]: https://bugs.freedesktop.org/show_bug.cgi?id=108950
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (7 -> 5)
------------------------------

  Missing    (2): shard-skl shard-iclb 


Build changes
-------------

    * Linux: CI_DRM_5458 -> Patchwork_11996

  CI_DRM_5458: 74ec7792af09018594097356ddc79d87cb9504f9 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4779: d4199510374514489b1ab56e3416f53f6c1d6291 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_11996: 668fb89873712da0211716fc5371e7b7ed7a0fc0 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_11996/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
  2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
                   ` (5 preceding siblings ...)
  2019-01-21 19:03 ` ✓ Fi.CI.IGT: " Patchwork
@ 2019-01-21 19:30 ` Ville Syrjälä
  2019-01-22  8:26   ` Jani Nikula
  6 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2019-01-21 19:30 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Mon, Jan 21, 2019 at 04:21:30PM +0200, Jani Nikula wrote:
> With new platforms not having CRT support and most conditions in
> intel_crt_present() being specific to DDI, split out the CRT
> initialization to platform specific blocks in the if ladder. Add new
> Pineview block for this.
> 
> This puts intel_crt_init() more in line with the rest of the outputs,
> and makes it slightly easier for the uninitiated to figure out which
> platforms actually have what.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 37 ++++++++++++++++++----------
>  1 file changed, 24 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 2fa9f4aec08e..e8bc297c60ab 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14245,23 +14245,17 @@ static bool has_edp_a(struct drm_i915_private *dev_priv)
>  	return true;
>  }
>  
> -static bool intel_crt_present(struct drm_i915_private *dev_priv)
> +static bool intel_ddi_crt_present(struct drm_i915_private *dev_priv)
>  {
> -	if (INTEL_GEN(dev_priv) >= 9)
> -		return false;

We should probably keep this in case the vbt is bonkers.

> -
>  	if (IS_HSW_ULT(dev_priv) || IS_BDW_ULT(dev_priv))
>  		return false;
>  
> -	if (IS_CHERRYVIEW(dev_priv))
> -		return false;
> -
>  	if (HAS_PCH_LPT_H(dev_priv) &&
>  	    I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)
>  		return false;
>  
>  	/* DDI E can't be used if DDI A requires 4 lanes */
> -	if (HAS_DDI(dev_priv) && I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
> +	if (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
>  		return false;
>  
>  	if (!dev_priv->vbt.int_crt_support)
> @@ -14323,9 +14317,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  	 */
>  	intel_lvds_init(dev_priv);
>  
> -	if (intel_crt_present(dev_priv))
> -		intel_crt_init(dev_priv);
> -
>  	if (IS_ICELAKE(dev_priv)) {
>  		intel_ddi_init(dev_priv, PORT_A);
>  		intel_ddi_init(dev_priv, PORT_B);
> @@ -14354,6 +14345,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  	} else if (HAS_DDI(dev_priv)) {
>  		int found;
>  
> +		if (intel_ddi_crt_present(dev_priv))
> +			intel_crt_init(dev_priv);
> +
>  		/*
>  		 * Haswell uses DDI functions to detect digital outputs.
>  		 * On SKL pre-D0 the strap isn't connected, so we assume
> @@ -14385,6 +14379,10 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  	} else if (HAS_PCH_SPLIT(dev_priv)) {
>  		int found;
> +
> +		if (dev_priv->vbt.int_crt_support)
> +			intel_crt_init(dev_priv);
> +
>  		dpd_is_edp = intel_dp_is_port_edp(dev_priv, PORT_D);
>  
>  		if (has_edp_a(dev_priv))
> @@ -14413,6 +14411,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>  		bool has_edp, has_port;
>  
> +		if (IS_VALLEYVIEW(dev_priv) && dev_priv->vbt.int_crt_support)
> +			intel_crt_init(dev_priv);
> +
>  		/*
>  		 * The DP_DETECTED bit is the latched state of the DDC
>  		 * SDA pin at boot. However since eDP doesn't require DDC
> @@ -14455,9 +14456,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		}
>  
>  		vlv_dsi_init(dev_priv);
> -	} else if (!IS_GEN(dev_priv, 2) && !IS_PINEVIEW(dev_priv)) {
> +	} else if (IS_PINEVIEW(dev_priv)) {
> +		if (dev_priv->vbt.int_crt_support)
> +			intel_crt_init(dev_priv);
> +	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
>  		bool found = false;
>  
> +		if (dev_priv->vbt.int_crt_support)
> +			intel_crt_init(dev_priv);
> +
>  		if (I915_READ(GEN3_SDVOB) & SDVO_DETECTED) {
>  			DRM_DEBUG_KMS("probing SDVOB\n");
>  			found = intel_sdvo_init(dev_priv, GEN3_SDVOB, PORT_B);
> @@ -14489,8 +14496,12 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>  			intel_dp_init(dev_priv, DP_D, PORT_D);
> -	} else if (IS_GEN(dev_priv, 2))
> +	} else if (IS_GEN(dev_priv, 2)) {
> +		if (dev_priv->vbt.int_crt_support)
> +			intel_crt_init(dev_priv);

int_crt_support is always true for pre-vlv/pre-hsw so we could
skip the check in most of these cases. Either way is fine by me.

With the gen9 stuff sorted this is
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +
>  		intel_dvo_init(dev_priv);
> +	}
>  
>  	if (SUPPORTS_TV(dev_priv))
>  		intel_tv_init(dev_priv);
> -- 
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS
  2019-01-21 14:21 ` [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS Jani Nikula
@ 2019-01-21 19:30   ` Ville Syrjälä
  0 siblings, 0 replies; 15+ messages in thread
From: Ville Syrjälä @ 2019-01-21 19:30 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Mon, Jan 21, 2019 at 04:21:31PM +0200, Jani Nikula wrote:
> With new platforms not having LVDS support, only call intel_lvds_init()
> on platforms that might actually have LVDS. Move the comment about eDP
> init to the PCH block where it's relevant.
> 
> This puts intel_lvds_init() more in line with the rest of the outputs,
> and makes it slightly easier for the uninitiated to figure out which
> platforms actually have what.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 20 +++++++++++++-------
>  1 file changed, 13 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index e8bc297c60ab..4b5704a87934 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14310,13 +14310,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  	if (!HAS_DISPLAY(dev_priv))
>  		return;
>  
> -	/*
> -	 * intel_edp_init_connector() depends on this completing first, to
> -	 * prevent the registeration of both eDP and LVDS and the incorrect
> -	 * sharing of the PPS.
> -	 */
> -	intel_lvds_init(dev_priv);
> -
>  	if (IS_ICELAKE(dev_priv)) {
>  		intel_ddi_init(dev_priv, PORT_A);
>  		intel_ddi_init(dev_priv, PORT_B);
> @@ -14380,6 +14373,13 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  	} else if (HAS_PCH_SPLIT(dev_priv)) {
>  		int found;
>  
> +		/*
> +		 * intel_edp_init_connector() depends on this completing first,
> +		 * to prevent the registration of both eDP and LVDS and the
> +		 * incorrect sharing of the PPS.
> +		 */
> +		intel_lvds_init(dev_priv);
> +
>  		if (dev_priv->vbt.int_crt_support)
>  			intel_crt_init(dev_priv);
>  
> @@ -14457,11 +14457,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  		vlv_dsi_init(dev_priv);
>  	} else if (IS_PINEVIEW(dev_priv)) {
> +		intel_lvds_init(dev_priv);
> +
>  		if (dev_priv->vbt.int_crt_support)
>  			intel_crt_init(dev_priv);
>  	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
>  		bool found = false;
>  
> +		intel_lvds_init(dev_priv);
> +
>  		if (dev_priv->vbt.int_crt_support)
>  			intel_crt_init(dev_priv);
>  
> @@ -14497,6 +14501,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>  			intel_dp_init(dev_priv, DP_D, PORT_D);
>  	} else if (IS_GEN(dev_priv, 2)) {
> +		intel_lvds_init(dev_priv);
> +
>  		if (dev_priv->vbt.int_crt_support)
>  			intel_crt_init(dev_priv);
>  
> -- 
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported()
  2019-01-21 14:21 ` [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported() Jani Nikula
@ 2019-01-21 19:31   ` Ville Syrjälä
  2019-01-22  8:23     ` Jani Nikula
  0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2019-01-21 19:31 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Mon, Jan 21, 2019 at 04:21:32PM +0200, Jani Nikula wrote:
> Now that intel_lvds_init() is only called for platforms that might have
> LVDS, move the remaining checks to intel_setup_outputs(), again similar
> to other outputs, and remove the overlapping checks.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c |  6 ++++--
>  drivers/gpu/drm/i915/intel_lvds.c    | 23 -----------------------
>  2 files changed, 4 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4b5704a87934..4207ee0b83ce 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14464,7 +14464,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)

Had to read the earlier patch twice to make sure we're not leaving
ibx/cpt/ppt or pnv behind.

>  	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
>  		bool found = false;
>  
> -		intel_lvds_init(dev_priv);
> +		if (IS_MOBILE(dev_priv))
> +			intel_lvds_init(dev_priv);
>  
>  		if (dev_priv->vbt.int_crt_support)
>  			intel_crt_init(dev_priv);
> @@ -14501,7 +14502,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>  			intel_dp_init(dev_priv, DP_D, PORT_D);
>  	} else if (IS_GEN(dev_priv, 2)) {
> -		intel_lvds_init(dev_priv);
> +		if (IS_MOBILE(dev_priv) && !IS_I830(dev_priv))

aka. IS_I85X()

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> +			intel_lvds_init(dev_priv);
>  
>  		if (dev_priv->vbt.int_crt_support)
>  			intel_crt_init(dev_priv);
> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> index 46a5dfd5cdf7..815ed463d9c5 100644
> --- a/drivers/gpu/drm/i915/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/intel_lvds.c
> @@ -798,26 +798,6 @@ static bool compute_is_dual_link_lvds(struct intel_lvds_encoder *lvds_encoder)
>  	return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP;
>  }
>  
> -static bool intel_lvds_supported(struct drm_i915_private *dev_priv)
> -{
> -	/*
> -	 * With the introduction of the PCH we gained a dedicated
> -	 * LVDS presence pin, use it.
> -	 */
> -	if (HAS_PCH_IBX(dev_priv) || HAS_PCH_CPT(dev_priv))
> -		return true;
> -
> -	/*
> -	 * Otherwise LVDS was only attached to mobile products,
> -	 * except for the inglorious 830gm
> -	 */
> -	if (INTEL_GEN(dev_priv) <= 4 &&
> -	    IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
> -		return true;
> -
> -	return false;
> -}
> -
>  /**
>   * intel_lvds_init - setup LVDS connectors on this device
>   * @dev_priv: i915 device
> @@ -842,9 +822,6 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
>  	u8 pin;
>  	u32 allowed_scalers;
>  
> -	if (!intel_lvds_supported(dev_priv))
> -		return;
> -
>  	/* Skip init on machines we know falsely report LVDS */
>  	if (dmi_check_system(intel_no_lvds)) {
>  		WARN(!dev_priv->vbt.int_lvds_support,
> -- 
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV
  2019-01-21 14:21 ` [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV Jani Nikula
@ 2019-01-21 19:33   ` Ville Syrjälä
  2019-01-22  8:25     ` Jani Nikula
  0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2019-01-21 19:33 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Mon, Jan 21, 2019 at 04:21:33PM +0200, Jani Nikula wrote:
> With most platforms not having TV support, only call intel_tv_init() on
> platforms that might actually have TV, specifically gens 3 and 4.
> 
> This puts intel_tv_init() more in line with the rest of the outputs, and
> makes it slightly easier for the uninitiated to figure out which
> platforms actually have what.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4207ee0b83ce..6960004fdc94 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14501,6 +14501,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>  			intel_dp_init(dev_priv, DP_D, PORT_D);
> +
> +		if (SUPPORTS_TV(dev_priv))
> +			intel_tv_init(dev_priv);

Since PNV was split into its own thing I think this could actually
be replaced with IS_MOBILE().

Either way
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

>  	} else if (IS_GEN(dev_priv, 2)) {
>  		if (IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
>  			intel_lvds_init(dev_priv);
> @@ -14511,9 +14514,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  		intel_dvo_init(dev_priv);
>  	}
>  
> -	if (SUPPORTS_TV(dev_priv))
> -		intel_tv_init(dev_priv);
> -
>  	intel_psr_init(dev_priv);
>  
>  	for_each_intel_encoder(&dev_priv->drm, encoder) {
> -- 
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] drm/i915: rename has_edp_a() to intel_pch_has_edp_a()
  2019-01-21 14:21 ` [PATCH 5/5] drm/i915: rename has_edp_a() to intel_pch_has_edp_a() Jani Nikula
@ 2019-01-21 19:36   ` Ville Syrjälä
  0 siblings, 0 replies; 15+ messages in thread
From: Ville Syrjälä @ 2019-01-21 19:36 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Mon, Jan 21, 2019 at 04:21:34PM +0200, Jani Nikula wrote:
> Clarify that the name is specific to PCH platforms.
> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 6960004fdc94..32270d7b71b9 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -14231,7 +14231,7 @@ static int intel_encoder_clones(struct intel_encoder *encoder)
>  	return index_mask;
>  }
>  
> -static bool has_edp_a(struct drm_i915_private *dev_priv)
> +static bool intel_pch_has_edp_a(struct drm_i915_private *dev_priv)

Hmm. The port is on the CPU though. The function name reads more like
it's looking for port A on the PCH now. ilk_has_edp_a() maybe?

>  {
>  	if (!IS_MOBILE(dev_priv))
>  		return false;
> @@ -14385,7 +14385,7 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>  
>  		dpd_is_edp = intel_dp_is_port_edp(dev_priv, PORT_D);
>  
> -		if (has_edp_a(dev_priv))
> +		if (intel_pch_has_edp_a(dev_priv))
>  			intel_dp_init(dev_priv, DP_A, PORT_A);
>  
>  		if (I915_READ(PCH_HDMIB) & SDVO_DETECTED) {
> -- 
> 2.20.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported()
  2019-01-21 19:31   ` Ville Syrjälä
@ 2019-01-22  8:23     ` Jani Nikula
  0 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2019-01-22  8:23 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Mon, 21 Jan 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Mon, Jan 21, 2019 at 04:21:32PM +0200, Jani Nikula wrote:
>> Now that intel_lvds_init() is only called for platforms that might have
>> LVDS, move the remaining checks to intel_setup_outputs(), again similar
>> to other outputs, and remove the overlapping checks.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_display.c |  6 ++++--
>>  drivers/gpu/drm/i915/intel_lvds.c    | 23 -----------------------
>>  2 files changed, 4 insertions(+), 25 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 4b5704a87934..4207ee0b83ce 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -14464,7 +14464,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>
> Had to read the earlier patch twice to make sure we're not leaving
> ibx/cpt/ppt or pnv behind.
>
>>  	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
>>  		bool found = false;
>>  
>> -		intel_lvds_init(dev_priv);
>> +		if (IS_MOBILE(dev_priv))
>> +			intel_lvds_init(dev_priv);
>>  
>>  		if (dev_priv->vbt.int_crt_support)
>>  			intel_crt_init(dev_priv);
>> @@ -14501,7 +14502,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>>  			intel_dp_init(dev_priv, DP_D, PORT_D);
>>  	} else if (IS_GEN(dev_priv, 2)) {
>> -		intel_lvds_init(dev_priv);
>> +		if (IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
>
> aka. IS_I85X()

Made the change in a separate patch.

> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Thanks,
Jani.


>
>> +			intel_lvds_init(dev_priv);
>>  
>>  		if (dev_priv->vbt.int_crt_support)
>>  			intel_crt_init(dev_priv);
>> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
>> index 46a5dfd5cdf7..815ed463d9c5 100644
>> --- a/drivers/gpu/drm/i915/intel_lvds.c
>> +++ b/drivers/gpu/drm/i915/intel_lvds.c
>> @@ -798,26 +798,6 @@ static bool compute_is_dual_link_lvds(struct intel_lvds_encoder *lvds_encoder)
>>  	return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP;
>>  }
>>  
>> -static bool intel_lvds_supported(struct drm_i915_private *dev_priv)
>> -{
>> -	/*
>> -	 * With the introduction of the PCH we gained a dedicated
>> -	 * LVDS presence pin, use it.
>> -	 */
>> -	if (HAS_PCH_IBX(dev_priv) || HAS_PCH_CPT(dev_priv))
>> -		return true;
>> -
>> -	/*
>> -	 * Otherwise LVDS was only attached to mobile products,
>> -	 * except for the inglorious 830gm
>> -	 */
>> -	if (INTEL_GEN(dev_priv) <= 4 &&
>> -	    IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
>> -		return true;
>> -
>> -	return false;
>> -}
>> -
>>  /**
>>   * intel_lvds_init - setup LVDS connectors on this device
>>   * @dev_priv: i915 device
>> @@ -842,9 +822,6 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
>>  	u8 pin;
>>  	u32 allowed_scalers;
>>  
>> -	if (!intel_lvds_supported(dev_priv))
>> -		return;
>> -
>>  	/* Skip init on machines we know falsely report LVDS */
>>  	if (dmi_check_system(intel_no_lvds)) {
>>  		WARN(!dev_priv->vbt.int_lvds_support,
>> -- 
>> 2.20.1
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV
  2019-01-21 19:33   ` Ville Syrjälä
@ 2019-01-22  8:25     ` Jani Nikula
  0 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2019-01-22  8:25 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Mon, 21 Jan 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Mon, Jan 21, 2019 at 04:21:33PM +0200, Jani Nikula wrote:
>> With most platforms not having TV support, only call intel_tv_init() on
>> platforms that might actually have TV, specifically gens 3 and 4.
>> 
>> This puts intel_tv_init() more in line with the rest of the outputs, and
>> makes it slightly easier for the uninitiated to figure out which
>> platforms actually have what.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_display.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 4207ee0b83ce..6960004fdc94 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -14501,6 +14501,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  
>>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>>  			intel_dp_init(dev_priv, DP_D, PORT_D);
>> +
>> +		if (SUPPORTS_TV(dev_priv))
>> +			intel_tv_init(dev_priv);
>
> Since PNV was split into its own thing I think this could actually
> be replaced with IS_MOBILE().

If I'd been able to get rid of SUPPORTS_TV() with that altogether, I
probably would've made the change. But there's still a user in CRC code,
so I left this as-is.

BR,
Jani.


>
> Either way
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
>>  	} else if (IS_GEN(dev_priv, 2)) {
>>  		if (IS_MOBILE(dev_priv) && !IS_I830(dev_priv))
>>  			intel_lvds_init(dev_priv);
>> @@ -14511,9 +14514,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  		intel_dvo_init(dev_priv);
>>  	}
>>  
>> -	if (SUPPORTS_TV(dev_priv))
>> -		intel_tv_init(dev_priv);
>> -
>>  	intel_psr_init(dev_priv);
>>  
>>  	for_each_intel_encoder(&dev_priv->drm, encoder) {
>> -- 
>> 2.20.1
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup
  2019-01-21 19:30 ` [PATCH 1/5] " Ville Syrjälä
@ 2019-01-22  8:26   ` Jani Nikula
  0 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2019-01-22  8:26 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Mon, 21 Jan 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Mon, Jan 21, 2019 at 04:21:30PM +0200, Jani Nikula wrote:
>> With new platforms not having CRT support and most conditions in
>> intel_crt_present() being specific to DDI, split out the CRT
>> initialization to platform specific blocks in the if ladder. Add new
>> Pineview block for this.
>> 
>> This puts intel_crt_init() more in line with the rest of the outputs,
>> and makes it slightly easier for the uninitiated to figure out which
>> platforms actually have what.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_display.c | 37 ++++++++++++++++++----------
>>  1 file changed, 24 insertions(+), 13 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> index 2fa9f4aec08e..e8bc297c60ab 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -14245,23 +14245,17 @@ static bool has_edp_a(struct drm_i915_private *dev_priv)
>>  	return true;
>>  }
>>  
>> -static bool intel_crt_present(struct drm_i915_private *dev_priv)
>> +static bool intel_ddi_crt_present(struct drm_i915_private *dev_priv)
>>  {
>> -	if (INTEL_GEN(dev_priv) >= 9)
>> -		return false;
>
> We should probably keep this in case the vbt is bonkers.

Oh, definitely, thanks for spotting!

>
>> -
>>  	if (IS_HSW_ULT(dev_priv) || IS_BDW_ULT(dev_priv))
>>  		return false;
>>  
>> -	if (IS_CHERRYVIEW(dev_priv))
>> -		return false;
>> -
>>  	if (HAS_PCH_LPT_H(dev_priv) &&
>>  	    I915_READ(SFUSE_STRAP) & SFUSE_STRAP_CRT_DISABLED)
>>  		return false;
>>  
>>  	/* DDI E can't be used if DDI A requires 4 lanes */
>> -	if (HAS_DDI(dev_priv) && I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
>> +	if (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)
>>  		return false;
>>  
>>  	if (!dev_priv->vbt.int_crt_support)
>> @@ -14323,9 +14317,6 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  	 */
>>  	intel_lvds_init(dev_priv);
>>  
>> -	if (intel_crt_present(dev_priv))
>> -		intel_crt_init(dev_priv);
>> -
>>  	if (IS_ICELAKE(dev_priv)) {
>>  		intel_ddi_init(dev_priv, PORT_A);
>>  		intel_ddi_init(dev_priv, PORT_B);
>> @@ -14354,6 +14345,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  	} else if (HAS_DDI(dev_priv)) {
>>  		int found;
>>  
>> +		if (intel_ddi_crt_present(dev_priv))
>> +			intel_crt_init(dev_priv);
>> +
>>  		/*
>>  		 * Haswell uses DDI functions to detect digital outputs.
>>  		 * On SKL pre-D0 the strap isn't connected, so we assume
>> @@ -14385,6 +14379,10 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  
>>  	} else if (HAS_PCH_SPLIT(dev_priv)) {
>>  		int found;
>> +
>> +		if (dev_priv->vbt.int_crt_support)
>> +			intel_crt_init(dev_priv);
>> +
>>  		dpd_is_edp = intel_dp_is_port_edp(dev_priv, PORT_D);
>>  
>>  		if (has_edp_a(dev_priv))
>> @@ -14413,6 +14411,9 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  	} else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
>>  		bool has_edp, has_port;
>>  
>> +		if (IS_VALLEYVIEW(dev_priv) && dev_priv->vbt.int_crt_support)
>> +			intel_crt_init(dev_priv);
>> +
>>  		/*
>>  		 * The DP_DETECTED bit is the latched state of the DDC
>>  		 * SDA pin at boot. However since eDP doesn't require DDC
>> @@ -14455,9 +14456,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  		}
>>  
>>  		vlv_dsi_init(dev_priv);
>> -	} else if (!IS_GEN(dev_priv, 2) && !IS_PINEVIEW(dev_priv)) {
>> +	} else if (IS_PINEVIEW(dev_priv)) {
>> +		if (dev_priv->vbt.int_crt_support)
>> +			intel_crt_init(dev_priv);
>> +	} else if (IS_GEN_RANGE(dev_priv, 3, 4)) {
>>  		bool found = false;
>>  
>> +		if (dev_priv->vbt.int_crt_support)
>> +			intel_crt_init(dev_priv);
>> +
>>  		if (I915_READ(GEN3_SDVOB) & SDVO_DETECTED) {
>>  			DRM_DEBUG_KMS("probing SDVOB\n");
>>  			found = intel_sdvo_init(dev_priv, GEN3_SDVOB, PORT_B);
>> @@ -14489,8 +14496,12 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
>>  
>>  		if (IS_G4X(dev_priv) && (I915_READ(DP_D) & DP_DETECTED))
>>  			intel_dp_init(dev_priv, DP_D, PORT_D);
>> -	} else if (IS_GEN(dev_priv, 2))
>> +	} else if (IS_GEN(dev_priv, 2)) {
>> +		if (dev_priv->vbt.int_crt_support)
>> +			intel_crt_init(dev_priv);
>
> int_crt_support is always true for pre-vlv/pre-hsw so we could
> skip the check in most of these cases. Either way is fine by me.

I added that change as a separate patch on top.

>
> With the gen9 stuff sorted this is
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Thanks for the reviews, new series on the list.

BR,
Jani.

>
>> +
>>  		intel_dvo_init(dev_priv);
>> +	}
>>  
>>  	if (SUPPORTS_TV(dev_priv))
>>  		intel_tv_init(dev_priv);
>> -- 
>> 2.20.1
>> 
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2019-01-22  8:25 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-21 14:21 [PATCH 1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Jani Nikula
2019-01-21 14:21 ` [PATCH 2/5] drm/i915/lvds: only call intel_lvds_init() on platforms that might have LVDS Jani Nikula
2019-01-21 19:30   ` Ville Syrjälä
2019-01-21 14:21 ` [PATCH 3/5] drm/i915/lvds: nuke intel_lvds_supported() Jani Nikula
2019-01-21 19:31   ` Ville Syrjälä
2019-01-22  8:23     ` Jani Nikula
2019-01-21 14:21 ` [PATCH 4/5] drm/i915/tv: only call intel_tv_init() on platforms that might have TV Jani Nikula
2019-01-21 19:33   ` Ville Syrjälä
2019-01-22  8:25     ` Jani Nikula
2019-01-21 14:21 ` [PATCH 5/5] drm/i915: rename has_edp_a() to intel_pch_has_edp_a() Jani Nikula
2019-01-21 19:36   ` Ville Syrjälä
2019-01-21 15:39 ` ✓ Fi.CI.BAT: success for series starting with [1/5] drm/i915/crt: split out intel_crt_present() to platform specific setup Patchwork
2019-01-21 19:03 ` ✓ Fi.CI.IGT: " Patchwork
2019-01-21 19:30 ` [PATCH 1/5] " Ville Syrjälä
2019-01-22  8:26   ` Jani Nikula

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.