arm64: mvebu: Replace board specific with generic memory bank decoding
Subsystems (3)
PATCH 1/1 arm64: mvebu: Replace board specific with generic memory bank decoding
The dram_init and dram_init_banksize functions were using a board specific implementation for decoding the memory banks from the fdt. This change makes the dram_init* functions use a generic implementation of decoding and populating memory bank and size data.
Signed-off-by Stefan Roese <[email protected]>
Cc Nathan Rossi <[email protected]>
Cc Nadav Haklai <[email protected]>
Cc Kostya Porotchkin <[email protected]>
--- arch/arm/mach-mvebu/arm64-common.c | 66 +++----------------------------------- 1 file changed, 4 insertions(+), 62 deletions(-)
arch/arm/mach-mvebu/arm64-common.c +4 -62
@@ -45,76 +45,18 @@ const struct mbus_dram_target_info *mvebu_mbus_dram_info(void)/* DRAM init code ... */ -static const void *get_memory_reg_prop (const void *fdt,int *lenp) +int dram_init_banksize (void ) { -int offset; - - offset =fdt_path_offset (fdt,"/memory" ); -if (offset <0 ) -return NULL ; +fdtdec_setup_memory_banksize (); -return fdt_getprop (fdt, offset,"reg" , lenp); +return 0 ; }int dram_init (void ) { -const void *fdt = gd->fdt_blob; -const fdt32_t *val; -int ac, sc, len; - - ac =fdt_address_cells (fdt,0 ); - sc =fdt_size_cells (fdt,0 ); -if (ac <0 || sc <1 || sc >2 ) { -printf ("invalid address/size cells\n" ); -return -EINVAL ; - } - - val =get_memory_reg_prop (fdt, &len); -if (len /sizeof (*val) < ac + sc) +if (fdtdec_setup_memory_size () !=0 )return -EINVAL ; - val += ac; - - gd->ram_size =fdtdec_get_number (val, sc); - -debug ("DRAM size = %08lx\n" , (unsigned long )gd->ram_size); - -return 0 ; -} - -int dram_init_banksize (void ) -{ -const void *fdt = gd->fdt_blob; -const fdt32_t *val; -int ac, sc, cells, len, i; - - val =get_memory_reg_prop (fdt, &len); -if (len <0 ) -return -ENXIO ; - - ac =fdt_address_cells (fdt,0 ); - sc =fdt_size_cells (fdt,0 ); -if (ac <1 || ac >2 || sc <1 || sc >2 ) { -printf ("invalid address/size cells\n" ); -return -ENXIO ; - } - - cells = ac + sc; - - len /=sizeof (*val); - -for (i =0 ; i <CONFIG_NR_DRAM_BANKS && len >= cells; - i++, len -= cells) { - gd->bd->bi_dram[i].start =fdtdec_get_number (val, ac); - val += ac; - gd->bd->bi_dram[i].size =fdtdec_get_number (val, sc); - val += sc; - -debug ("DRAM bank %d: start = %08lx, size = %08lx\n" , - i, (unsigned long )gd->bd->bi_dram[i].start, - (unsigned long )gd->bd->bi_dram[i].size); - } -return 0 ; }
Signature · 1 line
2.12.2
PATCH 1/1 arm64: mvebu: Replace board specific with generic memory bank decoding
Quoted 9 lines · Stefan Roese
The
dram_initanddram_init_banksizefunctions were using a board specific implementation for decoding the memory banks from the fdt. This change makes the dram_init* functions use a generic implementation of decoding and populating memory bank and size data.Signed-off-by Stefan Roese <[email protected]>Cc Nathan Rossi <[email protected]>Cc Nadav Haklai <[email protected]>Cc Kostya Porotchkin <[email protected]>
Applied to u-boot-marvell/master.
Thanks,
Stefan