aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorGaurav K Singh <gaurav.k.singh@intel.com>2015-08-03 06:15:32 -0400
committerJani Nikula <jani.nikula@intel.com>2015-09-10 09:23:42 -0400
commit824257857fd81f5e749831ff9cd63566b5a86abe (patch)
tree08a4ccdb71e79db6130255997497b26f7e2f2595 /drivers/gpu/drm
parent58590c14d80defc94e900308a9d8fa55284de6f2 (diff)
drm/i915: Allow DSI dual link to be configured on any pipe
Just like single link MIPI panels, similarly for dual link panels, pipe to be configured is based on the DVO port from VBT Block 2. In hardware, Port A is mapped with Pipe A and Port C is mapped with Pipe B. This issue got introduced in - commit 7e9804fdcffc650515c60f524b8b2076ee59e710 Author: Jani Nikula <jani.nikula@intel.com> Date: Fri Jan 16 14:27:23 2015 +0200 drm/i915/dsi: add drm mipi dsi host support Cc: stable@vger.kernel.org # v4.0 Signed-off-by: Gaurav K Singh <gaurav.k.singh@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 4a601cf90f16..32a6c7184ca4 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1048,11 +1048,7 @@ void intel_dsi_init(struct drm_device *dev)
1048 intel_connector->unregister = intel_connector_unregister; 1048 intel_connector->unregister = intel_connector_unregister;
1049 1049
1050 /* Pipe A maps to MIPI DSI port A, pipe B maps to MIPI DSI port C */ 1050 /* Pipe A maps to MIPI DSI port A, pipe B maps to MIPI DSI port C */
1051 if (dev_priv->vbt.dsi.config->dual_link) { 1051 if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) {
1052 /* XXX: does dual link work on either pipe? */
1053 intel_encoder->crtc_mask = (1 << PIPE_A);
1054 intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C));
1055 } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) {
1056 intel_encoder->crtc_mask = (1 << PIPE_A); 1052 intel_encoder->crtc_mask = (1 << PIPE_A);
1057 intel_dsi->ports = (1 << PORT_A); 1053 intel_dsi->ports = (1 << PORT_A);
1058 } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIC) { 1054 } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIC) {
@@ -1060,6 +1056,9 @@ void intel_dsi_init(struct drm_device *dev)
1060 intel_dsi->ports = (1 << PORT_C); 1056 intel_dsi->ports = (1 << PORT_C);
1061 } 1057 }
1062 1058
1059 if (dev_priv->vbt.dsi.config->dual_link)
1060 intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C));
1061
1063 /* Create a DSI host (and a device) for each port. */ 1062 /* Create a DSI host (and a device) for each port. */
1064 for_each_dsi_port(port, intel_dsi->ports) { 1063 for_each_dsi_port(port, intel_dsi->ports) {
1065 struct intel_dsi_host *host; 1064 struct intel_dsi_host *host;