All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Jani Nikula <jani.nikula@intel.com>
Subject: [PATCH 4/4] drm/i915/dsi: initialize DSI on each port
Date: Tue, 29 Oct 2019 17:39:30 +0200	[thread overview]
Message-ID: <20191029153930.27103-4-jani.nikula@intel.com> (raw)
In-Reply-To: <20191029153930.27103-1-jani.nikula@intel.com>

Make DSI initialization similar to other encoders by calling init on
each possible port. This takes a step towards being able to have two
separate DSI displays, though currently this would likely break if there
were two DSI child devices present in the VBT.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/icl_dsi.c       |  7 ++++---
 drivers/gpu/drm/i915/display/intel_display.c | 15 ++++++++++-----
 drivers/gpu/drm/i915/display/intel_dsi.h     |  4 ++--
 drivers/gpu/drm/i915/display/vlv_dsi.c       | 10 ++++------
 4 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
index 6e398c33a524..81a3c36679a2 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -1543,7 +1543,7 @@ static void icl_dsi_add_properties(struct intel_connector *connector)
 				connector->panel.fixed_mode->vdisplay);
 }
 
-void icl_dsi_init(struct drm_i915_private *dev_priv)
+void icl_dsi_init(struct drm_i915_private *dev_priv, enum port port)
 {
 	struct drm_device *dev = &dev_priv->drm;
 	struct intel_dsi *intel_dsi;
@@ -1551,11 +1551,12 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
 	struct intel_connector *intel_connector;
 	struct drm_connector *connector;
 	struct drm_display_mode *fixed_mode;
-	enum port port;
 
-	if (!intel_bios_is_dsi_present(dev_priv, &port))
+	if (!dev_priv->vbt.ddi_port_info[port].supports_dsi)
 		return;
 
+	DRM_DEBUG_KMS("Initializing DSI on port %c\n", port_name(port));
+
 	intel_dsi = kzalloc(sizeof(*intel_dsi), GFP_KERNEL);
 	if (!intel_dsi)
 		return;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index e56a75c07043..8dd8827a1974 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -15946,13 +15946,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		intel_ddi_init(dev_priv, PORT_G);
 		intel_ddi_init(dev_priv, PORT_H);
 		intel_ddi_init(dev_priv, PORT_I);
-		icl_dsi_init(dev_priv);
+		icl_dsi_init(dev_priv, PORT_A);
+		icl_dsi_init(dev_priv, PORT_B);
 	} else if (IS_ELKHARTLAKE(dev_priv)) {
 		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);
-		icl_dsi_init(dev_priv);
+		icl_dsi_init(dev_priv, PORT_A);
+		icl_dsi_init(dev_priv, PORT_B);
 	} else if (IS_GEN(dev_priv, 11)) {
 		intel_ddi_init(dev_priv, PORT_A);
 		intel_ddi_init(dev_priv, PORT_B);
@@ -15968,7 +15970,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		    intel_bios_is_port_present(dev_priv, PORT_F))
 			intel_ddi_init(dev_priv, PORT_F);
 
-		icl_dsi_init(dev_priv);
+		icl_dsi_init(dev_priv, PORT_A);
+		icl_dsi_init(dev_priv, PORT_B);
 	} else if (IS_GEN9_LP(dev_priv)) {
 		/*
 		 * FIXME: Broxton doesn't support port detection via the
@@ -15979,7 +15982,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		intel_ddi_init(dev_priv, PORT_B);
 		intel_ddi_init(dev_priv, PORT_C);
 
-		vlv_dsi_init(dev_priv);
+		vlv_dsi_init(dev_priv, PORT_A);
+		vlv_dsi_init(dev_priv, PORT_C);
 	} else if (HAS_DDI(dev_priv)) {
 		int found;
 
@@ -16098,7 +16102,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 				intel_hdmi_init(dev_priv, CHV_HDMID, PORT_D);
 		}
 
-		vlv_dsi_init(dev_priv);
+		vlv_dsi_init(dev_priv, PORT_A);
+		vlv_dsi_init(dev_priv, PORT_C);
 	} else if (IS_PINEVIEW(dev_priv)) {
 		intel_lvds_init(dev_priv);
 		intel_crt_init(dev_priv);
diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
index b15be5814599..c2f4476e03a5 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.h
+++ b/drivers/gpu/drm/i915/display/intel_dsi.h
@@ -162,7 +162,7 @@ static inline u16 intel_dsi_encoder_ports(struct intel_encoder *encoder)
 }
 
 /* icl_dsi.c */
-void icl_dsi_init(struct drm_i915_private *dev_priv);
+void icl_dsi_init(struct drm_i915_private *dev_priv, enum port port);
 
 /* intel_dsi.c */
 int intel_dsi_bitrate(const struct intel_dsi *intel_dsi);
@@ -179,7 +179,7 @@ enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
 struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
 					   const struct mipi_dsi_host_ops *funcs,
 					   enum port port);
-void vlv_dsi_init(struct drm_i915_private *dev_priv);
+void vlv_dsi_init(struct drm_i915_private *dev_priv, enum port port);
 
 /* vlv_dsi_pll.c */
 int vlv_dsi_pll_compute(struct intel_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
index 50064cde0724..293c70e36194 100644
--- a/drivers/gpu/drm/i915/display/vlv_dsi.c
+++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
@@ -1809,7 +1809,7 @@ static void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
 	intel_dsi_log_params(intel_dsi);
 }
 
-void vlv_dsi_init(struct drm_i915_private *dev_priv)
+void vlv_dsi_init(struct drm_i915_private *dev_priv, enum port port)
 {
 	struct drm_device *dev = &dev_priv->drm;
 	struct intel_dsi *intel_dsi;
@@ -1818,14 +1818,12 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 	struct intel_connector *intel_connector;
 	struct drm_connector *connector;
 	struct drm_display_mode *current_mode, *fixed_mode;
-	enum port port;
-
-	DRM_DEBUG_KMS("\n");
 
-	/* There is no detection method for MIPI so rely on VBT */
-	if (!intel_bios_is_dsi_present(dev_priv, &port))
+	if (!dev_priv->vbt.ddi_port_info[port].supports_dsi)
 		return;
 
+	DRM_DEBUG_KMS("Initializing DSI on port %c\n", port_name(port));
+
 	if (IS_GEN9_LP(dev_priv))
 		dev_priv->mipi_mmio_base = BXT_MIPI_BASE;
 	else
-- 
2.20.1

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

WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: Jani Nikula <jani.nikula@intel.com>
Subject: [Intel-gfx] [PATCH 4/4] drm/i915/dsi: initialize DSI on each port
Date: Tue, 29 Oct 2019 17:39:30 +0200	[thread overview]
Message-ID: <20191029153930.27103-4-jani.nikula@intel.com> (raw)
Message-ID: <20191029153930.dUWjihHD0Rd3yE20trA_jP5w9WrvGnm-r_Cw6vnnT-0@z> (raw)
In-Reply-To: <20191029153930.27103-1-jani.nikula@intel.com>

Make DSI initialization similar to other encoders by calling init on
each possible port. This takes a step towards being able to have two
separate DSI displays, though currently this would likely break if there
were two DSI child devices present in the VBT.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/icl_dsi.c       |  7 ++++---
 drivers/gpu/drm/i915/display/intel_display.c | 15 ++++++++++-----
 drivers/gpu/drm/i915/display/intel_dsi.h     |  4 ++--
 drivers/gpu/drm/i915/display/vlv_dsi.c       | 10 ++++------
 4 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
index 6e398c33a524..81a3c36679a2 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -1543,7 +1543,7 @@ static void icl_dsi_add_properties(struct intel_connector *connector)
 				connector->panel.fixed_mode->vdisplay);
 }
 
-void icl_dsi_init(struct drm_i915_private *dev_priv)
+void icl_dsi_init(struct drm_i915_private *dev_priv, enum port port)
 {
 	struct drm_device *dev = &dev_priv->drm;
 	struct intel_dsi *intel_dsi;
@@ -1551,11 +1551,12 @@ void icl_dsi_init(struct drm_i915_private *dev_priv)
 	struct intel_connector *intel_connector;
 	struct drm_connector *connector;
 	struct drm_display_mode *fixed_mode;
-	enum port port;
 
-	if (!intel_bios_is_dsi_present(dev_priv, &port))
+	if (!dev_priv->vbt.ddi_port_info[port].supports_dsi)
 		return;
 
+	DRM_DEBUG_KMS("Initializing DSI on port %c\n", port_name(port));
+
 	intel_dsi = kzalloc(sizeof(*intel_dsi), GFP_KERNEL);
 	if (!intel_dsi)
 		return;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index e56a75c07043..8dd8827a1974 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -15946,13 +15946,15 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		intel_ddi_init(dev_priv, PORT_G);
 		intel_ddi_init(dev_priv, PORT_H);
 		intel_ddi_init(dev_priv, PORT_I);
-		icl_dsi_init(dev_priv);
+		icl_dsi_init(dev_priv, PORT_A);
+		icl_dsi_init(dev_priv, PORT_B);
 	} else if (IS_ELKHARTLAKE(dev_priv)) {
 		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);
-		icl_dsi_init(dev_priv);
+		icl_dsi_init(dev_priv, PORT_A);
+		icl_dsi_init(dev_priv, PORT_B);
 	} else if (IS_GEN(dev_priv, 11)) {
 		intel_ddi_init(dev_priv, PORT_A);
 		intel_ddi_init(dev_priv, PORT_B);
@@ -15968,7 +15970,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		    intel_bios_is_port_present(dev_priv, PORT_F))
 			intel_ddi_init(dev_priv, PORT_F);
 
-		icl_dsi_init(dev_priv);
+		icl_dsi_init(dev_priv, PORT_A);
+		icl_dsi_init(dev_priv, PORT_B);
 	} else if (IS_GEN9_LP(dev_priv)) {
 		/*
 		 * FIXME: Broxton doesn't support port detection via the
@@ -15979,7 +15982,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 		intel_ddi_init(dev_priv, PORT_B);
 		intel_ddi_init(dev_priv, PORT_C);
 
-		vlv_dsi_init(dev_priv);
+		vlv_dsi_init(dev_priv, PORT_A);
+		vlv_dsi_init(dev_priv, PORT_C);
 	} else if (HAS_DDI(dev_priv)) {
 		int found;
 
@@ -16098,7 +16102,8 @@ static void intel_setup_outputs(struct drm_i915_private *dev_priv)
 				intel_hdmi_init(dev_priv, CHV_HDMID, PORT_D);
 		}
 
-		vlv_dsi_init(dev_priv);
+		vlv_dsi_init(dev_priv, PORT_A);
+		vlv_dsi_init(dev_priv, PORT_C);
 	} else if (IS_PINEVIEW(dev_priv)) {
 		intel_lvds_init(dev_priv);
 		intel_crt_init(dev_priv);
diff --git a/drivers/gpu/drm/i915/display/intel_dsi.h b/drivers/gpu/drm/i915/display/intel_dsi.h
index b15be5814599..c2f4476e03a5 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.h
+++ b/drivers/gpu/drm/i915/display/intel_dsi.h
@@ -162,7 +162,7 @@ static inline u16 intel_dsi_encoder_ports(struct intel_encoder *encoder)
 }
 
 /* icl_dsi.c */
-void icl_dsi_init(struct drm_i915_private *dev_priv);
+void icl_dsi_init(struct drm_i915_private *dev_priv, enum port port);
 
 /* intel_dsi.c */
 int intel_dsi_bitrate(const struct intel_dsi *intel_dsi);
@@ -179,7 +179,7 @@ enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
 struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
 					   const struct mipi_dsi_host_ops *funcs,
 					   enum port port);
-void vlv_dsi_init(struct drm_i915_private *dev_priv);
+void vlv_dsi_init(struct drm_i915_private *dev_priv, enum port port);
 
 /* vlv_dsi_pll.c */
 int vlv_dsi_pll_compute(struct intel_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
index 50064cde0724..293c70e36194 100644
--- a/drivers/gpu/drm/i915/display/vlv_dsi.c
+++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
@@ -1809,7 +1809,7 @@ static void vlv_dphy_param_init(struct intel_dsi *intel_dsi)
 	intel_dsi_log_params(intel_dsi);
 }
 
-void vlv_dsi_init(struct drm_i915_private *dev_priv)
+void vlv_dsi_init(struct drm_i915_private *dev_priv, enum port port)
 {
 	struct drm_device *dev = &dev_priv->drm;
 	struct intel_dsi *intel_dsi;
@@ -1818,14 +1818,12 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv)
 	struct intel_connector *intel_connector;
 	struct drm_connector *connector;
 	struct drm_display_mode *current_mode, *fixed_mode;
-	enum port port;
-
-	DRM_DEBUG_KMS("\n");
 
-	/* There is no detection method for MIPI so rely on VBT */
-	if (!intel_bios_is_dsi_present(dev_priv, &port))
+	if (!dev_priv->vbt.ddi_port_info[port].supports_dsi)
 		return;
 
+	DRM_DEBUG_KMS("Initializing DSI on port %c\n", port_name(port));
+
 	if (IS_GEN9_LP(dev_priv))
 		dev_priv->mipi_mmio_base = BXT_MIPI_BASE;
 	else
-- 
2.20.1

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

  parent reply	other threads:[~2019-10-29 15:39 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-29 15:39 [PATCH 1/4] drm/i915/bios: use a flag for vbt hdmi level shift presence Jani Nikula
2019-10-29 15:39 ` [Intel-gfx] " Jani Nikula
2019-10-29 15:39 ` [PATCH 2/4] drm/i915/bios: add DSI ports to parse_ddi_port() Jani Nikula
2019-10-29 15:39   ` [Intel-gfx] " Jani Nikula
2019-10-29 16:01   ` Ville Syrjälä
2019-10-29 16:01     ` [Intel-gfx] " Ville Syrjälä
2019-10-29 15:39 ` [PATCH 3/4] drm/i915/bios: parse DDI ports also on VLV Jani Nikula
2019-10-29 15:39   ` [Intel-gfx] " Jani Nikula
2019-10-29 15:39 ` Jani Nikula [this message]
2019-10-29 15:39   ` [Intel-gfx] [PATCH 4/4] drm/i915/dsi: initialize DSI on each port Jani Nikula
2019-10-29 21:45 ` ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/bios: use a flag for vbt hdmi level shift presence Patchwork
2019-10-29 21:45   ` [Intel-gfx] " Patchwork
2019-10-30 18:36 ` ✓ Fi.CI.IGT: " Patchwork
2019-10-30 18:36   ` [Intel-gfx] " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191029153930.27103-4-jani.nikula@intel.com \
    --to=jani.nikula@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.