platform: msm_shared: Add function to turn off hdmi display
Add function to turn off the hdmi display when booting into
the kernel.
Change-Id: Icb028a3b118b26868b2afbc4800488f105ef8835
diff --git a/platform/msm_shared/display.c b/platform/msm_shared/display.c
index fcf6ad3..8733afa 100644
--- a/platform/msm_shared/display.c
+++ b/platform/msm_shared/display.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -411,6 +411,11 @@
if (ret)
goto msm_display_off_out;
break;
+ case HDMI_PANEL:
+ dprintf(INFO, "Turn off HDMI PANEL.\n");
+ ret = mdss_hdmi_off(pinfo);
+ break;
+
#endif
#ifdef DISPLAY_TYPE_QPIC
case QPIC_PANEL:
diff --git a/platform/msm_shared/include/mdp4.h b/platform/msm_shared/include/mdp4.h
index ee4e4fc..e463302 100644
--- a/platform/msm_shared/include/mdp4.h
+++ b/platform/msm_shared/include/mdp4.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2014, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2011-2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -122,5 +122,6 @@
int mdss_hdmi_init(void);
int mdss_hdmi_on(struct msm_panel_info *pinfo);
+int mdss_hdmi_off(struct msm_panel_info *pinfo);
int mdss_hdmi_config(struct msm_panel_info *pinfo, struct fbcon_config *fb);
#endif
diff --git a/platform/msm_shared/include/mdp5.h b/platform/msm_shared/include/mdp5.h
index 935e7a6..00baac3 100644
--- a/platform/msm_shared/include/mdp5.h
+++ b/platform/msm_shared/include/mdp5.h
@@ -267,6 +267,7 @@
int mdss_hdmi_init(void);
void mdss_hdmi_display_init(uint32_t rev, void *base);
int mdss_hdmi_on(struct msm_panel_info *pinfo);
+int mdss_hdmi_off(struct msm_panel_info *pinfo);
int mdss_hdmi_config(struct msm_panel_info *pinfo, struct fbcon_config *fb);
void mdss_hdmi_get_vic(char *buf);
void hdmi_phy_init(void);
diff --git a/platform/msm_shared/mdp5.c b/platform/msm_shared/mdp5.c
index 461cb9e..a5db243 100755
--- a/platform/msm_shared/mdp5.c
+++ b/platform/msm_shared/mdp5.c
@@ -1370,6 +1370,21 @@
return NO_ERROR;
}
+int mdss_hdmi_off(struct msm_panel_info *pinfo)
+{
+ if(!target_cont_splash_screen())
+ {
+ writel(0x00000000, MDP_INTF_3_TIMING_ENGINE_EN + mdss_mdp_intf_offset());
+ mdelay(60);
+ /* Underrun(Interface 0/1/2/3) VSYNC Interrupt Enable */
+ writel(0xFF777713, MDP_INTR_CLEAR);
+ }
+
+ writel(0x00000000, MDP_INTR_EN);
+
+ return NO_ERROR;
+}
+
int mdp_edp_off(void)
{
if (!target_cont_splash_screen()) {
diff --git a/target/msm8996/target_display.c b/target/msm8996/target_display.c
index a05b5b0..e7cc537 100644
--- a/target/msm8996/target_display.c
+++ b/target/msm8996/target_display.c
@@ -776,5 +776,10 @@
void target_display_shutdown(void)
{
- gcdb_display_shutdown();
+ struct oem_panel_data oem = mdss_dsi_get_oem_data();
+ if (!strcmp(oem.panel, HDMI_PANEL_NAME)) {
+ msm_display_off();
+ } else {
+ gcdb_display_shutdown();
+ }
}