target: msm8953: Add PWM support to msm8953 target

Add PWM support for PMI632 on msm8953 target to enable
display in lk.

Change-Id: I80059e4c762e3f8545f6c0c131298c98d1ffbdef
Signed-off-by: Rashi Bindra <rbindra@codeaurora.org>
diff --git a/project/msm8953.mk b/project/msm8953.mk
index a7a5f72..f14a49b 100644
--- a/project/msm8953.mk
+++ b/project/msm8953.mk
@@ -29,7 +29,7 @@
 endif
 
 ENABLE_SMD_SUPPORT := 1
-#ENABLE_PWM_SUPPORT := true
+ENABLE_PWM_SUPPORT := true
 
 #DEFINES += WITH_DEBUG_DCC=1
 DEFINES += WITH_DEBUG_LOG_BUF=1
diff --git a/target/msm8953/target_display.c b/target/msm8953/target_display.c
index 10a2356..f276f64 100644
--- a/target/msm8953/target_display.c
+++ b/target/msm8953/target_display.c
@@ -60,6 +60,8 @@
 #define STRENGTH_SIZE_IN_BYTES	10
 #define REGULATOR_SIZE_IN_BYTES	5
 #define LANE_SIZE_IN_BYTES		20
+#define PWM_DUTY_US 13
+#define PWM_PERIOD_US 27
 /*---------------------------------------------------------------------------*/
 /* GPIO configuration                                                        */
 /*---------------------------------------------------------------------------*/
@@ -127,11 +129,24 @@
 	pm8x41_wled_config_slave_id(slave_id);
 	if (target_get_pmic() == PMIC_IS_PMI632) {
 		qpnp_lcdb_enable(enable);
-	}
-	else {
+	} else {
 		qpnp_wled_enable_backlight(enable);
 		qpnp_ibb_enable(enable);
 	}
+
+	return NO_ERROR;
+}
+
+static int pwm_backlight_ctrl(uint8_t enable)
+{
+	if(enable) {
+		pm_pwm_enable(false);
+		pm_pwm_config(PWM_DUTY_US, PWM_PERIOD_US);
+		pm_pwm_enable(true);
+	} else {
+		pm_pwm_enable(false);
+	}
+
 	return NO_ERROR;
 }
 
@@ -142,8 +157,11 @@
 	if (bl->bl_interface_type == BL_DCS)
 		return ret;
 
-	ret = wled_backlight_ctrl(enable);
-
+	if(target_get_pmic() == PMIC_IS_PMI632) {
+		ret = pwm_backlight_ctrl(enable);
+	} else {
+		ret = wled_backlight_ctrl(enable);
+	}
 	return ret;
 }