Hi Ramon, > Instead of relaying on user to configure MEMORY_BANKS_MAX > correctly, use VLA (variable length array) to accommodate the > required banks. > > Fixes: 2a1f4f1758b5 ("Revert "fdt_support: Use CONFIG_NR_DRAM_BANKS if > defined"") > > Signed-off-by: Ramon Fried <ramon.fr...@gmail.com> > --- > Resending same patch but with the right email address > common/fdt_support.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/common/fdt_support.c b/common/fdt_support.c > index 34d2bd59c4..e8982367a0 100644 > --- a/common/fdt_support.c > +++ b/common/fdt_support.c > @@ -409,19 +409,14 @@ static int fdt_pack_reg(const void *fdt, void > *buf, u64 *address, u64 *size, return p - (char *)buf; > } > > -#define MEMORY_BANKS_MAX 4 > int fdt_fixup_memory_banks(void *blob, u64 start[], u64 size[], int > banks) { > int err, nodeoffset; > int len, i; > - u8 tmp[MEMORY_BANKS_MAX * 16]; /* Up to 64-bit address + > 64-bit size */ > + u8 tmp[banks * 16]; /* Up to 64-bit address + 64-bit size */
Why cannot we read the RAM size from "memory" DTS property? SDRAM is continuous - there are no "holes" in it. The memory banks and their sizes are going to be replaced by DTS "memory" description anyway. > > - if (banks > MEMORY_BANKS_MAX) { > - printf("%s: num banks %d exceeds hardcoded limit %d." > - " Recompile with higher MEMORY_BANKS_MAX?\n", > - __FUNCTION__, banks, MEMORY_BANKS_MAX); > + if (!banks) > return -1; > - } > > err = fdt_check_header(blob); > if (err < 0) { Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
pgp9PmbfI8K9e.pgp
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot