Merge "target: msm8952: add display support for QM215 target"
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index b0a1536..27f7eec 100644
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -968,6 +968,11 @@
 			panel_id = TRULY_1080P_VIDEO_PANEL;
 		break;
 	case HW_PLATFORM_QRD:
+		if (platform_is_qm215()) {
+			panel_id = HX8399C_HD_PLUS_VIDEO_PANEL;
+			break;
+		}
+
 		if (hw_subtype == HW_PLATFORM_SUBTYPE_POLARIS) {
 			panel_id = BYD_1200P_VIDEO_PANEL;
 			break;
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 5b92f9b..6c3b058 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -273,12 +273,15 @@
 static int msm8952_wled_backlight_ctrl(uint8_t enable)
 {
 	uint8_t slave_id = PMIC_WLED_SLAVE_ID;	/* pmi */
+	uint32_t pmic_type = target_get_pmic();
+
+	if(pmic_type == PMIC_IS_PM8916)
+		return NO_ERROR;
 
 	pm8x41_wled_config_slave_id(slave_id);
-	if (target_get_pmic() == PMIC_IS_PMI632) {
+	if (pmic_type == PMIC_IS_PMI632) {
 		qpnp_lcdb_enable(enable);
-	}
-	else {
+	} else {
 		qpnp_wled_enable_backlight(enable);
 		qpnp_ibb_enable(enable);
 	}
@@ -301,13 +304,16 @@
 int target_backlight_ctrl(struct backlight *bl, uint8_t enable)
 {
 	uint32_t ret = NO_ERROR;
+	uint32_t pmic_type = target_get_pmic();
 
 	if (bl->bl_interface_type == BL_DCS)
 		return ret;
 
-	if ((target_get_pmic() == PMIC_IS_PMI632) &&
+	if ((pmic_type == PMIC_IS_PMI632) &&
 		(bl->bl_interface_type == BL_PWM)) {
 		ret = pwm_backlight_ctrl(enable);
+	} else if (pmic_type == PMIC_IS_PM8916) {
+		ret = pwm_backlight_ctrl(enable);
 	} else {
 		ret = msm8952_wled_backlight_ctrl(enable);
 	}
@@ -351,7 +357,7 @@
 	pll_data->vco_delay = VCO_DELAY_USEC;
 
 	/* SSC parameters */
-	if (platform_is_msm8937() || platform_is_msm8917()) {
+	if (platform_is_msm8937() || platform_is_msm8917() || platform_is_qm215()) {
 		pll_data->ssc_en = true;
 		pll_data->is_center_spread = false;
 		pll_data->ssc_freq = 30000;
@@ -438,6 +444,12 @@
 		reset_gpio.pin_id = 60;
 		bkl_gpio.pin_id = 98;
 		pinfo->mipi.use_enable_gpio = 0;
+	} else if (platform_is_qm215()) {
+		dprintf(CRITICAL,"vproddut: coming here \n");
+		reset_gpio.pin_id = 60;
+		bkl_gpio.pin_id = 93;
+		enable_gpio.pin_id = 94;
+		pinfo->mipi.use_enable_gpio = 1;
 	} else if (platform_is_sdm439() || platform_is_sdm429()) {
 		reset_gpio.pin_id = 60;
 	} else if ((hw_id == HW_PLATFORM_QRD) &&
@@ -522,7 +534,10 @@
 	bool swire_control = 0;
 	bool wled_avdd_control = 0;
 	int rc = NO_ERROR;
+	uint32_t pmic_type = target_get_pmic();
 
+	if(pmic_type == PMIC_IS_PM8916)
+		return NO_ERROR;
 	labibb = pinfo->labibb;
 
 	if (labibb)
@@ -570,7 +585,7 @@
 		}
 	}
 
-	if (target_get_pmic() == PMIC_IS_PMI632) {
+	if (pmic_type == PMIC_IS_PMI632) {
 		config.pwr_up_delay = 1;
 		config.pwr_down_delay =  0;
 	}
@@ -586,7 +601,7 @@
 	/* QPNP WLED init for display backlight */
 	pm8x41_wled_config_slave_id(PMIC_WLED_SLAVE_ID);
 
-	if (target_get_pmic() == PMIC_IS_PMI632)
+	if (pmic_type == PMIC_IS_PMI632)
 		rc = qpnp_lcdb_init(&config);
 	else
 		rc = qpnp_wled_init(&config);
@@ -616,7 +631,7 @@
 		else if (base == DSI1_PLL_BASE)
 			return DSI1_12NM_PHY_PLL_BASE_ADJUST;
 	} else if (platform_is_msm8956() || platform_is_msm8937() ||
-			platform_is_msm8917()) {
+			platform_is_msm8917() || platform_is_qm215()) {
 		if (base == MIPI_DSI0_BASE)
 			return DSI0_BASE_ADJUST;
 		else if (base == DSI0_PHY_BASE)
@@ -634,6 +649,7 @@
 {
 	int rc = 0;
 	uint32_t ldo_num = REG_LDO6 | REG_LDO17;
+	uint32_t pmic_type = target_get_pmic();
 
 	if (platform_is_msm8956())
 		ldo_num |= REG_LDO1;
@@ -651,9 +667,9 @@
 				dprintf(CRITICAL, "%s: wled init failed\n", __func__);
 				return rc;
 			}
-			if (target_get_pmic() == PMIC_IS_PMI632)
+			if (pmic_type == PMIC_IS_PMI632)
 				rc = qpnp_lcdb_enable(true);
-			else
+			else if(pmic_type != PMIC_IS_PM8916)
 				rc = qpnp_ibb_enable(true); /*5V boost*/
 			if (rc) {
 				dprintf(CRITICAL, "%s: qpnp_ibb/lcdb failed\n", __func__);