msm: 8x55: put reason for boot in procfs from SMEM
During board initialization read the shared memory item SMEM_POWER_ON_STATUS_INFO and place it in the procfs at /proc/sys/kernel/boot_reason The data item is an integer with a bit being set to identify the reason the device was powered on. The values of this data item is defined in the document Document/arm/msm/boot.txt, the following is the data in the documentation file. power_on_status values set by the PMIC for power on event: ---------------------------------------------------------- 0x01 -- keyboard power on 0x02 -- RTC alarm 0x04 -- cable power on 0x08 -- SMPL 0x10 -- Watch Dog timeout 0x20 -- USB charger 0x40 -- Wall charger 0xFF -- error reading power_on_status value This is change is a response to a customer request described in JIRA KERNEL-518 Change-Id: I59e665f92e6e29f7dfef4380314f676a2d92c94b Signed-off-by: Rick Adams <rgadams@codeaurora.org> (cherry picked from commit 9512d7e26abc9d23a1771533c5300605d70dfaa7) Conflicts: arch/arm/include/asm/processor.h arch/arm/mach-msm/board-msm7x30.c kernel/sysctl.c
This commit is contained in:
committed by
Rohit Vaswani
parent
0eeabce591
commit
e8605d39a3
23
Documentation/arm/msm/boot.txt
Normal file
23
Documentation/arm/msm/boot.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
Introduction
|
||||
=============
|
||||
The power management integrated circuit (PMIC) records the reason the
|
||||
Application processor was powered on in Shared Memory.
|
||||
The hardware and software used is the shared memory interface. This document
|
||||
is not for the purpose of describing this interface, but to identify the
|
||||
possible values for this data item.
|
||||
|
||||
Description
|
||||
===========
|
||||
Shared memory item (SMEM_POWER_ON_STATUS_INFO) is read to get access to
|
||||
this data. The table below identifies the possible values stored.
|
||||
|
||||
power_on_status values set by the PMIC for power on event:
|
||||
----------------------------------------------------------
|
||||
0x01 -- keyboard power on
|
||||
0x02 -- RTC alarm
|
||||
0x04 -- cable power on
|
||||
0x08 -- SMPL
|
||||
0x10 -- Watch Dog timeout
|
||||
0x20 -- USB charger
|
||||
0x40 -- Wall charger
|
||||
0xFF -- error reading power_on_status value
|
||||
@@ -23,6 +23,7 @@ show up in /proc/sys/kernel:
|
||||
- auto_msgmni
|
||||
- bootloader_type [ X86 only ]
|
||||
- bootloader_version [ X86 only ]
|
||||
- boot_reason [ ARM only ]
|
||||
- callhome [ S390 only ]
|
||||
- cap_last_cap
|
||||
- core_pattern
|
||||
@@ -142,6 +143,19 @@ Documentation/x86/boot.txt for additional information.
|
||||
|
||||
==============================================================
|
||||
|
||||
boot_reason:
|
||||
|
||||
ARM -- reason for device boot
|
||||
|
||||
A single bit will be set in the unsigned integer value to identify the
|
||||
reason the device was booted / powered on. The value will be zero if this
|
||||
feature is not supported on the ARM device being booted.
|
||||
|
||||
See the power-on-status field definitions in
|
||||
Documentation/arm/msm/boot.txt for Qualcomm's family of devices.
|
||||
|
||||
==============================================================
|
||||
|
||||
callhome:
|
||||
|
||||
Controls the kernel's callhome behavior in case of a kernel panic.
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
#define STACK_TOP_MAX TASK_SIZE
|
||||
#endif
|
||||
|
||||
extern unsigned int boot_reason;
|
||||
|
||||
struct debug_info {
|
||||
#ifdef CONFIG_HAVE_HW_BREAKPOINT
|
||||
struct perf_event *hbp[ARM_MAX_HBP_SLOTS];
|
||||
|
||||
@@ -103,6 +103,8 @@ EXPORT_SYMBOL(system_serial_high);
|
||||
unsigned int elf_hwcap __read_mostly;
|
||||
EXPORT_SYMBOL(elf_hwcap);
|
||||
|
||||
unsigned int boot_reason;
|
||||
EXPORT_SYMBOL(boot_reason);
|
||||
|
||||
#ifdef MULTI_CPU
|
||||
struct processor processor __read_mostly;
|
||||
|
||||
@@ -153,6 +153,7 @@ enum
|
||||
KERN_MAX_LOCK_DEPTH=74, /* int: rtmutex's maximum lock depth */
|
||||
KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */
|
||||
KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
|
||||
KERN_BOOT_REASON = 77, /* int: identify reason system was booted */
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1001,6 +1001,19 @@ static struct ctl_table kern_table[] = {
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARM
|
||||
{
|
||||
.procname = "boot_reason",
|
||||
.data = &boot_reason,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0444,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
#endif
|
||||
/*
|
||||
* NOTE: do not add new entries to this table unless you have read
|
||||
* Documentation/sysctl/ctl_unnumbered.txt
|
||||
*/
|
||||
{ }
|
||||
};
|
||||
|
||||
|
||||
@@ -137,6 +137,7 @@ static const struct bin_table bin_kern_table[] = {
|
||||
{ CTL_INT, KERN_COMPAT_LOG, "compat-log" },
|
||||
{ CTL_INT, KERN_MAX_LOCK_DEPTH, "max_lock_depth" },
|
||||
{ CTL_INT, KERN_PANIC_ON_NMI, "panic_on_unrecovered_nmi" },
|
||||
{ CTL_INT, KERN_BOOT_REASON, "boot_reason" },
|
||||
{}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user