rockchip: ARM64: puma-rk3399: get DRAM size from DMC init
authorPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Fri, 28 Apr 2017 15:31:44 +0000 (17:31 +0200)
committerSimon Glass <sjg@chromium.org>
Wed, 10 May 2017 19:37:21 +0000 (13:37 -0600)
With the RK3399 DRAM controller (DMC) driver providing all the
infrastructure, retrieve the DRAM size from the DMC init in the
board-specific code (instead of hard-coding) for the RK3399-Q7 (Puma).

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
board/theobroma-systems/puma_rk3399/puma-rk3399.c

index fb4d31e01d546501a35f5aac9f8fe1b96609f431..0a8861a3b3e8db049ba5b77afd27eec59824befd 100644 (file)
@@ -5,10 +5,18 @@
  */
 #include <common.h>
 #include <dm.h>
+#include <misc.h>
+#include <ram.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
 #include <asm/arch/periph.h>
 #include <power/regulator.h>
+#include <u-boot/sha256.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define RK3399_CPUID_OFF  0x7
+#define RK3399_CPUID_LEN  0x10
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -57,7 +65,23 @@ out:
 
 int dram_init(void)
 {
-       gd->ram_size = 0x80000000;
+       struct ram_info ram;
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device(UCLASS_RAM, 0, &dev);
+       if (ret) {
+               debug("DRAM init failed: %d\n", ret);
+               return ret;
+       }
+       ret = ram_get_info(dev, &ram);
+       if (ret) {
+               debug("Cannot get DRAM size: %d\n", ret);
+               return ret;
+       }
+       debug("SDRAM base=%llx, size=%x\n", ram.base, (unsigned int)ram.size);
+       gd->ram_size = ram.size;
+
        return 0;
 }