riscv: ae250: Support DT provided by the board at runtime
authorRick Chen <rick@andestech.com>
Thu, 29 Mar 2018 02:08:33 +0000 (10:08 +0800)
committerAndes <uboot@andestech.com>
Fri, 30 Mar 2018 05:13:56 +0000 (13:13 +0800)
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 <rick@andestech.com>
Signed-off-by: Rick Chen <rickchen36@gmail.com>
Cc: Greentime Hu <green.hu@gmail.com>
arch/riscv/cpu/nx25/start.S
board/AndesTech/nx25-ae250/nx25-ae250.c
configs/nx25-ae250_defconfig
include/configs/nx25-ae250.h

index 6a076639d34191f9f423a66062c64b78c5551842..cd0a66360de3da6800036e38619abbd5ff81e99c 100644 (file)
@@ -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
index a965218f34528ab966a8a79e448838bf44078d9f..6e31be35052328fe8861679d9bc44639795b99c5 100644 (file)
@@ -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;
+}
index eb41d71357ca79d461e8597eb3cfa28f337963db..4f9bd58f75568341970fbdfff7c542e346d433b7 100644 (file)
@@ -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
index 3c888fdd50d0cb3c45f8675e84d9f5079f7e2581..0e4c431cabf7cb88b5c22d152521b35db5c2418f 100644 (file)
 /*
  * 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
  */