the dtb is at 0x1000 if no dtb present use C code device kepp in C the timer/gpio/uart Cc: Rob Herring <rob.herring@xxxxxxxxxxx> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@xxxxxxxxxxxx> --- arch/arm/boards/highbank/env/bin/init_board | 7 +++++ arch/arm/boards/highbank/init.c | 44 ++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 arch/arm/boards/highbank/env/bin/init_board diff --git a/arch/arm/boards/highbank/env/bin/init_board b/arch/arm/boards/highbank/env/bin/init_board new file mode 100644 index 0000000..610db15 --- /dev/null +++ b/arch/arm/boards/highbank/env/bin/init_board @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -e /dev/dtb ] +then + oftree -l /dev/dtb + oftree -p +fi diff --git a/arch/arm/boards/highbank/init.c b/arch/arm/boards/highbank/init.c index 9fb7986..a01db5b 100644 --- a/arch/arm/boards/highbank/init.c +++ b/arch/arm/boards/highbank/init.c @@ -15,20 +15,56 @@ #include <sizes.h> #include <io.h> +struct fdt_header *fdt = NULL; + static int highbank_mem_init(void) { + struct device_node *np; + u32 reg[2]; + int ret; + + /* load by the firmware at 0x1000 */ + fdt = IOMEM(0x1000); + + ret = of_unflatten_dtb(fdt); + if (ret) { + pr_warn("no dtb found at 0x1000 use default configuration\n"); + fdt = NULL; + goto not_found; + } + + np = of_find_node_by_path("/memory"); + if (!np) { + pr_warn("no memory node use default configuration\n"); + goto not_found; + } + + ret = of_property_read_u32_array(np, "reg", reg, 2); + if (ret) { + pr_warn("memory node: no reg property use default configuration\n"); + goto not_found; + } + + pr_info("highbank: dtb probed mem_size = 0x%x\n", reg[1]); + + highbank_add_ddram(reg[1]); + +not_found: //highbank_add_ddram(4089 << 20); highbank_add_ddram(SZ_1G); - return 0; } mem_initcall(highbank_mem_init); static int highbank_devices_init(void) { - highbank_register_ahci(); - highbank_register_xgmac(0); - highbank_register_xgmac(1); + if (!fdt) { + highbank_register_ahci(); + highbank_register_xgmac(0); + highbank_register_xgmac(1); + } else { + devfs_add_partition("ram1", 0x1000, SZ_64K, DEVFS_PARTITION_FIXED, "dtb"); + } armlinux_set_bootparams((void *)(0x00000100)); -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox