From a889bd27ef2a9c01eb5b10d067765545781efa0a Mon Sep 17 00:00:00 2001
From: Wolfgang Denk <wd@pollux.(none)>
Date: Tue, 6 Dec 2005 15:02:31 +0100
Subject: [PATCH] Fix DPRAM offset/size for MPC8541/8555. Simplify TQM85xx
 Makefile handling.

---
 CHANGELOG                  | 3 +++
 Makefile                   | 7 +------
 cpu/mpc85xx/ether_fcc.c    | 4 +++-
 include/asm-ppc/cpm_85xx.h | 9 +++++++--
 4 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 4ed9d6e30b..59389450b0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.4:
 ======================================================================
 
+* Fix DPRAM offset/size for MPC8541/8555.
+  Simplify TQM85xx Makefile handling.
+
 * Fix data overflow (typo?) in rtc/ds1302.c
 
 * Fix U-Boot compilation for MIPS boards using ELDK 4.0
diff --git a/Makefile b/Makefile
index dde111c3a6..8fe2984c52 100644
--- a/Makefile
+++ b/Makefile
@@ -1329,12 +1329,7 @@ TQM8540_config		\
 TQM8541_config		\
 TQM8555_config		\
 TQM8560_config:		unconfig
-	@case "$@" in \
-	TQM8540_config) CTYPE=8540;;	\
-	TQM8541_config) CTYPE=8541;;	\
-	TQM8555_config) CTYPE=8555;;	\
-	TQM8560_config) CTYPE=8560;;	\
-	esac; \
+	@CTYPE=$(subst TQM,,$(@:_config=)); \
 	>include/config.h ; \
 	echo "... TQM"$${CTYPE}; \
 	echo "#define CONFIG_MPC$${CTYPE}">>include/config.h; \
diff --git a/cpu/mpc85xx/ether_fcc.c b/cpu/mpc85xx/ether_fcc.c
index 7edb294e96..d15d242492 100644
--- a/cpu/mpc85xx/ether_fcc.c
+++ b/cpu/mpc85xx/ether_fcc.c
@@ -307,7 +307,9 @@ static int fec_init(struct eth_device* dev, bd_t *bis)
      * Allocate space in the reserved FCC area of DPRAM for the
      * internal buffers.  No one uses this space (yet), so we
      * can do this.  Later, we will add resource management for
-     * this area. CPM_FCC_SPECIAL_BASE: 0xb000.
+     * this area.
+     * CPM_FCC_SPECIAL_BASE:	0xB000 for MPC8540, MPC8560
+     *				0x9000 for MPC8541, MPC8555
      */
     mem_addr = CPM_FCC_SPECIAL_BASE + ((info->ether_index) * 64);
     pram_ptr->fen_genfcc.fcc_riptr = mem_addr;
diff --git a/include/asm-ppc/cpm_85xx.h b/include/asm-ppc/cpm_85xx.h
index 885663fef2..a74a3a115b 100644
--- a/include/asm-ppc/cpm_85xx.h
+++ b/include/asm-ppc/cpm_85xx.h
@@ -77,9 +77,14 @@
  * downloading RAM microcode.
  */
 #define CPM_DATAONLY_BASE	((uint)128)
+#define CPM_DP_NOSPACE		((uint)0x7FFFFFFF)
+#if defined(CONFIG_MPC8541) || defined(CONFIG_MPC8555)
+#define CPM_FCC_SPECIAL_BASE	((uint)0x00009000)
+#define CPM_DATAONLY_SIZE	((uint)(8 * 1024) - CPM_DATAONLY_BASE)
+#else	/* MPC8540, MPC8560 */
+#define CPM_FCC_SPECIAL_BASE	((uint)0x0000B000)
 #define CPM_DATAONLY_SIZE	((uint)(16 * 1024) - CPM_DATAONLY_BASE)
-#define CPM_DP_NOSPACE		((uint)0x7fffffff)
-#define CPM_FCC_SPECIAL_BASE	((uint)0x0000b000)
+#endif
 
 /* The number of pages of host memory we allocate for CPM.  This is
  * done early in kernel initialization to get physically contiguous
-- 
2.39.5