summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/intel_dsi.c
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2017-02-28 12:26:20 +0300
committerJani Nikula <jani.nikula@intel.com>2017-02-28 13:47:04 +0300
commit18a00095a5f3b73cabab513119db9275afb62321 (patch)
tree2454d2b5fbada076fb0755a9f4023fe2a5da62a8 /drivers/gpu/drm/i915/intel_dsi.c
parent14be7a5c29c2bf3b9567da1e41a514c4bbcdacdf (diff)
downloadlinux-18a00095a5f3b73cabab513119db9275afb62321.tar.xz
drm/i915/dsi: Make intel_dsi_enable/disable directly exec VBT sequences
The drm_panel_enable/disable and drm_panel_prepare/unprepare calls are not fine grained enough to abstract all the different steps we need to take (and VBT sequences we need to exec) properly. So simply remove the panel _enable/disable and prepare/unprepare callbacks and instead export intel_dsi_exec_vbt_sequence() from intel_dsi_panel_vbt.c and call that from intel_dsi_enable/disable(). No functional changes. 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/b4ca5185d4788d92df2ed60837a24b8962a8e8ba.1488273823.git.jani.nikula@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dsi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 4cca31061a6f..a4ff1e64c030 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -601,7 +601,10 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder,
/* put device in ready state */
intel_dsi_device_ready(encoder);
- drm_panel_prepare(intel_dsi->panel);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_ASSERT_RESET);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_POWER_ON);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_DEASSERT_RESET);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_INIT_OTP);
/* Enable port in pre-enable phase itself because as per hw team
* recommendation, port should be enabled befor plane & pipe */
@@ -614,7 +617,8 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder,
dpi_send_cmd(intel_dsi, TURN_ON, false, port);
msleep(100);
- drm_panel_enable(intel_dsi->panel);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_DISPLAY_ON);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_ON);
intel_dsi_port_enable(encoder);
}
@@ -689,7 +693,8 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder,
* if disable packets are sent before sending shutdown packet then in
* some next enable sequence send turn on packet error is observed
*/
- drm_panel_disable(intel_dsi->panel);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_OFF);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_DISPLAY_OFF);
intel_dsi_clear_device_ready(encoder);
@@ -714,7 +719,8 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder,
I915_WRITE(DSPCLK_GATE_D, val);
}
- drm_panel_unprepare(intel_dsi->panel);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_ASSERT_RESET);
+ intel_dsi_exec_vbt_sequence(intel_dsi, MIPI_SEQ_POWER_OFF);
msleep(intel_dsi->panel_off_delay);