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
next prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox