[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