[PATCH] board: xilinx: Add support for user configurable boot script offset

Michal Simek monstr at monstr.eu
Thu Jan 16 08:31:16 CET 2020


st 18. 12. 2019 v 11:54 odesílatel Michal Simek
<michal.simek at xilinx.com> napsal:
>
> From: T Karthik Reddy <t.karthik.reddy at xilinx.com>
>
> Currently "script_offset_f" env variable is hardcoded, this variable
> specifies from which offset of the flash boot.scr should be read/write.
> As flashes are of different sizes having a fixed offset makes it
> difficult to load other images into the flash which may overwrite the
> boot script or cannot utilize the full memory. This current fix
> creates a new config "CONFIG_BOOT_SCRIPT_OFFSET" which holds the
> offset address, overwrites the "script_offset_f" variable.
> Also removed existing variable with default values, as the default
> values are held by CONFIG_BOOT_SCRIPT_OFFSET
>
> Signed-off-by: T Karthik Reddy <t.karthik.reddy at xilinx.com>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
>  board/xilinx/Kconfig            | 9 +++++++++
>  board/xilinx/versal/board.c     | 2 ++
>  board/xilinx/zynq/board.c       | 2 ++
>  board/xilinx/zynqmp/zynqmp.c    | 2 ++
>  include/configs/xilinx_versal.h | 1 -
>  include/configs/xilinx_zynqmp.h | 1 -
>  include/configs/zynq-common.h   | 1 -
>  7 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/board/xilinx/Kconfig b/board/xilinx/Kconfig
> index cb272eafda7a..7833b11767c4 100644
> --- a/board/xilinx/Kconfig
> +++ b/board/xilinx/Kconfig
> @@ -47,3 +47,12 @@ config XILINX_OF_BOARD_DTB_ADDR
>         depends on OF_BOARD
>         help
>           Offset in the memory where the board configuration DTB is placed.
> +
> +config BOOT_SCRIPT_OFFSET
> +       hex "Boot script offset"
> +       depends on ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL
> +       default 0xFC0000 if ARCH_ZYNQ
> +       default 0x3E80000 if ARCH_ZYNQMP
> +       default 0x7F80000 if ARCH_VERSAL
> +       help
> +          Specifies distro boot script offset in NAND/NOR flash.
> diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c
> index 45724478a25e..9fa9e76e6663 100644
> --- a/board/xilinx/versal/board.c
> +++ b/board/xilinx/versal/board.c
> @@ -203,6 +203,8 @@ int board_late_init(void)
>         initrd_hi = round_down(initrd_hi, SZ_16M);
>         env_set_addr("initrd_high", (void *)initrd_hi);
>
> +       env_set_hex("script_offset_f", CONFIG_BOOT_SCRIPT_OFFSET);
> +
>         return 0;
>  }
>
> diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c
> index 8929b6c5d22d..420a5ca66311 100644
> --- a/board/xilinx/zynq/board.c
> +++ b/board/xilinx/zynq/board.c
> @@ -76,6 +76,8 @@ int board_late_init(void)
>
>         env_set("boot_targets", new_targets);
>
> +       env_set_hex("script_offset_f", CONFIG_BOOT_SCRIPT_OFFSET);
> +
>         return 0;
>  }
>
> diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
> index b72eade43eea..8bdc67748ec2 100644
> --- a/board/xilinx/zynqmp/zynqmp.c
> +++ b/board/xilinx/zynqmp/zynqmp.c
> @@ -667,6 +667,8 @@ int board_late_init(void)
>         initrd_hi = round_down(initrd_hi, SZ_16M);
>         env_set_addr("initrd_high", (void *)initrd_hi);
>
> +       env_set_hex("script_offset_f", CONFIG_BOOT_SCRIPT_OFFSET);
> +
>         reset_reason();
>
>         return 0;
> diff --git a/include/configs/xilinx_versal.h b/include/configs/xilinx_versal.h
> index f426127edcff..dec5001b5fe4 100644
> --- a/include/configs/xilinx_versal.h
> +++ b/include/configs/xilinx_versal.h
> @@ -92,7 +92,6 @@
>         "kernel_size_r=0x10000000\0" \
>         "scriptaddr=0x20000000\0" \
>         "ramdisk_addr_r=0x02100000\0" \
> -       "script_offset_f=0x7F80000\0" \
>         "script_size_f=0x80000\0"
>
>  #if defined(CONFIG_MMC_SDHCI_ZYNQ)
> diff --git a/include/configs/xilinx_zynqmp.h b/include/configs/xilinx_zynqmp.h
> index b13765e17593..010738363d13 100644
> --- a/include/configs/xilinx_zynqmp.h
> +++ b/include/configs/xilinx_zynqmp.h
> @@ -113,7 +113,6 @@
>         "kernel_addr_r=0x18000000\0" \
>         "scriptaddr=0x20000000\0" \
>         "ramdisk_addr_r=0x02100000\0" \
> -       "script_offset_f=0x3e80000\0" \
>         "script_size_f=0x80000\0" \
>
>  #if defined(CONFIG_MMC_SDHCI_ZYNQ)
> diff --git a/include/configs/zynq-common.h b/include/configs/zynq-common.h
> index 4dbd30054643..fe4679a90b2c 100644
> --- a/include/configs/zynq-common.h
> +++ b/include/configs/zynq-common.h
> @@ -203,7 +203,6 @@
>         "fdt_high=0x20000000\0"         \
>         "initrd_high=0x20000000\0"      \
>         "scriptaddr=0x20000\0"  \
> -       "script_offset_f=0xFC0000\0"    \
>         "script_size_f=0x40000\0"       \
>         "fdt_addr_r=0x1f00000\0"        \
>         "pxefile_addr_r=0x2000000\0"    \
> --
> 2.24.0
>

Applied.
M


-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs


More information about the U-Boot mailing list