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 Change-Id: I59e665f92e6e29f7dfef4380314f676a2d92c94b Signed-off-by: Rick Adams <rgadams@codeaurora.org>
This commit is contained in:
parent
cd44df1497
commit
f699c92b61
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
|
||||
@ -168,6 +169,20 @@ 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 Technologies, Inc. family of
|
||||
devices.
|
||||
|
||||
==============================================================
|
||||
|
||||
callhome:
|
||||
|
||||
Controls the kernel's callhome behavior in case of a kernel panic.
|
||||
|
@ -30,6 +30,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];
|
||||
|
@ -116,6 +116,9 @@ EXPORT_SYMBOL(elf_hwcap2);
|
||||
char* (*arch_read_hardware_id)(void);
|
||||
EXPORT_SYMBOL(arch_read_hardware_id);
|
||||
|
||||
unsigned int boot_reason;
|
||||
EXPORT_SYMBOL(boot_reason);
|
||||
|
||||
#ifdef MULTI_CPU
|
||||
struct processor processor __ro_after_init;
|
||||
#endif
|
||||
|
@ -153,6 +153,7 @@ enum
|
||||
KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */
|
||||
KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
|
||||
KERN_PANIC_ON_WARN=77, /* int: call panic() in WARN() functions */
|
||||
KERN_BOOT_REASON=78, /* int: identify reason system was booted */
|
||||
};
|
||||
|
||||
|
||||
|
@ -1233,6 +1233,15 @@ static struct ctl_table kern_table[] = {
|
||||
.extra1 = &zero,
|
||||
.extra2 = &one,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARM
|
||||
{
|
||||
.procname = "boot_reason",
|
||||
.data = &boot_reason,
|
||||
.maxlen = sizeof(int),
|
||||
.mode = 0444,
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
#endif
|
||||
{ }
|
||||
};
|
||||
|
@ -140,6 +140,7 @@ static const struct bin_table bin_kern_table[] = {
|
||||
{ CTL_INT, KERN_MAX_LOCK_DEPTH, "max_lock_depth" },
|
||||
{ CTL_INT, KERN_PANIC_ON_NMI, "panic_on_unrecovered_nmi" },
|
||||
{ CTL_INT, KERN_PANIC_ON_WARN, "panic_on_warn" },
|
||||
{ CTL_INT, KERN_BOOT_REASON, "boot_reason" },
|
||||
{}
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user