aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-03-01 08:15:06 -0500
committerJani Nikula <jani.nikula@intel.com>2017-03-01 08:58:08 -0500
commit25b4620ee822d5f3c2deb3f1358e82763578788f (patch)
treea2a7f01a51025238718ed9f2a6a7894d3fe6cadf
parent38dec5c0892a4c475d9ac89fea25f8a84e17a464 (diff)
drm/i915/dsi: Skip delays for v3 VBTs in vid-mode
For v3 VBTs in vid-mode the delays are part of the VBT sequences, so we should not also delay ourselves otherwise we get double delays. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Bob Paauwe <bob.j.paauwe@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1488374106-4949-11-git-send-email-jani.nikula@intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 7d5fb9d3fa64..dd38b6835528 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -725,6 +725,17 @@ static void intel_dsi_prepare(struct intel_encoder *intel_encoder,
725 struct intel_crtc_state *pipe_config); 725 struct intel_crtc_state *pipe_config);
726static void intel_dsi_unprepare(struct intel_encoder *encoder); 726static void intel_dsi_unprepare(struct intel_encoder *encoder);
727 727
728static 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
728/* 739/*
729 * Panel enable/disable sequences from the VBT spec. 740 * Panel enable/disable sequences from the VBT spec.
730 * 741 *
@@ -806,7 +817,7 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder,
806 if (intel_dsi->gpio_panel) 817 if (intel_dsi->gpio_panel)
807 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1); 818 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1);
808 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_POWER_ON); 819 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);
810 821
811 /* Deassert reset */ 822 /* Deassert reset */
812 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET); 823 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,
828 msleep(20); /* XXX */ 839 msleep(20); /* XXX */
829 for_each_dsi_port(port, intel_dsi->ports) 840 for_each_dsi_port(port, intel_dsi->ports)
830 dpi_send_cmd(intel_dsi, TURN_ON, false, port); 841 dpi_send_cmd(intel_dsi, TURN_ON, false, port);
831 msleep(100); 842 intel_dsi_msleep(intel_dsi, 100);
832 843
833 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_DISPLAY_ON); 844 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_DISPLAY_ON);
834 845
@@ -955,7 +966,7 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder,
955 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_ASSERT_RESET); 966 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_ASSERT_RESET);
956 967
957 /* Power off, try both CRC pmic gpio and VBT */ 968 /* 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);
959 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_POWER_OFF); 970 intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_POWER_OFF);
960 if (intel_dsi->gpio_panel) 971 if (intel_dsi->gpio_panel)
961 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0); 972 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0);
@@ -964,7 +975,7 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder,
964 * FIXME As we do with eDP, just make a note of the time here 975 * FIXME As we do with eDP, just make a note of the time here
965 * and perform the wait before the next panel power on. 976 * and perform the wait before the next panel power on.
966 */ 977 */
967 msleep(intel_dsi->panel_pwr_cycle_delay); 978 intel_dsi_msleep(intel_dsi, intel_dsi->panel_pwr_cycle_delay);
968} 979}
969 980
970static bool intel_dsi_get_hw_state(struct intel_encoder *encoder, 981static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,