msm8960: Detect boot reason and pass args to kernel for battery charging

Bootup reason is available from early bootloaders in smem. Read this and
pass along to kernel using androidboot.mode=charger kernel command line
argument.

Change-Id: I12b579b13a79b1847dc6bc8388b4d54ee86022c3
diff --git a/target/msm8960/init.c b/target/msm8960/init.c
index 28f07a4..44b3aaa 100644
--- a/target/msm8960/init.c
+++ b/target/msm8960/init.c
@@ -268,6 +268,23 @@
 	return baseband;
 }
 
+static unsigned target_check_power_on_reason(void)
+{
+	unsigned power_on_status = 0;
+	unsigned int status_len = sizeof(power_on_status);
+	unsigned smem_status;
+
+	smem_status = smem_read_alloc_entry(SMEM_POWER_ON_STATUS_INFO,
+					&power_on_status, status_len);
+
+	if (smem_status)
+	{
+		dprintf(CRITICAL, "ERROR: unable to read shared memory for power on reason\n");
+	}
+	dprintf(INFO,"Power on reason %u\n", power_on_status);
+	return power_on_status;
+}
+
 void reboot_device(unsigned reboot_reason)
 {
 	writel(reboot_reason, RESTART_REASON_ADDR);
@@ -300,6 +317,14 @@
 	return restart_reason;
 }
 
+unsigned target_pause_for_battery_charge(void)
+{
+	if (target_check_power_on_reason() == PWR_ON_EVENT_USB_CHG)
+		return 1;
+
+	return 0;
+}
+
 void target_serialno(unsigned char *buf)
 {
 	unsigned int serialno;