Merge "target: msm8974: edp back light through lpg channel 8"
diff --git a/target/msm8974/target_display.c b/target/msm8974/target_display.c
index e02ea22..addb135 100644
--- a/target/msm8974/target_display.c
+++ b/target/msm8974/target_display.c
@@ -234,12 +234,31 @@
 	return 0;
 }
 
+static void msm8974_lpg_backlight_enable(void)
+{
+	/* lpg channel 8 */
+	pm8x41_lpg_write(8, 0x41, 0x33); /* LPG_PWM_SIZE_CLK, */
+	pm8x41_lpg_write(8, 0x42, 0x01); /* LPG_PWM_FREQ_PREDIV */
+	pm8x41_lpg_write(8, 0x43, 0x20); /* LPG_PWM_TYPE_CONFIG */
+	pm8x41_lpg_write(8, 0x44, 0xb2); /* LPG_VALUE_LSB */
+	pm8x41_lpg_write(8, 0x45, 0x01);  /* LPG_VALUE_MSB */
+	pm8x41_lpg_write(8, 0x46, 0xe4); /* LPG_ENABLE_CONTROL */
+}
+
+static void msm8974_lpg_backlight_disable(void)
+{
+	pm8x41_lpg_write(8, 0x46, 0x00); /* LPG_ENABLE_CONTROL */
+}
+
 static int msm8974_edp_panel_power(int enable)
 {
 	struct pm8x41_gpio gpio36_param = {
 		.direction = PM_GPIO_DIR_OUT,
+		.function = PM_GPIO_FUNC_2,
+		.vin_sel = 2,	/* VIN_2 */
+		.pull = PM_GPIO_PULL_UP_1_5 | PM_GPIO_PULLDOWN_10,
 		.output_buffer = PM_GPIO_OUT_CMOS,
-		.out_strength = PM_GPIO_OUT_DRIVE_MED,
+		.out_strength = PM_GPIO_OUT_DRIVE_HIGH,
 	};
 
 	struct pm8x41_ldo ldo12 = LDO(PM8x41_LDO12, PLDO_TYPE);
@@ -248,7 +267,7 @@
 		/* Enable backlight */
 		dprintf(SPEW, "Enable Backlight\n");
 		pm8x41_gpio_config(36, &gpio36_param);
-		pm8x41_gpio_set(36, PM_GPIO_FUNC_HIGH);
+		msm8974_lpg_backlight_enable();
 		dprintf(SPEW, "Enable Backlight Done\n");
 
 		/* Turn on LDO12 for edp vdda */
@@ -266,7 +285,7 @@
 	} else {
 		/* Keep LDO12 on, otherwise kernel will not boot */
 		gpio_set(58, 0);
-		pm8x41_gpio_set(36, PM_GPIO_FUNC_LOW);
+		msm8974_lpg_backlight_disable();
 	}
 
 	return 0;