diff options
author | Tom Rini <trini@konsulko.com> | 2017-11-30 10:39:04 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-11-30 10:39:04 -0500 |
commit | 9804d88630cdb22f5f0ace05ac05942928410fd9 (patch) | |
tree | cf2e47737a1d877c4b6cef0e880a3d8873f76399 /lib | |
parent | 55e76b3c86d132ae1ca8f36728efdadef8588740 (diff) | |
parent | ab61e175713a0400c6ece6348e8f655998cf574d (diff) | |
download | u-boot-9804d88630cdb22f5f0ace05ac05942928410fd9.tar.gz |
Merge branch 'rmobile-mx' of git://git.denx.de/u-boot-sh
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fdtdec.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/fdtdec.c b/lib/fdtdec.c index 873bcfa78c..30ec6b92b2 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -1176,21 +1176,33 @@ int fdtdec_setup_memory_size(void) #if defined(CONFIG_NR_DRAM_BANKS) int fdtdec_setup_memory_banksize(void) { - int bank, ret, mem; + int bank, ret, mem, reg = 0; struct fdt_resource res; - mem = fdt_path_offset(gd->fdt_blob, "/memory"); + mem = fdt_node_offset_by_prop_value(gd->fdt_blob, -1, "device_type", + "memory", 7); if (mem < 0) { debug("%s: Missing /memory node\n", __func__); return -EINVAL; } for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) { - ret = fdt_get_resource(gd->fdt_blob, mem, "reg", bank, &res); - if (ret == -FDT_ERR_NOTFOUND) - break; - if (ret != 0) + ret = fdt_get_resource(gd->fdt_blob, mem, "reg", reg++, &res); + if (ret == -FDT_ERR_NOTFOUND) { + reg = 0; + mem = fdt_node_offset_by_prop_value(gd->fdt_blob, mem, + "device_type", + "memory", 7); + if (mem == -FDT_ERR_NOTFOUND) + break; + + ret = fdt_get_resource(gd->fdt_blob, mem, "reg", reg++, &res); + if (ret == -FDT_ERR_NOTFOUND) + break; + } + if (ret != 0) { return -EINVAL; + } gd->bd->bi_dram[bank].start = (phys_addr_t)res.start; gd->bd->bi_dram[bank].size = |