diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0778-arch-arm64-Add-Revision-Serial-Model-to-cpuinfo.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.19/950-0778-arch-arm64-Add-Revision-Serial-Model-to-cpuinfo.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0778-arch-arm64-Add-Revision-Serial-Model-to-cpuinfo.patch b/target/linux/brcm2708/patches-4.19/950-0778-arch-arm64-Add-Revision-Serial-Model-to-cpuinfo.patch new file mode 100644 index 0000000000..a10c08a0be --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0778-arch-arm64-Add-Revision-Serial-Model-to-cpuinfo.patch @@ -0,0 +1,58 @@ +From dba2372d27a2aca9f4d696799a2666f98179f4fb Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.org> +Date: Tue, 3 Sep 2019 18:17:25 +0100 +Subject: [PATCH 778/782] arch/arm64: Add Revision, Serial, Model to cpuinfo + +Signed-off-by: Phil Elwell <phil@raspberrypi.org> +--- + arch/arm64/kernel/cpuinfo.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +--- a/arch/arm64/kernel/cpuinfo.c ++++ b/arch/arm64/kernel/cpuinfo.c +@@ -27,6 +27,7 @@ + #include <linux/elf.h> + #include <linux/init.h> + #include <linux/kernel.h> ++#include <linux/of_platform.h> + #include <linux/personality.h> + #include <linux/preempt.h> + #include <linux/printk.h> +@@ -125,6 +126,10 @@ static int c_show(struct seq_file *m, vo + { + int i, j; + bool compat = personality(current->personality) == PER_LINUX32; ++ struct device_node *np; ++ const char *model; ++ const char *serial; ++ u32 revision; + + for_each_online_cpu(i) { + struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i); +@@ -176,6 +181,26 @@ static int c_show(struct seq_file *m, vo + seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr)); + } + ++ seq_printf(m, "Hardware\t: BCM2835\n"); ++ ++ np = of_find_node_by_path("/system"); ++ if (np) { ++ if (!of_property_read_u32(np, "linux,revision", &revision)) ++ seq_printf(m, "Revision\t: %04x\n", revision); ++ of_node_put(np); ++ } ++ ++ np = of_find_node_by_path("/"); ++ if (np) { ++ if (!of_property_read_string(np, "serial-number", ++ &serial)) ++ seq_printf(m, "Serial\t\t: %s\n", serial); ++ if (!of_property_read_string(np, "model", ++ &model)) ++ seq_printf(m, "Model\t\t: %s\n", model); ++ of_node_put(np); ++ } ++ + return 0; + } + |