Merge "target: mdm9640: Disable rpm smd."
diff --git a/platform/msm_shared/boot_verifier.c b/platform/msm_shared/boot_verifier.c
index 7d22eb9..90cbfeb 100644
--- a/platform/msm_shared/boot_verifier.c
+++ b/platform/msm_shared/boot_verifier.c
@@ -341,6 +341,7 @@
}
verify_image_with_sig_error:
+ boot_verify_send_event(BOOTIMG_VERIFICATION_FAIL);
verify_image_with_sig_done:
return ret;
}
diff --git a/platform/msm_shared/smem.c b/platform/msm_shared/smem.c
index 9ef0c18..47f7c29 100644
--- a/platform/msm_shared/smem.c
+++ b/platform/msm_shared/smem.c
@@ -50,6 +50,7 @@
[HW_PLATFORM_LIQUID] = "Liquid",
[HW_PLATFORM_DRAGON] = "Dragon",
[HW_PLATFORM_QRD] = "QRD",
+ [HW_PLATFORM_IPC] = "IPC",
[HW_PLATFORM_HRD] = "HRD",
[HW_PLATFORM_DTV] = "DTV",
[HW_PLATFORM_STP] = "STP",
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index 983cac7..4da7b31 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -474,6 +474,7 @@
HW_PLATFORM_LIQUID = 9,
HW_PLATFORM_DRAGON = 10,
HW_PLATFORM_QRD = 11,
+ HW_PLATFORM_IPC = 12,
HW_PLATFORM_HRD = 13,
HW_PLATFORM_DTV = 14,
HW_PLATFORM_RUMI = 15,
diff --git a/target/msm8996/init.c b/target/msm8996/init.c
index f9e63ee..539d98d 100644
--- a/target/msm8996/init.c
+++ b/target/msm8996/init.c
@@ -44,6 +44,7 @@
#include <regulator.h>
#include <dev/keys.h>
#include <pm8x41.h>
+#include <pm8x41_hw.h>
#include <crypto5_wrapper.h>
#include <clock.h>
#include <partition_parser.h>
@@ -87,6 +88,13 @@
#define PMIC_ARB_CHANNEL_NUM 0
#define PMIC_ARB_OWNER_ID 0
+#define SMBCHG_USB_RT_STS 0x21310
+#define SMBCHG_DC_RT_STS 0x21410
+#define USBIN_UV_RT_STS BIT(0)
+#define USBIN_OV_RT_STS BIT(1)
+#define DCIN_UV_RT_STS BIT(0)
+#define DCIN_OV_RT_STS BIT(1)
+
enum
{
FUSION_I2S_MTP = 1,
@@ -255,8 +263,18 @@
uint32_t target_is_pwrkey_pon_reason()
{
uint8_t pon_reason = pm8950_get_pon_reason();
+
if (pm8x41_get_is_cold_boot() && ((pon_reason == KPDPWR_N) || (pon_reason == (KPDPWR_N|PON1))))
return 1;
+ else if (pon_reason == PON1)
+ {
+ /* DC charger is present or USB charger is present */
+ if (((USBIN_UV_RT_STS | USBIN_OV_RT_STS) & pm8x41_reg_read(SMBCHG_USB_RT_STS)) == 0 ||
+ ((DCIN_UV_RT_STS | DCIN_OV_RT_STS) & pm8x41_reg_read(SMBCHG_DC_RT_STS)) == 0)
+ return 0;
+ else
+ return 1;
+ }
else
return 0;
}