diff mbox

[U-Boot,v5,9/9] armv8: cavium: Get DRAM size from ATF

Message ID 1441639105-25181-10-git-send-email-s.temerkhanov@gmail.com
State Accepted
Commit 3ed2ece5e162b104cd3ea3788cae841ecd24408f
Delegated to: Tom Rini
Headers show

Commit Message

Sergey Temerkhanov Sept. 7, 2015, 3:18 p.m. UTC
Change the dram_init() function on ThunderX to query ATF services for
the real installed DRAM size

Signed-off-by: Sergey Temerkhanov <s.temerkhanov@gmail.com>
Signed-off-by: Radha Mohan Chintakuntla <rchintakuntla@cavium.com>
DRAM fix

---

Changes in v5:
- Moved dram_init() from a separate file to thunderx.c

Changes in v4: None
Changes in v3: None
Changes in v2: None

 board/cavium/thunderx/thunderx.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)
diff mbox

Patch

diff --git a/board/cavium/thunderx/thunderx.c b/board/cavium/thunderx/thunderx.c
index ea6ae80..89cf2c6 100644
--- a/board/cavium/thunderx/thunderx.c
+++ b/board/cavium/thunderx/thunderx.c
@@ -9,6 +9,8 @@ 
 #include <errno.h>
 #include <linux/compiler.h>
 
+#include <cavium/atf.h>
+
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
 #include <dm/platdata.h>
 #include <dm/platform_data/serial_pl01x.h>
@@ -50,6 +52,31 @@  int timer_init(void)
 	return 0;
 }
 
+int dram_init(void)
+{
+	ssize_t node_count = atf_node_count();
+	ssize_t dram_size;
+	int node;
+
+	printf("Initializing\nNodes in system: %zd\n", node_count);
+
+	gd->ram_size = 0;
+
+	for (node = 0; node < node_count; node++) {
+		dram_size = atf_dram_size(node);
+		printf("Node %d: %zd MBytes of DRAM\n", node, dram_size >> 20);
+		gd->ram_size += dram_size;
+	}
+
+	gd->ram_size -= MEM_BASE;
+
+	*(unsigned long *)CPU_RELEASE_ADDR = 0;
+
+	puts("DRAM size:");
+
+	return 0;
+}
+
 /*
  * Board specific reset that is system reset.
  */