diff --git a/Makefile b/Makefile
index e8bbd78..116d9e7 100644
--- a/Makefile
+++ b/Makefile
@@ -1488,9 +1488,9 @@ v5fx30teval_flash_config: unconfig
 	@mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
 	@mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
 	@echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-rom.lds"\
-		> $(obj)/board/avnet/v5fx30teval/config.tmp
+		> $(obj)board/avnet/v5fx30teval/config.tmp
 	@echo "TEXT_BASE := 0xFF1C0000" \
-		>> $(obj)/board/avnet/v5fx30teval/config.tmp
+		>> $(obj)board/avnet/v5fx30teval/config.tmp
 	@$(MKCONFIG) v5fx30teval ppc ppc4xx v5fx30teval avnet
 
 VOH405_config:	unconfig
diff --git a/board/amcc/taihu/taihu.c b/board/amcc/taihu/taihu.c
index 266f260..ee0939a 100644
--- a/board/amcc/taihu/taihu.c
+++ b/board/amcc/taihu/taihu.c
@@ -78,15 +78,6 @@ int checkboard(void)
 	return 0;
 }
 
-/*************************************************************************
- *  phys_size_t initdram
- *
- ************************************************************************/
-phys_size_t initdram(int board)
-{
-	return CFG_SDRAM_SIZE_PER_BANK * CFG_SDRAM_BANKS; /* 128Mbytes */
-}
-
 static int do_sw_stat(cmd_tbl_t* cmd_tp, int flags, int argc, char *argv[])
 {
 	char stat;
diff --git a/board/avnet/v5fx30teval/.gitignore b/board/avnet/v5fx30teval/.gitignore
new file mode 100644
index 0000000..f6418a0
--- /dev/null
+++ b/board/avnet/v5fx30teval/.gitignore
@@ -0,0 +1 @@
+/config.tmp
diff --git a/board/dave/PPChameleonEVB/PPChameleonEVB.c b/board/dave/PPChameleonEVB/PPChameleonEVB.c
index c9b288a..c715ad4 100644
--- a/board/dave/PPChameleonEVB/PPChameleonEVB.c
+++ b/board/dave/PPChameleonEVB/PPChameleonEVB.c
@@ -203,31 +203,6 @@ int checkboard (void)
 
 /* ------------------------------------------------------------------------- */
 
-phys_size_t initdram (int board_type)
-{
-	unsigned long val;
-
-	mtdcr(memcfga, mem_mb0cf);
-	val = mfdcr(memcfgd);
-
-#if 0 /* test-only */
-	for (;;) {
-		NAND_DISABLE_CE(1);
-		udelay(100);
-		NAND_ENABLE_CE(1);
-		udelay(100);
-	}
-#endif
-#if 0
-	printf("\nmb0cf=%x\n", val); /* test-only */
-	printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
-	return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-}
-
-/* ------------------------------------------------------------------------- */
-
 int testdram (void)
 {
 	/* TODO: XXX XXX XXX */
diff --git a/board/esd/pci405/pci405.c b/board/esd/pci405/pci405.c
index f740d59..f8d7c28 100644
--- a/board/esd/pci405/pci405.c
+++ b/board/esd/pci405/pci405.c
@@ -357,37 +357,6 @@ int checkboard (void)
 }
 
 /* ------------------------------------------------------------------------- */
-
-phys_size_t initdram (int board_type)
-{
-	unsigned long val;
-
-	mtdcr(memcfga, mem_mb0cf);
-	val = mfdcr(memcfgd);
-
-#if 0
-	printf("\nmb0cf=%x\n", val); /* test-only */
-	printf("strap=%x\n", mfdcr(strap)); /* test-only */
-#endif
-
-#if 0 /* test-only: all PCI405 version must report 16mb */
-	return (4*1024*1024 << ((val & 0x000e0000) >> 17));
-#else
-	return (16*1024*1024);
-#endif
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
-	/* TODO: XXX XXX XXX */
-	printf ("test: 16 MB - ok\n");
-
-	return (0);
-}
-
-/* ------------------------------------------------------------------------- */
 int wpeeprom(int wp)
 {
 	int wp_state = wp;
diff --git a/board/quad100hd/quad100hd.c b/board/quad100hd/quad100hd.c
index 8118678..ffc47de 100644
--- a/board/quad100hd/quad100hd.c
+++ b/board/quad100hd/quad100hd.c
@@ -86,8 +86,3 @@ int checkboard(void)
 
 	return 0;
 }
-
-phys_size_t initdram(int board_type)
-{
-	return CFG_SDRAM_SIZE;
-}
diff --git a/board/xilinx/ml507/.gitignore b/board/xilinx/ml507/.gitignore
new file mode 100644
index 0000000..f6418a0
--- /dev/null
+++ b/board/xilinx/ml507/.gitignore
@@ -0,0 +1 @@
+/config.tmp
diff --git a/board/xilinx/ppc440-generic/.gitignore b/board/xilinx/ppc440-generic/.gitignore
new file mode 100644
index 0000000..f6418a0
--- /dev/null
+++ b/board/xilinx/ppc440-generic/.gitignore
@@ -0,0 +1 @@
+/config.tmp
diff --git a/board/xilinx/ppc440-generic/config.mk b/board/xilinx/ppc440-generic/config.mk
index 8d220da..6d76755 100644
--- a/board/xilinx/ppc440-generic/config.mk
+++ b/board/xilinx/ppc440-generic/config.mk
@@ -22,4 +22,4 @@
 # MA 02111-1307 USA
 #
 
-sinclude $(obj)/board/$(BOARDDIR)/config.tmp
+sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
diff --git a/board/zeus/zeus.c b/board/zeus/zeus.c
index 33d971a..2a4ec5c 100644
--- a/board/zeus/zeus.c
+++ b/board/zeus/zeus.c
@@ -190,29 +190,6 @@ int checkboard(void)
 	return (0);
 }
 
-static u32 detect_sdram_size(void)
-{
-	u32 val;
-	u32 size;
-
-	mfsdram(mem_mb0cf, val);
-	size = (4 << 20) << ((val & 0x000e0000) >> 17);
-
-	/*
-	 * Check if 2nd bank is enabled too
-	 */
-	mfsdram(mem_mb1cf, val);
-	if (val & 1)
-		size += (4 << 20) << ((val & 0x000e0000) >> 17);
-
-	return size;
-}
-
-phys_size_t initdram (int board_type)
-{
-	return detect_sdram_size();
-}
-
 static int default_env_var(char *buf, char *var)
 {
 	char *ptr;
diff --git a/cpu/ppc4xx/sdram.c b/cpu/ppc4xx/sdram.c
index 7d60ad6..b5a6a4c 100644
--- a/cpu/ppc4xx/sdram.c
+++ b/cpu/ppc4xx/sdram.c
@@ -209,15 +209,15 @@ phys_size_t initdram(int board_type)
 		udelay(10000);
 
 		if (get_ram_size(0, mb0cf[i].size) == mb0cf[i].size) {
+			phys_size_t size = mb0cf[i].size;
+
 			/*
 			 * OK, size detected.  Enable second bank if
 			 * defined (assumes same type as bank 0)
 			 */
 #ifdef CONFIG_SDRAM_BANK1
-			u32 b1cr = mb0cf[i].size | mb0cf[i].reg;
-
 			mtsdram(mem_mcopt1, 0x00000000);
-			mtsdram(mem_mb1cf, b1cr); /* SDRAM0_B1CR */
+			mtsdram(mem_mb1cf, mb0cf[i].size | mb0cf[i].reg);
 			mtsdram(mem_mcopt1, 0x80800000);
 			udelay(10000);
 
@@ -230,13 +230,19 @@ phys_size_t initdram(int board_type)
 			    mb0cf[i].size) {
 				mtsdram(mem_mb1cf, 0);
 				mtsdram(mem_mcopt1, 0);
+			} else {
+				/*
+				 * We have two identical banks, so the size
+				 * is twice the bank size
+				 */
+				size = 2 * size;
 			}
 #endif
 
 			/*
 			 * OK, size detected -> all done
 			 */
-			return mb0cf[i].size;
+			return size;
 		}
 	}
 
diff --git a/include/configs/quad100hd.h b/include/configs/quad100hd.h
index d464734..c41f5c9 100644
--- a/include/configs/quad100hd.h
+++ b/include/configs/quad100hd.h
@@ -82,7 +82,6 @@
  * SDRAM configuration (please see cpu/ppc/sdram.[ch])
  */
 #define CONFIG_SDRAM_BANK0  1
-#define CFG_SDRAM_SIZE      0x02000000      /* 32 MB */
 
 /* FIX! SDRAM timings used in datasheet */
 #define CFG_SDRAM_CL            3       /* CAS latency */
diff --git a/include/configs/zeus.h b/include/configs/zeus.h
index b50cba5..b71f711 100644
--- a/include/configs/zeus.h
+++ b/include/configs/zeus.h
@@ -309,6 +309,12 @@
 #define CONFIG_KGDB_SER_INDEX	2		/* which serial port to use */
 #endif
 
+/*
+ * Pass open firmware flat tree
+ */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+
 /* ENVIRONMENT VARS */
 
 #define CONFIG_PREBOOT		"echo;echo Welcome to Bulletendpoints board v1.1;echo"