On Mon, Aug 03, 2015 at 03:45:32PM +0530, Gaurav K Singh wrote: > 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@xxxxxxxxx> > Date: Fri Jan 16 14:27:23 2015 +0200 > > drm/i915/dsi: add drm mipi dsi host support > > Signed-off-by: Gaurav K Singh <gaurav.k.singh@xxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dsi.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c > index 18dd7d7..8aa9c7cc 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) > intel_connector->unregister = intel_connector_unregister; > > /* Pipe A maps to MIPI DSI port A, pipe B maps to MIPI DSI port C */ > - if (dev_priv->vbt.dsi.config->dual_link) { > - /* XXX: does dual link work on either pipe? */ > - intel_encoder->crtc_mask = (1 << PIPE_A); > - intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C)); > - } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) { > + if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIA) { > intel_encoder->crtc_mask = (1 << PIPE_A); > intel_dsi->ports = (1 << PORT_A); > } else if (dev_priv->vbt.dsi.port == DVO_PORT_MIPIC) { > @@ -1060,6 +1056,9 @@ void intel_dsi_init(struct drm_device *dev) > intel_dsi->ports = (1 << PORT_C); > } > > + if (dev_priv->vbt.dsi.config->dual_link) > + intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C)); > + This looks sane based on the fact that intel_dsi_port_enable() sets up the MIPI_PORT_CTRL lane configuration bits in a different way depending on which pipe is driving the dual link. And the spec agrees on the meaning of those bits. Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > /* Create a DSI host (and a device) for each port. */ > for_each_dsi_port(port, intel_dsi->ports) { > struct intel_dsi_host *host; > -- > 1.7.9.5 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel OTC _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx