target: msm8952: Add PM660 support to msm8952 target
Add PM660 as an alternate PMIC for msm8952 target.
Change-Id: Iaae7b3e3c28fd2c66558affef3615a44d2ea279b
Signed-off-by: Umang Agrawal <uagrawal@codeaurora.org>
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index f779278..68d0c9f 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -246,27 +246,32 @@
uint32_t target_is_pwrkey_pon_reason()
{
uint32_t pmic = target_get_pmic();
- uint8_t pon_reason = 0;
- bool usb_present_sts = 0;
+ uint8_t pon_reason;
+ uint8_t is_cold_boot;
+ bool usb_present_sts;
- if (pmic == PMIC_IS_PMI632)
- {
+ if (pmic == PMIC_IS_PMI632) {
pon_reason = pmi632_get_pon_reason();
+ is_cold_boot = pm8x41_get_is_cold_boot();
usb_present_sts = !(USBIN_UV_RT_STS_PMI632 &
pm8x41_reg_read(SMBCHG_USB_RT_STS));
- }
- else if (pmic == PMIC_IS_PM8916) {
+ } else if (pmic == PMIC_IS_PM8916) {
pon_reason = pm8x41_get_pon_reason();
+ is_cold_boot = pm8x41_get_is_cold_boot();
usb_present_sts = (pon_reason & USB_CHG);
- }
- else
- {
+ } else if (pmic == PMIC_IS_PM660) {
+ pon_reason = pm660_get_pon_reason();
+ is_cold_boot = pm660_get_is_cold_boot();
+ usb_present_sts = USBIN_PLUGIN_RT_STS &
+ pm8x41_reg_read(SCHG_USB_INT_RT_STS);
+ } else {
pon_reason = pm8950_get_pon_reason();
+ is_cold_boot = pm8x41_get_is_cold_boot();
usb_present_sts = !(USBIN_UV_RT_STS &
pm8x41_reg_read(SMBCHG_USB_RT_STS));
}
- if (pm8x41_get_is_cold_boot() && ((pon_reason == KPDPWR_N) || (pon_reason == (KPDPWR_N|PON1))))
+ if (is_cold_boot && ((pon_reason == KPDPWR_N) || (pon_reason == (KPDPWR_N|PON1))))
return 1;
else if ((pon_reason == PON1) && (!usb_present_sts))
return 1;
@@ -453,18 +458,31 @@
unsigned target_pause_for_battery_charge(void)
{
uint32_t pmic = target_get_pmic();
- uint8_t pon_reason = pm8x41_get_pon_reason();
- uint8_t is_cold_boot = pm8x41_get_is_cold_boot();
+ uint8_t pon_reason;
+ uint8_t is_cold_boot;
bool usb_present_sts = 1; /* don't care by default */
+ if (pmic == PMIC_IS_PM660) {
+ pon_reason = pm660_get_pon_reason();
+ is_cold_boot = pm660_get_is_cold_boot();
+ }
+ else {
+ pon_reason = pm8x41_get_pon_reason();
+ is_cold_boot = pm8x41_get_is_cold_boot();
+ }
+
if (target_is_pmi_enabled())
{
- if (pmic == PMIC_IS_PMI632)
+ if (pmic == PMIC_IS_PMI632) {
usb_present_sts = !(USBIN_UV_RT_STS_PMI632 &
pm8x41_reg_read(SMBCHG_USB_RT_STS));
- else
+ } else if (pmic == PMIC_IS_PM660) {
+ usb_present_sts = USBIN_PLUGIN_RT_STS &
+ pm8x41_reg_read(SCHG_USB_INT_RT_STS);
+ } else {
usb_present_sts = (!(USBIN_UV_RT_STS &
pm8x41_reg_read(SMBCHG_USB_RT_STS)));
+ }
}
else {
if (pmic == PMIC_IS_PM8916) {
@@ -739,6 +757,8 @@
pmi_type = board_pmic_target(1) & PMIC_TYPE_MASK;
if (pmi_type == PMIC_IS_PMI632)
return PMIC_IS_PMI632;
+ else if (pmi_type == PMIC_IS_PM660)
+ return PMIC_IS_PM660;
else
return PMIC_IS_PMI8950;
} else {
@@ -757,6 +777,8 @@
pmi_type = target_get_pmic();
if (pmi_type == PMIC_IS_PMI632) {
pmi632_reset_configure(reset_type);
+ } else if (pmi_type == PMIC_IS_PM660) {
+ pm8x41_reset_configure(reset_type);
} else {
if(target_is_pmi_enabled()) {
pm8994_reset_configure(reset_type);
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 6c3b058..38cf975 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -275,7 +275,7 @@
uint8_t slave_id = PMIC_WLED_SLAVE_ID; /* pmi */
uint32_t pmic_type = target_get_pmic();
- if(pmic_type == PMIC_IS_PM8916)
+ if(pmic_type == PMIC_IS_PM8916 || pmic_type == PMIC_IS_PM660)
return NO_ERROR;
pm8x41_wled_config_slave_id(slave_id);
@@ -312,7 +312,7 @@
if ((pmic_type == PMIC_IS_PMI632) &&
(bl->bl_interface_type == BL_PWM)) {
ret = pwm_backlight_ctrl(enable);
- } else if (pmic_type == PMIC_IS_PM8916) {
+ } else if (pmic_type == PMIC_IS_PM8916 || pmic_type == PMIC_IS_PM660) {
ret = pwm_backlight_ctrl(enable);
} else {
ret = msm8952_wled_backlight_ctrl(enable);
@@ -536,7 +536,7 @@
int rc = NO_ERROR;
uint32_t pmic_type = target_get_pmic();
- if(pmic_type == PMIC_IS_PM8916)
+ if(pmic_type == PMIC_IS_PM8916 || pmic_type == PMIC_IS_PM660)
return NO_ERROR;
labibb = pinfo->labibb;
@@ -669,7 +669,7 @@
}
if (pmic_type == PMIC_IS_PMI632)
rc = qpnp_lcdb_enable(true);
- else if(pmic_type != PMIC_IS_PM8916)
+ else if(pmic_type != PMIC_IS_PM8916 && pmic_type != PMIC_IS_PM660)
rc = qpnp_ibb_enable(true); /*5V boost*/
if (rc) {
dprintf(CRITICAL, "%s: qpnp_ibb/lcdb failed\n", __func__);