]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
xilinx: board: Add support to pick bootscr flash offset/size from DT
authorMichal Simek <michal.simek@amd.com>
Thu, 31 Aug 2023 07:04:28 +0000 (09:04 +0200)
committerMichal Simek <michal.simek@amd.com>
Thu, 21 Sep 2023 11:20:11 +0000 (13:20 +0200)
Location of bootscript in flash can be specified via /options/u-boot DT
node by using bootscr-flash-offset and bootscr-flash-size properties.
Values should be saved to script_offset_f and script_size_f variables.
Variables are described in doc/develop/bootstd.rst as:
script_offset_f
    SPI flash offset from which to load the U-Boot script, e.g. 0xffe000

script_size_f
    Size of the script to load, e.g. 0x2000

Both of them are used by sf_get_bootflow() in drivers/mtd/spi/sf_bootdev.c
to identify bootscript location inside flash.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/60a84405f3fefabb8b48a4e1ce84431483a729f3.1693465465.git.michal.simek@amd.com
board/xilinx/common/board.c

index 720dcd040f07daa7da968a6f96fb963102356202..9309b071269fc6ab252668b7047d0207ec6a0e5e 100644 (file)
@@ -411,6 +411,7 @@ int board_late_init_xilinx(void)
        int i, id, macid = 0;
        struct xilinx_board_description *desc;
        phys_size_t bootm_size = gd->ram_top - gd->ram_base;
+       u64 bootscr_flash_offset, bootscr_flash_size;
 
        if (!IS_ENABLED(CONFIG_MICROBLAZE)) {
                ulong scriptaddr;
@@ -435,11 +436,19 @@ int board_late_init_xilinx(void)
                }
        }
 
+       if (!ofnode_read_bootscript_flash(&bootscr_flash_offset,
+                                         &bootscr_flash_size)) {
+               ret |= env_set_hex("script_offset_f", bootscr_flash_offset);
+               ret |= env_set_hex("script_size_f", bootscr_flash_size);
+       } else {
+               debug("!!! Please define bootscr-flash-offset via DT !!!\n");
+               ret |= env_set_hex("script_offset_f",
+                                  CONFIG_BOOT_SCRIPT_OFFSET);
+       }
+
        if (IS_ENABLED(CONFIG_ARCH_ZYNQ) || IS_ENABLED(CONFIG_MICROBLAZE))
                bootm_size = min(bootm_size, (phys_size_t)(SZ_512M + SZ_256M));
 
-       ret |= env_set_hex("script_offset_f", CONFIG_BOOT_SCRIPT_OFFSET);
-
        ret |= env_set_addr("bootm_low", (void *)gd->ram_base);
        ret |= env_set_addr("bootm_size", (void *)bootm_size);