[PATCH] arm64: versal: RO multi_boot register in non JTAG bootmode
Michal Simek
michal.simek at amd.com
Tue Jan 14 08:29:10 CET 2025
On 1/6/25 10:20, Michal Simek wrote:
> The main reason for this change is that upstream QEMU has no multiboot
> register implemented that's why access to it fails which ends up in CI
> failure for our target.
> That's why in JTAG bootmode returns 0 which is correct behaviour because
> multiboot register is not used in this mode and value should be ignored and
> as a side effect it is also fixing CI/Qemu issue.
>
> Also move versal_get_bootmode() to avoid function declaration.
>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
>
> board/xilinx/versal/board.c | 36 +++++++++++++++++++++---------------
> 1 file changed, 21 insertions(+), 15 deletions(-)
>
> diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c
> index d05220f96ffd..cff810e02ad8 100644
> --- a/board/xilinx/versal/board.c
> +++ b/board/xilinx/versal/board.c
> @@ -36,8 +36,29 @@ static xilinx_desc versalpl = {
> };
> #endif
>
> +static u8 versal_get_bootmode(void)
> +{
> + u8 bootmode;
> + u32 reg = 0;
> +
> + reg = readl(&crp_base->boot_mode_usr);
> +
> + if (reg >> BOOT_MODE_ALT_SHIFT)
> + reg >>= BOOT_MODE_ALT_SHIFT;
> +
> + bootmode = reg & BOOT_MODES_MASK;
> +
> + return bootmode;
> +}
> +
> static u32 versal_multi_boot(void)
> {
> + u8 bootmode = versal_get_bootmode();
> +
> + /* Mostly workaround for QEMU CI pipeline */
> + if (bootmode == JTAG_MODE)
> + return 0;
> +
> return readl(0xF1110004);
> }
>
> @@ -120,21 +141,6 @@ unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc,
> return ret;
> }
>
> -static u8 versal_get_bootmode(void)
> -{
> - u8 bootmode;
> - u32 reg = 0;
> -
> - reg = readl(&crp_base->boot_mode_usr);
> -
> - if (reg >> BOOT_MODE_ALT_SHIFT)
> - reg >>= BOOT_MODE_ALT_SHIFT;
> -
> - bootmode = reg & BOOT_MODES_MASK;
> -
> - return bootmode;
> -}
> -
> static int boot_targets_setup(void)
> {
> u8 bootmode;
Applied.
M
More information about the U-Boot
mailing list