[PATCH] xilinx: common: Add support for partial string match in board_fit_config_name_match()
Michal Simek
michal.simek at amd.com
Wed Jan 18 12:17:12 CET 2023
On 1/6/23 09:38, Michal Simek wrote:
> Board name in FIT image can use U-Boot regular expressions SLRE to instruct
> U-Boot to handle all revisions for certain board.
> For example when name (description property) is saying "zynqmp-zcu104-revA"
> only description with this name is selected.
> When zynqmp-zcu104.* is described then all board revisions will be handled
> by this fragment.
> Xilinx normally have some board revisions which are SW compatible to each
> other. That's why make sense to define board name with revisions first
> follow by generic description with '.*' at the end like this:
>
> config_1 {
> description = "zynqmp-zcu104-rev[AB]";
> fdt = "zynqmp-zcu104-revA";
> };
> config_2 {
> description = "zynqmp-zcu104.*";
> fdt = "zynqmp-zcu104-revC";
> };
>
> Signed-off-by: Michal Simek <michal.simek at amd.com>
> ---
>
> board/xilinx/common/board.c | 22 ++++++++++++++++++++--
> 1 file changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
> index 59d87f235202..823d703ea93c 100644
> --- a/board/xilinx/common/board.c
> +++ b/board/xilinx/common/board.c
> @@ -1,7 +1,9 @@
> // SPDX-License-Identifier: GPL-2.0+
> /*
> - * (C) Copyright 2014 - 2020 Xilinx, Inc.
> - * Michal Simek <michal.simek at xilinx.com>
> + * (C) Copyright 2014 - 2022, Xilinx, Inc.
> + * (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
> + *
> + * Michal Simek <michal.simek at amd.com>
> */
>
> #include <common.h>
> @@ -22,6 +24,7 @@
> #include <i2c_eeprom.h>
> #include <net.h>
> #include <generated/dt.h>
> +#include <slre.h>
> #include <soc.h>
> #include <linux/ctype.h>
> #include <linux/kernel.h>
> @@ -468,6 +471,21 @@ int __maybe_unused board_fit_config_name_match(const char *name)
> {
> debug("%s: Check %s, default %s\n", __func__, name, board_name);
>
> +#if !defined(CONFIG_SPL_BUILD)
> + if (CONFIG_IS_ENABLED(REGEX)) {
> + struct slre slre;
> + int ret;
> +
> + ret = slre_compile(&slre, name);
> + if (ret) {
> + ret = slre_match(&slre, board_name, strlen(board_name),
> + NULL);
> + debug("%s: name match ret = %d\n", __func__, ret);
> + return !ret;
> + }
> + }
> +#endif
> +
> if (!strcmp(name, board_name))
> return 0;
>
Applied.
M
More information about the U-Boot
mailing list