@@ -725,6 +725,17 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder,
725725 struct intel_crtc_state * pipe_config );
726726static void intel_dsi_unprepare (struct intel_encoder * encoder );
727727
728+ static void intel_dsi_msleep (struct intel_dsi * intel_dsi , int msec )
729+ {
730+ struct drm_i915_private * dev_priv = to_i915 (intel_dsi -> base .base .dev );
731+
732+ /* For v3 VBTs in vid-mode the delays are part of the VBT sequences */
733+ if (is_vid_mode (intel_dsi ) && dev_priv -> vbt .dsi .seq_version >= 3 )
734+ return ;
735+
736+ msleep (msec );
737+ }
738+
728739/*
729740 * Panel enable/disable sequences from the VBT spec.
730741 *
@@ -806,7 +817,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder,
806817 if (intel_dsi -> gpio_panel )
807818 gpiod_set_value_cansleep (intel_dsi -> gpio_panel , 1 );
808819 intel_dsi_exec_vbt_sequence (intel_dsi , MIPI_SEQ_POWER_ON );
809- msleep ( intel_dsi -> panel_on_delay );
820+ intel_dsi_msleep ( intel_dsi , intel_dsi -> panel_on_delay );
810821
811822 /* Deassert reset */
812823 intel_dsi_exec_vbt_sequence (intel_dsi , MIPI_SEQ_DEASSERT_RESET );
@@ -828,7 +839,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder,
828839 msleep (20 ); /* XXX */
829840 for_each_dsi_port (port , intel_dsi -> ports )
830841 dpi_send_cmd (intel_dsi , TURN_ON , false, port );
831- msleep ( 100 );
842+ intel_dsi_msleep ( intel_dsi , 100 );
832843
833844 intel_dsi_exec_vbt_sequence (intel_dsi , MIPI_SEQ_DISPLAY_ON );
834845
@@ -955,7 +966,7 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder,
955966 intel_dsi_exec_vbt_sequence (intel_dsi , MIPI_SEQ_ASSERT_RESET );
956967
957968 /* Power off, try both CRC pmic gpio and VBT */
958- msleep ( intel_dsi -> panel_off_delay );
969+ intel_dsi_msleep ( intel_dsi , intel_dsi -> panel_off_delay );
959970 intel_dsi_exec_vbt_sequence (intel_dsi , MIPI_SEQ_POWER_OFF );
960971 if (intel_dsi -> gpio_panel )
961972 gpiod_set_value_cansleep (intel_dsi -> gpio_panel , 0 );
@@ -964,7 +975,7 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder,
964975 * FIXME As we do with eDP, just make a note of the time here
965976 * and perform the wait before the next panel power on.
966977 */
967- msleep ( intel_dsi -> panel_pwr_cycle_delay );
978+ intel_dsi_msleep ( intel_dsi , intel_dsi -> panel_pwr_cycle_delay );
968979}
969980
970981static bool intel_dsi_get_hw_state (struct intel_encoder * encoder ,
0 commit comments