riscv: ae250: Support DT provided by the board at runtime
PATCH 1/1 riscv: ae250: Support DT provided by the board at runtime
From: Rick Chen <[email protected]>
Enable CONFIG_OF_BOAD to support delivery dtb to u-boot at run time instead of embedded.
There are two methods to delivery dtb.
1 Pass from loader:
When u-boot boot from RAM, gdb or loader can pass dtb via a2 to u-boot dynamically. Of course gdb or loader shall be in charge of dtb delivery.
2 Configure CONFIG_SYS_FDT_BASE:
It can be configured as RAM or ROM base statically, no mater u-boot boot from RAM or ROM.
If it was configured as ROM base, dtb can be burned into ROM(spi flash) by spi driver.
Meanwhile remove CONFIG_SKIP_LOWLEVEL_INIT which is useless in nx25-ae250 configuration.
Signed-off-by Rick Chen <[email protected]>
Signed-off-by Rick Chen <[email protected]>
Cc Greentime Hu <[email protected]>
--- arch/riscv/cpu/nx25/start.S | 2 ++ board/AndesTech/nx25-ae250/nx25-ae250.c | 9 +++++++++ configs/nx25-ae250_defconfig | 1 + include/configs/nx25-ae250.h | 12 +++--------- 4 files changed, 15 insertions(+), 9 deletions(-)
arch/riscv/cpu/nx25/start.S +2 -0
@@ -45,6 +45,8 @@ trap_vector: .global trap_entry handle_reset: + li t0, CONFIG_SYS_SDRAM_BASE + SREG a2, 0(t0) la t0, trap_entry csrw mtvec, t0 csrwi mstatus, 0
board/AndesTech/nx25-ae250/nx25-ae250.c +9 -0
@@ -64,3 +64,12 @@ ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info) {return 0 ; } + +void *board_fdt_blob_setup (void ) +{ +void **ptr = (void *)CONFIG_SYS_SDRAM_BASE ; +if (fdt_magic (*ptr) ==FDT_MAGIC ) +return (void *)*ptr; + +return (void *)CONFIG_SYS_FDT_BASE ; +}
configs/nx25-ae250_defconfig +1 -0
@@ -16,6 +16,7 @@ CONFIG_CMD_CACHE=y CONFIG_CMD_EXT2=y CONFIG_CMD_FAT=y CONFIG_OF_CONTROL=y +CONFIG_OF_BOARD=y CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_NET_RANDOM_ETHADDR=y CONFIG_DM=y
include/configs/nx25-ae250.h +3 -9
@@ -11,18 +11,9 @@/* * CPU and Board Configuration Options */ -#define CONFIG_SKIP_LOWLEVEL_INIT -#define CONFIG_BOOTP_SEND_HOSTNAME #define CONFIG_BOOTP_SERVERIP -#ifdef CONFIG_SKIP_LOWLEVEL_INIT -#ifdef CONFIG_OF_CONTROL -#undef CONFIG_OF_SEPARATE -#define CONFIG_OF_EMBED -#endif -#endif -/* * Miscellaneous configurable options */
@@ -50,6 +41,9 @@*/ #define CONFIG_SYS_MALLOC_LEN (512 << 10) +/* DT blob (fdt) address */ +#define CONFIG_SYS_FDT_BASE 0x000f0000 +/* * Physical Memory Map */
Signature · 1 line
2.7.4