Browse Source

rockchip: rk3399: use actual dram size

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>
Kever Yang 8 years ago
parent
commit
76e1693b9b

+ 4 - 4
arch/arm/mach-rockchip/rk3399/sdram_rk3399.c

@@ -1280,6 +1280,8 @@ static int rk3399_dmc_probe(struct udevice *dev)
 
 
 	priv->pmugrf = syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
 	priv->pmugrf = syscon_get_first_range(ROCKCHIP_SYSCON_PMUGRF);
 	debug("%s: pmugrf=%p\n", __func__, priv->pmugrf);
 	debug("%s: pmugrf=%p\n", __func__, priv->pmugrf);
+	priv->info.base = 0;
+	priv->info.size = sdram_size_mb(priv) << 20;
 #endif
 #endif
 	return 0;
 	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);
 	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;
 	return 0;
 }
 }
@@ -1314,8 +1314,8 @@ U_BOOT_DRIVER(dmc_rk3399) = {
 	.ofdata_to_platdata = rk3399_dmc_ofdata_to_platdata,
 	.ofdata_to_platdata = rk3399_dmc_ofdata_to_platdata,
 #endif
 #endif
 	.probe = rk3399_dmc_probe,
 	.probe = rk3399_dmc_probe,
-#ifdef CONFIG_SPL_BUILD
 	.priv_auto_alloc_size = sizeof(struct dram_info),
 	.priv_auto_alloc_size = sizeof(struct dram_info),
+#ifdef CONFIG_SPL_BUILD
 	.platdata_auto_alloc_size = sizeof(struct rockchip_dmc_plat),
 	.platdata_auto_alloc_size = sizeof(struct rockchip_dmc_plat),
 #endif
 #endif
 };
 };

+ 18 - 1
board/rockchip/evb_rk3399/evb-rk3399.c

@@ -5,6 +5,7 @@
  */
  */
 #include <common.h>
 #include <common.h>
 #include <dm.h>
 #include <dm.h>
+#include <ram.h>
 #include <dm/pinctrl.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
 #include <dm/uclass-internal.h>
 #include <asm/arch/periph.h>
 #include <asm/arch/periph.h>
@@ -62,7 +63,23 @@ out:
 
 
 int dram_init(void)
 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;
 	return 0;
 }
 }