Merge with /home/tur/proj/fo300/u-boot
diff --git a/CHANGELOG b/CHANGELOG
index 3c752d1..b6dc067 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,11 @@
 
 * Add a fix for a buggy USB device on the FO300 board.
 
+* Updates for MCC200 / PRS200 boards:
+  - support for configurations with SDRAM or DDR memory,
+  - support for highboot and lowboot
+  - adjusting environment definitions
+
 * Add support for WTK FO300 board (TQM5200 based).
 
 * Fix TQM834x hang.
diff --git a/MAKEALL b/MAKEALL
index 48eeaaa..720ab03 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -25,11 +25,11 @@
 #########################################################################
 
 LIST_5xxx="	\
-	BC3450		cpci5200	EVAL5200	icecube_5100	\
-	icecube_5200	lite5200b	mcc200		o2dnt		\
-	pf5200		PM520		TB5200		Total5100	\
-	Total5200	Total5200_Rev2	TQM5200		TQM5200_B	\
-	TQM5200S	fo300						\
+	BC3450		cpci5200	EVAL5200	fo300		\
+	icecube_5100	icecube_5200	lite5200b	mcc200		\
+	o2dnt		pf5200		PM520		TB5200		\
+	Total5100	Total5200	Total5200_Rev2	TQM5200		\
+	TQM5200_B	TQM5200S					\
 "
 
 #########################################################################
diff --git a/Makefile b/Makefile
index 4cc7a48..7542ab4 100644
--- a/Makefile
+++ b/Makefile
@@ -323,10 +323,15 @@
 	@./mkconfig -a IceCube  ppc mpc5xxx icecube
 
 mcc200_config	\
-mcc200_SDRAM	\
-mcc200_highboot	\
-mcc200_COM12	\
-mcc200_highboot_SDRAM:	unconfig
+mcc200_SDRAM_config	\
+mcc200_highboot_config	\
+mcc200_COM12_config	\
+mcc200_COM12_SDRAM_config	\
+mcc200_highboot_SDRAM_config	\
+prs200_config	\
+prs200_DDR_config	\
+prs200_highboot_config	\
+prs200_highboot_DDR_config:	unconfig
 	@ >include/config.h
 	@[ -n "$(findstring highboot,$@)" ] || \
 		{ echo "... with lowboot configuration" ; \
@@ -336,7 +341,18 @@
 		  echo "... with highboot configuration" ; \
 		}
 	@[ -n "$(findstring _SDRAM,$@)" ] || \
-		{ echo "... with DDR" ; \
+		{ if [ -n "$(findstring mcc200,$@)" ]; \
+		  then \
+		  	echo "... with DDR" ; \
+		  else \
+			if [ -n "$(findstring _DDR,$@)" ];\
+			then \
+				echo "... with DDR" ; \
+			else \
+				echo "#define CONFIG_MCC200_SDRAM" >>include/config.h ;\
+				echo "... with SDRAM" ; \
+			fi; \
+		  fi; \
 		}
 	@[ -z "$(findstring _SDRAM,$@)" ] || \
 		{ echo "#define CONFIG_MCC200_SDRAM"	>>include/config.h ; \
@@ -346,7 +362,10 @@
 		{ echo "#define CONFIG_CONSOLE_COM12"	>>include/config.h ; \
 		  echo "... with console on COM12" ; \
 		}
-	@./mkconfig -a mcc200 ppc mpc5xxx mcc200
+	@[ -z "$(findstring prs200,$@)" ] || \
+		{ echo "#define CONFIG_PRS200"  >>include/config.h ;\
+		}
+	@./mkconfig -n $@ -a mcc200 ppc mpc5xxx mcc200
 
 o2dnt_config:
 	@./mkconfig o2dnt ppc mpc5xxx o2dnt
@@ -417,16 +436,22 @@
 		}
 	@./mkconfig -a Total5200 ppc mpc5xxx total5200
 
-TQM5200_config	\
-TQM5200_B_config \
-TQM5200_B_HIGHBOOT_config \
-TQM5200S_config \
-TQM5200S_HIGHBOOT_config \
-TQM5200_STK100_config \
 cam5200_config \
+fo300_config \
 MiniFAP_config \
-fo300_config:	unconfig
+TQM5200S_config \
+TQM5200S_HIGHBOOT_config \
+TQM5200_B_config \
+TQM5200_B_HIGHBOOT_config \
+TQM5200_config	\
+TQM5200_STK100_config:	unconfig
 	@ >include/config.h
+	@[ -z "$(findstring cam5200,$@)" ] || \
+		{ echo "#define CONFIG_CAM5200"	>>include/config.h ; \
+		  echo "#define CONFIG_TQM5200S"	>>include/config.h ; \
+		  echo "#define CONFIG_TQM5200_B"	>>include/config.h ; \
+		  echo "... TQM5200S on Cam5200" ; \
+		}
 	@[ -z "$(findstring fo300,$@)" ] || \
 		{ echo "#define CONFIG_FO300"	>>include/config.h ; \
 		  echo "... TQM5200 on FO300" ; \
@@ -435,12 +460,6 @@
 		{ echo "#define CONFIG_MINIFAP"	>>include/config.h ; \
 		  echo "... TQM5200_AC on MiniFAP" ; \
 		}
-	@[ -z "$(findstring cam5200,$@)" ] || \
-		{ echo "#define CONFIG_CAM5200"	>>include/config.h ; \
-		  echo "#define CONFIG_TQM5200S"	>>include/config.h ; \
-		  echo "#define CONFIG_TQM5200_B"	>>include/config.h ; \
-		  echo "... TQM5200S on Cam5200" ; \
-		}
 	@[ -z "$(findstring STK100,$@)" ] || \
 		{ echo "#define CONFIG_STK52XX_REV100"	>>include/config.h ; \
 		  echo "... on a STK52XX.100 base board" ; \
diff --git a/board/mcc200/config.mk b/board/mcc200/config.mk
index a822559..1922723 100644
--- a/board/mcc200/config.mk
+++ b/board/mcc200/config.mk
@@ -22,7 +22,7 @@
 #
 
 #
-# MCC200 board:
+# MCC200, PRS200 boards:
 #
 #	Valid values for TEXT_BASE are:
 #
diff --git a/board/mcc200/mcc200.c b/board/mcc200/mcc200.c
index 775030c..9c57809 100644
--- a/board/mcc200/mcc200.c
+++ b/board/mcc200/mcc200.c
@@ -197,7 +197,11 @@
 
 int checkboard (void)
 {
+#if defined(CONFIG_PRS200)
+	puts ("Board: PRS200\n");
+#else
 	puts ("Board: MCC200\n");
+#endif
 	return 0;
 }
 
diff --git a/board/tqm5200/tqm5200.c b/board/tqm5200/tqm5200.c
index 0026e08..c8350ab 100644
--- a/board/tqm5200/tqm5200.c
+++ b/board/tqm5200/tqm5200.c
@@ -293,7 +293,7 @@
 #elif defined(CONFIG_FO300)
 # define CARRIER_NAME	"FO300"
 #else
-# error "Unknown carrier board"
+# error "UNKNOWN"
 #endif
 
 	puts (	"Board: " MODULE_NAME " (TQ-Components GmbH)\n"
diff --git a/include/configs/TQM5200.h b/include/configs/TQM5200.h
index 89ec1bf..e0de5c1 100644
--- a/include/configs/TQM5200.h
+++ b/include/configs/TQM5200.h
@@ -37,7 +37,7 @@
 #define CONFIG_TQM5200		1	/* ... on TQM5200 module		*/
 #undef CONFIG_TQM5200_REV100		/*  define for revision 100 modules	*/
 
-/* On a Cameron board or on a FO300 board or ...				*/
+/* On a Cameron or on a FO300 board or ...				*/
 #if !defined(CONFIG_CAM5200) && !defined(CONFIG_FO300)
 #define CONFIG_STK52XX		1	/* ... on a STK52XX board		*/
 #endif
@@ -71,7 +71,7 @@
 
 #undef FO300_SILENT_CONSOLE_WHEN_S1_CLOSED		/* silent console on PSC1 when S1 */
 							/* switch is open */
-#endif
+#endif	/* CONFIG_FO300 */
 
 #ifdef CONFIG_STK52XX
 #define CONFIG_PS2KBD			/* AT-PS/2 Keyboard		*/
diff --git a/include/configs/mcc200.h b/include/configs/mcc200.h
index 563f797..aead49a 100644
--- a/include/configs/mcc200.h
+++ b/include/configs/mcc200.h
@@ -55,16 +55,28 @@
  *
  *  CONFIG_PSC_CONSOLE must be undefined in this case.
  */
+#if !defined(CONFIG_PRS200)
+/* MCC200 configuration: */
 #ifdef CONFIG_CONSOLE_COM12
 #define CONFIG_QUART_CONSOLE	6	/* console is on UARTF of QUART2	*/
 #else
 #define CONFIG_QUART_CONSOLE	8	/* console is on UARTH of QUART2	*/
 #endif
+#else
+/* PRS200 configuration: */
+#undef CONFIG_QUART_CONSOLE
+#endif /* CONFIG_PRS200 */
 /*
  *  To select console on PSC1, define CONFIG_PSC_CONSOLE as 1
  * and undefine CONFIG_QUART_CONSOLE.
  */
-/*#define CONFIG_PSC_CONSOLE	1	*/ /* console is on PSC1		*/
+#if !defined(CONFIG_PRS200)
+/* MCC200 configuration: */
+#undef CONFIG_PSC_CONSOLE
+#else
+/* PRS200 configuration: */
+#define CONFIG_PSC_CONSOLE	1	/* console is on PSC1		*/
+#endif
 #if defined(CONFIG_QUART_CONSOLE) && defined(CONFIG_PSC_CONSOLE)
 #error "Select only one console device!"
 #endif
@@ -103,33 +115,44 @@
 
 #undef	CONFIG_BOOTARGS
 
+#define XMK_STR(x)	#x
+#define MK_STR(x)	XMK_STR(x)
+
-#define	CONFIG_EXTRA_ENV_SETTINGS					\
+#ifdef CONFIG_PRS200
+# define CFG__BOARDNAME "prs200"
+#else
+# define CFG__BOARDNAME "mcc200"
+#endif
+
+#define CONFIG_EXTRA_ENV_SETTINGS					\
 	"netdev=eth0\0"							\
-	"hostname=mcc200\0"						\
+	"hostname=" CFG__BOARDNAME "\0"					\
 	"nfsargs=setenv bootargs root=/dev/nfs rw "			\
 		"nfsroot=${serverip}:${rootpath}\0"			\
 	"ramargs=setenv bootargs root=/dev/ram rw\0"			\
 	"addip=setenv bootargs ${bootargs} "				\
 		"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"	\
 		":${hostname}:${netdev}:off panic=1\0"			\
-	"flash_nfs=run nfsargs addip;"					\
+	"addcons=etenv bootargs ${bootargs} "				\
+		"console=${console},${baudrate}\0"			\
+	"flash_nfs=run nfsargs addip addcons;"				\
 		"bootm ${kernel_addr}\0"				\
-	"flash_self=run ramargs addip;"					\
+	"flash_self=run ramargs addip addcons;"				\
 		"bootm ${kernel_addr} ${ramdisk_addr}\0"		\
-	"net_nfs=tftp 200000 ${bootfile};run nfsargs addip;bootm\0"	\
+	"net_nfs=tftp 200000 ${bootfile};"				\
+		"run nfsargs addip addcons;bootm\0"			\
+	"console=ttyS0\0"						\
 	"rootpath=/opt/eldk/ppc_6xx\0"					\
-	"bootfile=/tftpboot/mcc200/uImage\0"				\
-	"baudrate=115200\0"						\
-	"load=tftp 200000 /tftpboot/mcc200/u-boot.bin\0"		\
-	"update=protect off FFF00000 +${filesize};"			\
-		"era FFF00000 +${filesize};"				\
-		"cp.b 200000 FFF00000 ${filesize}\0"		        \
-	"serverip=192.168.1.1\0"					\
-	"ipaddr=192.168.133.144\0"					\
-	"netmask=255.255.0.0\0"						\
+	"bootfile=/tftpboot/" CFG__BOARDNAME "/uImage\0"		\
+	"load=tftp 200000 /tftpboot/" CFG__BOARDNAME "/u-boot.bin\0"	\
+	"text_base=" MK_STR(TEXT_BASE) "\0"				\
+	"update=protect off ${text_base} +${filesize};"			\
+		"era ${text_base} +${filesize};"			\
+		"cp.b 200000 ${text_base} ${filesize}\0"		\
 	"unlock=yes\0"							\
-	"ethaddr=00:02:44:7D:73:3B\0"					\
 	""
+#undef MK_STR
+#undef XMK_STR
 
 #define CONFIG_BOOTCOMMAND	"run flash_self"
 
@@ -314,7 +337,7 @@
  * One of four SC16C554 UARTs is selected with
  * A3-A4 (DA5-DA6) lines.
  */
-#if (CONFIG_QUART_CONSOLE > 0) && (CONFIG_QUART_CONSOLE < 5)
+#if (CONFIG_QUART_CONSOLE > 0) && (CONFIG_QUART_CONSOLE < 5) && !defined(CONFIG_PRS200)
 #define CFG_NS16550_COM1	(CFG_CS2_START | (CONFIG_QUART_CONSOLE - 1)<<5)
 #elif (CONFIG_QUART_CONSOLE > 4) && (CONFIG_QUART_CONSOLE < 9)
 #define CFG_NS16550_COM1	(CFG_CS1_START | (CONFIG_QUART_CONSOLE - 5)<<5)