target: msm8937: Add PWM support to msm8937 target

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

Change-Id: I5c220e776d110bda91a1f24de8bca154be255543
diff --git a/project/msm8952.mk b/project/msm8952.mk
index d40dfa1..7bfc1b5 100644
--- a/project/msm8952.mk
+++ b/project/msm8952.mk
@@ -34,7 +34,7 @@
 
 
 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/msm8952/target_display.c b/target/msm8952/target_display.c
index 65d8222..68baa70 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -53,6 +53,9 @@
 #include "include/display_resource.h"
 #include "gcdb_display.h"
 
+#define PWM_DUTY_US 13
+#define PWM_PERIOD_US 27
+
 #define TRULY_720P_VID_PANEL "truly_720p_video"
 #define TRULY_720P_CMD_PANEL "truly_720p_cmd"
 
@@ -276,6 +279,19 @@
 	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;
+}
+
 int target_backlight_ctrl(struct backlight *bl, uint8_t enable)
 {
 	uint32_t ret = NO_ERROR;
@@ -283,8 +299,12 @@
 	if (bl->bl_interface_type == BL_DCS)
 		return ret;
 
-	ret = msm8952_wled_backlight_ctrl(enable);
-
+	if ((target_get_pmic() == PMIC_IS_PMI632) &&
+		(bl->bl_interface_type == BL_PWM)) {
+		ret = pwm_backlight_ctrl(enable);
+	} else {
+		ret = msm8952_wled_backlight_ctrl(enable);
+	}
 	return ret;
 }