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;
 | |
|  }
 | |
|  
 |