mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 077ebc749d94eee58c5fd48c07cf5e58f9280368 Mon Sep 17 00:00:00 2001
 | 
						|
From: Phil Elwell <phil@raspberrypi.org>
 | 
						|
Date: Tue, 3 Sep 2019 18:17:25 +0100
 | 
						|
Subject: [PATCH] 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
 | 
						|
@@ -17,6 +17,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>
 | 
						|
@@ -159,6 +160,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);
 | 
						|
@@ -219,6 +224,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;
 | 
						|
 }
 | 
						|
 
 |