Merge "target: msm8994: configure lab/ibb from panel for 8994"
diff --git a/dev/gcdb/display/include/panel_sharp_wqxga_dualdsi_video.h b/dev/gcdb/display/include/panel_sharp_wqxga_dualdsi_video.h
index 2fccf8c..68a277d 100644
--- a/dev/gcdb/display/include/panel_sharp_wqxga_dualdsi_video.h
+++ b/dev/gcdb/display/include/panel_sharp_wqxga_dualdsi_video.h
@@ -147,6 +147,10 @@
1, 1, 4095, 100, 1, "PMIC_8941" /* BL_WLED */
};
+static struct labibb_desc sharp_wqxga_dualdsi_video_labibb = {
+ 0, 1, 5500000, 5500000, 5500000, 5500000, 3, 3, 1
+};
+
#define SHARP_WQXGA_DUALDSI_VIDEO_SIGNATURE 0x210000
#endif /*_PANEL_SHARP_WQXGA_DUALDSI_VIDEO_H_*/
diff --git a/target/msm8994/init.c b/target/msm8994/init.c
index 925fcde..c4e467c 100644
--- a/target/msm8994/init.c
+++ b/target/msm8994/init.c
@@ -58,8 +58,6 @@
#include <qusb2_phy.h>
#include <rpm-smd.h>
#include <sdhci_msm.h>
-#include <pm8x41_wled.h>
-#include <qpnp_wled.h>
#include "target/display.h"
@@ -336,10 +334,6 @@
mmc_read_partition_table(0);
rpm_smd_init();
-
- /* QPNP WLED init for display backlight */
- pm8x41_wled_config_slave_id(PMIC_WLED_SLAVE_ID);
- qpnp_wled_init();
}
unsigned board_machtype(void)
diff --git a/target/msm8994/oem_panel.c b/target/msm8994/oem_panel.c
index 7264474..ac227a4 100644
--- a/target/msm8994/oem_panel.c
+++ b/target/msm8994/oem_panel.c
@@ -135,6 +135,9 @@
panelstruct->panelresetseq
= &sharp_wqxga_dualdsi_video_reset_seq;
panelstruct->backlightinfo = &sharp_wqxga_dualdsi_video_backlight;
+
+ pinfo->labibb = &sharp_wqxga_dualdsi_video_labibb;
+
pinfo->mipi.panel_on_cmds
= sharp_wqxga_dualdsi_video_on_command;
pinfo->mipi.num_of_panel_on_cmds
diff --git a/target/msm8994/target_display.c b/target/msm8994/target_display.c
index 7e6cdea..08c8b12 100644
--- a/target/msm8994/target_display.c
+++ b/target/msm8994/target_display.c
@@ -347,11 +347,68 @@
return NO_ERROR;
}
+static void wled_init(struct msm_panel_info *pinfo)
+{
+ struct qpnp_wled_config_data config = {0};
+ struct labibb_desc *labibb;
+ int display_type = 0;
+
+ labibb = pinfo->labibb;
+
+ if (labibb)
+ display_type = labibb->amoled_panel;
+
+ config.display_type = display_type;
+ config.lab_init_volt = 4600000; /* fixed, see pmi register */
+ config.ibb_init_volt = 1400000; /* fixed, see pmi register */
+
+ if (labibb && labibb->force_config) {
+ config.lab_min_volt = labibb->lab_min_volt;
+ config.lab_max_volt = labibb->lab_max_volt;
+ config.ibb_min_volt = labibb->ibb_min_volt;
+ config.ibb_max_volt = labibb->ibb_max_volt;
+ config.pwr_up_delay = labibb->pwr_up_delay;
+ config.pwr_down_delay = labibb->pwr_down_delay;
+ config.ibb_discharge_en = labibb->ibb_discharge_en;
+ } else {
+ /* default */
+ config.pwr_up_delay = 3;
+ config.pwr_down_delay = 3;
+ config.ibb_discharge_en = 1;
+ if (display_type) { /* amoled */
+ config.lab_min_volt = 4600000;
+ config.lab_max_volt = 4600000;
+ config.ibb_min_volt = 4000000;
+ config.ibb_max_volt = 4000000;
+ } else { /* lcd */
+ config.lab_min_volt = 5500000;
+ config.lab_max_volt = 5500000;
+ config.ibb_min_volt = 5500000;
+ config.ibb_max_volt = 5500000;
+ }
+ }
+
+ dprintf(SPEW, "%s: %d %d %d %d %d %d %d %d %d %d\n", __func__,
+ config.display_type,
+ config.lab_min_volt, config.lab_max_volt,
+ config.ibb_min_volt, config.ibb_max_volt,
+ config.lab_init_volt, config.ibb_init_volt,
+ config.pwr_up_delay, config.pwr_down_delay,
+ config.ibb_discharge_en);
+
+
+ /* QPNP WLED init for display backlight */
+ pm8x41_wled_config_slave_id(PMIC_WLED_SLAVE_ID);
+
+ qpnp_wled_init(&config);
+}
+
int target_ldo_ctrl(uint8_t enable, struct msm_panel_info *pinfo)
{
if (enable) {
regulator_enable(); /* L2, L12, L14, and L28 */
mdelay(10);
+ wled_init(pinfo);
qpnp_ibb_enable(true); /* +5V and -5V */
mdelay(50);