aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_dsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dsi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 83f15848098a..f09474b0c4d3 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -662,11 +662,11 @@ static void vlv_dsi_clear_device_ready(struct intel_encoder *encoder)
662 } 662 }
663} 663}
664 664
665static void intel_dsi_port_enable(struct intel_encoder *encoder) 665static void intel_dsi_port_enable(struct intel_encoder *encoder,
666 const struct intel_crtc_state *crtc_state)
666{ 667{
667 struct drm_device *dev = encoder->base.dev; 668 struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
668 struct drm_i915_private *dev_priv = to_i915(dev); 669 struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
669 struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc);
670 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); 670 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
671 enum port port; 671 enum port port;
672 672
@@ -705,7 +705,7 @@ static void intel_dsi_port_enable(struct intel_encoder *encoder)
705 if (IS_BROXTON(dev_priv)) 705 if (IS_BROXTON(dev_priv))
706 temp |= LANE_CONFIGURATION_DUAL_LINK_A; 706 temp |= LANE_CONFIGURATION_DUAL_LINK_A;
707 else 707 else
708 temp |= intel_crtc->pipe ? 708 temp |= crtc->pipe ?
709 LANE_CONFIGURATION_DUAL_LINK_B : 709 LANE_CONFIGURATION_DUAL_LINK_B :
710 LANE_CONFIGURATION_DUAL_LINK_A; 710 LANE_CONFIGURATION_DUAL_LINK_A;
711 } 711 }
@@ -875,7 +875,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder,
875 875
876 intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DISPLAY_ON); 876 intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_DISPLAY_ON);
877 877
878 intel_dsi_port_enable(encoder); 878 intel_dsi_port_enable(encoder, pipe_config);
879 } 879 }
880 880
881 intel_panel_enable_backlight(pipe_config, conn_state); 881 intel_panel_enable_backlight(pipe_config, conn_state);
@@ -1082,7 +1082,7 @@ static void bxt_dsi_get_pipe_config(struct intel_encoder *encoder,
1082 struct drm_display_mode *adjusted_mode = 1082 struct drm_display_mode *adjusted_mode =
1083 &pipe_config->base.adjusted_mode; 1083 &pipe_config->base.adjusted_mode;
1084 struct drm_display_mode *adjusted_mode_sw; 1084 struct drm_display_mode *adjusted_mode_sw;
1085 struct intel_crtc *intel_crtc; 1085 struct intel_crtc *crtc = to_intel_crtc(pipe_config->base.crtc);
1086 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); 1086 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
1087 unsigned int lane_count = intel_dsi->lane_count; 1087 unsigned int lane_count = intel_dsi->lane_count;
1088 unsigned int bpp, fmt; 1088 unsigned int bpp, fmt;
@@ -1093,8 +1093,7 @@ static void bxt_dsi_get_pipe_config(struct intel_encoder *encoder,
1093 crtc_hblank_start_sw, crtc_hblank_end_sw; 1093 crtc_hblank_start_sw, crtc_hblank_end_sw;
1094 1094
1095 /* FIXME: hw readout should not depend on SW state */ 1095 /* FIXME: hw readout should not depend on SW state */
1096 intel_crtc = to_intel_crtc(encoder->base.crtc); 1096 adjusted_mode_sw = &crtc->config->base.adjusted_mode;
1097 adjusted_mode_sw = &intel_crtc->config->base.adjusted_mode;
1098 1097
1099 /* 1098 /*
1100 * Atleast one port is active as encoder->get_config called only if 1099 * Atleast one port is active as encoder->get_config called only if
@@ -1243,6 +1242,8 @@ static void intel_dsi_get_config(struct intel_encoder *encoder,
1243 u32 pclk; 1242 u32 pclk;
1244 DRM_DEBUG_KMS("\n"); 1243 DRM_DEBUG_KMS("\n");
1245 1244
1245 pipe_config->output_types |= BIT(INTEL_OUTPUT_DSI);
1246
1246 if (IS_GEN9_LP(dev_priv)) 1247 if (IS_GEN9_LP(dev_priv))
1247 bxt_dsi_get_pipe_config(encoder, pipe_config); 1248 bxt_dsi_get_pipe_config(encoder, pipe_config);
1248 1249