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;