README states that CONFIG_SYS_SDRAM_BASE should the physical base
address of SDRAM, whilst up until now various pieces of generic code
have presumed that it can be directly accessed by the CPU & MIPS has
provided a virtual address for CONFIG_SYS_SDRAM_BASE. Other generic code
expects CONFIG_SYS_SDRAM_BASE to be a physical address, which makes the
inconsistency a mess.

Now that the preceding patches have prepared us to handle using a
physical CONFIG_SYS_SDRAM_BASE, clean up the inconsistency for boston by
providing a physical CONFIG_SYS_SDRAM_BASE. A side effect of this & use
of phys_to_virt is that on MIPS64 U-Boot will now access DDR through the
xkphys region of the virtual address space rather than ckseg0, which
necessitates the change to board_get_usable_ram_top().

Signed-off-by: Paul Burton <paul.bur...@imgtec.com>
Cc: Daniel Schwierzeck <daniel.schwierz...@gmail.com>
---

 board/imgtec/boston/ddr.c |  8 ++------
 include/configs/boston.h  | 21 ++++++++++-----------
 2 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/board/imgtec/boston/ddr.c b/board/imgtec/boston/ddr.c
index ceffef6..e765627 100644
--- a/board/imgtec/boston/ddr.c
+++ b/board/imgtec/boston/ddr.c
@@ -5,6 +5,7 @@
  */
 
 #include <common.h>
+#include <linux/sizes.h>
 
 #include <asm/io.h>
 
@@ -21,10 +22,5 @@ ulong board_get_usable_ram_top(ulong total_size)
 {
        DECLARE_GLOBAL_DATA_PTR;
 
-       if (gd->ram_top < CONFIG_SYS_SDRAM_BASE) {
-               /* 2GB wrapped around to 0 */
-               return CKSEG0ADDR(256 << 20);
-       }
-
-       return min_t(unsigned long, gd->ram_top, CKSEG0ADDR(256 << 20));
+       return min_t(ulong, gd->ram_top, (ulong)phys_to_virt(SZ_256M));
 }
diff --git a/include/configs/boston.h b/include/configs/boston.h
index e958054..37060b0 100644
--- a/include/configs/boston.h
+++ b/include/configs/boston.h
@@ -27,20 +27,19 @@
 /*
  * Memory map
  */
-#ifdef CONFIG_64BIT
-# define CONFIG_SYS_SDRAM_BASE         0xffffffff80000000
-#else
-# define CONFIG_SYS_SDRAM_BASE         0x80000000
-#endif
-
+#define CONFIG_SYS_SDRAM_BASE          0x0
 #define CONFIG_SYS_INIT_SP_OFFSET      0x400000
-
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
 
-#define CONFIG_SYS_LOAD_ADDR           (CONFIG_SYS_SDRAM_BASE + 0x100000)
-
-#define CONFIG_SYS_MEMTEST_START       (CONFIG_SYS_SDRAM_BASE + 0)
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_SDRAM_BASE + 0x10000000)
+#ifdef CONFIG_64BIT
+# define CONFIG_SYS_LOAD_ADDR          0xffffffff80100000
+# define CONFIG_SYS_MEMTEST_START      0xffffffff80000000
+# define CONFIG_SYS_MEMTEST_END                0xffffffff90000000
+#else
+# define CONFIG_SYS_LOAD_ADDR          0x80100000
+# define CONFIG_SYS_MEMTEST_START      0x80000000
+# define CONFIG_SYS_MEMTEST_END                0x90000000
+#endif
 
 #define CONFIG_SYS_MALLOC_LEN          (256 * 1024)
 
-- 
2.10.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to