Commit 3f599875 authored by Paul Kocialkowski's avatar Paul Kocialkowski Committed by Russell King

ARM: 8355/1: arch: Show the serial number from devicetree in cpuinfo

This grabs the serial number shown in cpuinfo from the serial-number device-tree
property in priority. When booting with ATAGs (and without device-tree), the
provided number is still shown instead.
Signed-off-by: default avatarPaul Kocialkowski <contact@paulk.fr>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 13dd92bb
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
/* information about the system we're running on */ /* information about the system we're running on */
extern unsigned int system_rev; extern unsigned int system_rev;
extern const char *system_serial;
extern unsigned int system_serial_low; extern unsigned int system_serial_low;
extern unsigned int system_serial_high; extern unsigned int system_serial_high;
extern unsigned int mem_fclk_21285; extern unsigned int mem_fclk_21285;
......
...@@ -93,6 +93,9 @@ unsigned int __atags_pointer __initdata; ...@@ -93,6 +93,9 @@ unsigned int __atags_pointer __initdata;
unsigned int system_rev; unsigned int system_rev;
EXPORT_SYMBOL(system_rev); EXPORT_SYMBOL(system_rev);
const char *system_serial;
EXPORT_SYMBOL(system_serial);
unsigned int system_serial_low; unsigned int system_serial_low;
EXPORT_SYMBOL(system_serial_low); EXPORT_SYMBOL(system_serial_low);
...@@ -839,8 +842,25 @@ arch_initcall(customize_machine); ...@@ -839,8 +842,25 @@ arch_initcall(customize_machine);
static int __init init_machine_late(void) static int __init init_machine_late(void)
{ {
struct device_node *root;
int ret;
if (machine_desc->init_late) if (machine_desc->init_late)
machine_desc->init_late(); machine_desc->init_late();
root = of_find_node_by_path("/");
if (root) {
ret = of_property_read_string(root, "serial-number",
&system_serial);
if (ret)
system_serial = NULL;
}
if (!system_serial)
system_serial = kasprintf(GFP_KERNEL, "%08x%08x",
system_serial_high,
system_serial_low);
return 0; return 0;
} }
late_initcall(init_machine_late); late_initcall(init_machine_late);
...@@ -1109,8 +1129,7 @@ static int c_show(struct seq_file *m, void *v) ...@@ -1109,8 +1129,7 @@ static int c_show(struct seq_file *m, void *v)
seq_printf(m, "Hardware\t: %s\n", machine_name); seq_printf(m, "Hardware\t: %s\n", machine_name);
seq_printf(m, "Revision\t: %04x\n", system_rev); seq_printf(m, "Revision\t: %04x\n", system_rev);
seq_printf(m, "Serial\t\t: %08x%08x\n", seq_printf(m, "Serial\t\t: %s\n", system_serial);
system_serial_high, system_serial_low);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment