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;
 }