target: add support to enable individual regulators
Add support to msm8994, msm8909, and msm8952 to
individually enable regulators.
Change-Id: Ia38b5a0b9d81658c01cccfcd25c59d0eb574b55c
diff --git a/target/msm8994/target_display.c b/target/msm8994/target_display.c
index 0b40e7d..07aba09 100644
--- a/target/msm8994/target_display.c
+++ b/target/msm8994/target_display.c
@@ -98,6 +98,45 @@
"msmgpio", 34, 7, 0, 1, 1
};
+
+static void target_hdmi_ldo_enable(uint8_t enable)
+{
+ if (enable)
+ regulator_enable(REG_LDO12);
+ else
+ regulator_disable(REG_LDO12);
+}
+
+static void target_hdmi_mpp4_enable(uint8_t enable)
+{
+ struct pm8x41_mpp mpp;
+
+ /* Enable MPP4 */
+ pmi8994_config_mpp_slave_id(0);
+
+ mpp.base = PM8x41_MMP4_BASE;
+ mpp.vin = MPP_VIN2;
+ mpp.mode = MPP_HIGH;;
+ if (enable) {
+ pm8x41_config_output_mpp(&mpp);
+ pm8x41_enable_mpp(&mpp, MPP_ENABLE);
+ } else {
+ pm8x41_enable_mpp(&mpp, MPP_DISABLE);
+ }
+
+ /* Need delay before power on regulators */
+ mdelay(20);
+}
+
+int target_hdmi_regulator_ctrl(uint8_t enable)
+{
+ target_hdmi_ldo_enable(enable);
+
+ target_hdmi_mpp4_enable(enable);
+
+ return 0;
+}
+
int target_hdmi_gpio_ctrl(uint8_t enable)
{
gpio_tlmm_config(hdmi_cec_gpio.pin_id, 1, /* gpio 31, CEC */
@@ -467,7 +506,8 @@
int target_ldo_ctrl(uint8_t enable, struct msm_panel_info *pinfo)
{
if (enable) {
- regulator_enable(); /* L2, L12, L14, and L28 */
+ regulator_enable(REG_LDO2 | REG_LDO12 |
+ REG_LDO14 | REG_LDO28);
mdelay(10);
wled_init(pinfo);
qpnp_ibb_enable(true); /* +5V and -5V */
@@ -479,7 +519,8 @@
if (pinfo->lcd_reg_en)
lcd_reg_disable();
- regulator_disable();
+ regulator_disable(REG_LDO2 | REG_LDO12 |
+ REG_LDO14 | REG_LDO28);
}
return NO_ERROR;