From d14ba6a798beb753e7a864500414fcc2d198b8bc Mon Sep 17 00:00:00 2001
From: Jon Loeliger <jdl@freescale.com>
Date: Thu, 14 Sep 2006 08:40:36 -0500
Subject: [PATCH] Handle 86xx SVR values according to the new Reference Manual.
 Both 8641 and 8641D have SVR == 0x8090, and are distinguished by the byte in
 bits 16-23 instead. Thanks to Jason Jin for noticing.

Signed-off-by: Jon Loeliger <jdl@freescale.com>
---
 cpu/mpc86xx/cpu.c           | 9 +++++----
 include/asm-ppc/processor.h | 5 +++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/cpu/mpc86xx/cpu.c b/cpu/mpc86xx/cpu.c
index ddd0ad3b39..551b243076 100644
--- a/cpu/mpc86xx/cpu.c
+++ b/cpu/mpc86xx/cpu.c
@@ -76,11 +76,12 @@ checkcpu(void)
 	puts("    System: ");
 	switch (ver) {
 	case SVR_8641:
-		puts("8641");
-		break;
-	case SVR_8641D:
+	    if (SVR_SUBVER(svr) == 1) {
 		puts("8641D");
-		break;
+	    } else {
+		puts("8641");
+	    }
+	    break;
 	default:
 		puts("Unknown");
 		break;
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index 0060cd030b..553ef3d945 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -802,6 +802,8 @@
 #define SVR_VER(svr)	(((svr) >>  16) & 0xFFFF)	/* Version field */
 #define SVR_REV(svr)	(((svr) >>   0) & 0xFFFF)	/* Revison field */
 
+#define SVR_SUBVER(svr)	(((svr) >>  8) & 0xFF)	/* Process/MFG sub-version */
+
 #define SVR_FAM(svr)	(((svr) >> 20) & 0xFFF)	/* Family field */
 #define SVR_MEM(svr)	(((svr) >> 16) & 0xF)	/* Member field */
 
@@ -819,9 +821,8 @@
 #define SVR_8541	0x807A
 #define SVR_8548	0x8031
 #define SVR_8548_E	0x8039
-
 #define SVR_8641	0x8090
-#define SVR_8641D	0x8091
+
 
 /* I am just adding a single entry for 8260 boards.  I think we may be
  * able to combine mbx, fads, rpxlite, bseip, and classic into a single
-- 
2.39.5