From 58442dc01e47cc8ce42af4f29486a34cad60b9d2 Mon Sep 17 00:00:00 2001
From: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Date: Wed, 2 Sep 2009 13:35:21 +0530
Subject: [PATCH] ppc/85xx,86xx: Handling Unknown SOC version

Incase the system is detected with Unknown SVR, let the system boot
with a default value and a proper message.

Now with dynamic detection of SOC properties from SVR, this is necessary
to prevent a crash.

Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
 cpu/mpc85xx/cpu.c           | 10 +++-------
 cpu/mpc86xx/cpu.c           |  5 +----
 cpu/mpc8xxx/cpu.c           |  5 +++--
 include/asm-ppc/processor.h |  2 ++
 4 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/cpu/mpc85xx/cpu.c b/cpu/mpc85xx/cpu.c
index 6be98dc350..63bdb6fde1 100644
--- a/cpu/mpc85xx/cpu.c
+++ b/cpu/mpc85xx/cpu.c
@@ -69,13 +69,9 @@ int checkcpu (void)
 
 	cpu = gd->cpu;
 
-	if (cpu->name) {
-		puts(cpu->name);
-		if (IS_E_PROCESSOR(svr))
-			puts("E");
-	} else {
-		puts("Unknown");
-	}
+	puts(cpu->name);
+	if (IS_E_PROCESSOR(svr))
+		puts("E");
 
 	printf(", Version: %d.%d, (0x%08x)\n", major, minor, svr);
 
diff --git a/cpu/mpc86xx/cpu.c b/cpu/mpc86xx/cpu.c
index 04409cec68..e97ab6d8a5 100644
--- a/cpu/mpc86xx/cpu.c
+++ b/cpu/mpc86xx/cpu.c
@@ -65,10 +65,7 @@ checkcpu(void)
 
 	cpu = gd->cpu;
 
-	if (cpu->name)
-		puts(cpu->name);
-	else
-		puts("Unknown");
+	puts(cpu->name);
 
 	printf(", Version: %d.%d, (0x%08x)\n", major, minor, svr);
 	puts("Core:  ");
diff --git a/cpu/mpc8xxx/cpu.c b/cpu/mpc8xxx/cpu.c
index 339f6d97c2..c73ac3cc6d 100644
--- a/cpu/mpc8xxx/cpu.c
+++ b/cpu/mpc8xxx/cpu.c
@@ -79,6 +79,8 @@ struct cpu_type cpu_type_list [] = {
 #endif
 };
 
+struct cpu_type cpu_type_unknown = CPU_TYPE_ENTRY(Unknown, Unknown, 1);
+
 struct cpu_type *identify_cpu(u32 ver)
 {
 	int i;
@@ -86,8 +88,7 @@ struct cpu_type *identify_cpu(u32 ver)
 		if (cpu_type_list[i].soc_ver == ver)
 			return &cpu_type_list[i];
 	}
-
-	return NULL;
+	return &cpu_type_unknown;
 }
 
 int cpu_numcores() {
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index 78ef4187f2..0a4c66c9d9 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -1034,6 +1034,8 @@
 #define SVR_8641	0x809000
 #define SVR_8641D	0x809001
 
+#define SVR_Unknown	0xFFFFFF
+
 #define _GLOBAL(n)\
 	.globl n;\
 n:
-- 
2.39.5