rockchip: rk3399: use actual dram size
authorKever Yang <kever.yang@rock-chips.com>
Wed, 19 Apr 2017 08:01:14 +0000 (16:01 +0800)
committerSimon Glass <sjg@chromium.org>
Wed, 10 May 2017 19:37:21 +0000 (13:37 -0600)
Since our sdram driver is ready, we can use the actual size
instead of hard code.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
Acked-by: Simon Glass <sjg@chromium.org>
arch/arm/mach-rockchip/rk3399/sdram_rk3399.c
board/rockchip/evb_rk3399/evb-rk3399.c

index 749b52c8e71cf2aaea1e35e08864b2e37384f63c..536879d65b5395ebd0070fece069e02e20f72061 100644 (file)
@@ -1280,6 +1280,8 @@ static int rk3399_dmc_probe(struct udevice *dev)
 
        priv->pmugrf = syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
        debug("%s: pmugrf=%p\n", __func__, priv->pmugrf);
+       priv->info.base = 0;
+       priv->info.size = sdram_size_mb(priv) << 20;
 #endif
        return 0;
 }
@@ -1288,9 +1290,7 @@ static int rk3399_dmc_get_info(struct udevice *dev, struct ram_info *info)
 {
        struct dram_info *priv = dev_get_priv(dev);
 
-       info = &priv->info;
-       priv->info.base = 0;
-       priv->info.size = sdram_size_mb(priv) << 20;
+       *info = priv->info;
 
        return 0;
 }
@@ -1314,8 +1314,8 @@ U_BOOT_DRIVER(dmc_rk3399) = {
        .ofdata_to_platdata = rk3399_dmc_ofdata_to_platdata,
 #endif
        .probe = rk3399_dmc_probe,
-#ifdef CONFIG_SPL_BUILD
        .priv_auto_alloc_size = sizeof(struct dram_info),
+#ifdef CONFIG_SPL_BUILD
        .platdata_auto_alloc_size = sizeof(struct rockchip_dmc_plat),
 #endif
 };
index 6561c4fbd3de5d4fbb83d66d5682739c92a4fe66..e83dedbc5bc501e399584319ecffde5db2b4a686 100644 (file)
@@ -5,6 +5,7 @@
  */
 #include <common.h>
 #include <dm.h>
+#include <ram.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
 #include <asm/arch/periph.h>
@@ -62,7 +63,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;
 }