[PATCH 01/10] board: ti: common: Introduce a common fdt ops library
Nishanth Menon
nm at ti.com
Mon Jan 8 21:02:42 CET 2024
On 12:50-20240108, Andrew Davis wrote:
> On 1/8/24 11:32 AM, Nishanth Menon wrote:
> > Introduce a common fdt operations library for basic device tree
> > operations that are common between various boards.
> >
> > The first library to introduce here is the capability to set up
> > fdtfile as a standard variable as part of board identification rather
> > than depend on scripted ifdeffery.
> >
> > Signed-off-by: Nishanth Menon <nm at ti.com>
> > ---
> > board/ti/common/Kconfig | 12 ++++++++
> > board/ti/common/Makefile | 1 +
> > board/ti/common/fdt_ops.c | 65 +++++++++++++++++++++++++++++++++++++++
> > board/ti/common/fdt_ops.h | 41 ++++++++++++++++++++++++
> > 4 files changed, 119 insertions(+)
> > create mode 100644 board/ti/common/fdt_ops.c
> > create mode 100644 board/ti/common/fdt_ops.h
> >
> > diff --git a/board/ti/common/Kconfig b/board/ti/common/Kconfig
> > index 49edd98014ab..06a8a36aa1cd 100644
> > --- a/board/ti/common/Kconfig
> > +++ b/board/ti/common/Kconfig
> > @@ -49,3 +49,15 @@ config TI_COMMON_CMD_OPTIONS
> > imply CMD_SPI
> > imply CMD_TIME
> > imply CMD_USB if USB
> > +
> > +config TI_EVM_FDT_FOLDER_PATH
> > + string "Location of Folder path where dtb is present"
> > + default "ti/davinci" if ARCH_DAVINCI
> > + default "ti/keystone" if ARCH_KEYSTONE
> > + default "ti/omap" if ARCH_OMAP2PLUS
> > + default "ti" if ARCH_K3
> > + depends on ARCH_DAVINCI || ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
> > + help
> > + Folder path for kernel device tree default.
> > + This is used along with fdtfile path to locate the kernel
> > + device tree blob.
> > diff --git a/board/ti/common/Makefile b/board/ti/common/Makefile
> > index 26bf12e2e6d5..5ac361ba7fcf 100644
> > --- a/board/ti/common/Makefile
> > +++ b/board/ti/common/Makefile
> > @@ -3,3 +3,4 @@
> > obj-${CONFIG_TI_I2C_BOARD_DETECT} += board_detect.o
> > obj-${CONFIG_CMD_EXTENSION} += cape_detect.o
> > +obj-${CONFIG_OF_LIBFDT} += fdt_ops.o
> > diff --git a/board/ti/common/fdt_ops.c b/board/ti/common/fdt_ops.c
> > new file mode 100644
> > index 000000000000..f8770cae4a54
> > --- /dev/null
> > +++ b/board/ti/common/fdt_ops.c
> > @@ -0,0 +1,65 @@
> > +// SPDX-License-Identifier: GPL-2.0-or-later
> > +/*
> > + * Library to support FDT file operations which are common
> > + *
> > + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
> > + */
> > +
> > +#include <env.h>
> > +#include <vsprintf.h>
> > +#include "fdt_ops.h"
> > +
> > +void ti_set_fdt_env(const char *name_fdt, struct ti_fdt_map *fdt_map)
> > +{
> > + char *fdt_file_name = NULL;
> > + char fdtfile[TI_FDT_FILE_MAX];
> > +
> > + if (name_fdt) {
> > + while (fdt_map) {
> > + /* Check for NULL terminator in the list */
> > + if (!fdt_map->name_fdt)
> > + break;
> > + if (!strncmp(fdt_map->name_fdt, name_fdt, TI_NAME_FDT_MAX)) {
> > + fdt_file_name = fdt_map->fdt_file_name;
> > + break;
> > + }
> > + fdt_map++;
> > + }
> > + }
> > +
> > + /* match not found OR null name_fdt */
> > + if (!fdt_file_name) {
> > + /*
> > + * Prioritize CONFIG_DEFAULT_FDT_FILE - if that is not defined,
> > + * or is empty, then use CONFIG_DEFAULT_DEVICE_TREE
> > + */
> > +#ifdef CONFIG_DEFAULT_FDT_FILE
> > + if (strlen(CONFIG_DEFAULT_FDT_FILE)) {
> > + snprintf(fdtfile, sizeof(fdtfile), "%s/%s",
> > + CONFIG_TI_EVM_FDT_FOLDER_PATH, CONFIG_DEFAULT_FDT_FILE);
> > + } else
> > +#endif
> > + {
> > + snprintf(fdtfile, sizeof(fdtfile), "%s/%s.dtb",
> > + CONFIG_TI_EVM_FDT_FOLDER_PATH,
> > + CONFIG_DEFAULT_DEVICE_TREE);
> > + }
> > + } else {
> > + snprintf(fdtfile, sizeof(fdtfile), "%s/%s", CONFIG_TI_EVM_FDT_FOLDER_PATH,
> > + fdt_file_name);
> > + }
> > +
> > + env_set("fdtfile", fdtfile);
> > +
> > + /*
> > + * XXX: DEPRECATION WARNING: 2 u-boot versions.
> > + *
> > + * Maintain compatibility with downstream scripts that may be using
> > + * name_fdt
> > + */
> > + if (name_fdt)
> > + env_set("name_fdt", name_fdt);
>
> "name_fdt" should match "fdtfile", you should have just:
>
> env_set("name_fdt", fdtfile);
>
> are you mixing this up with "board_name"?
It should have been fdtfile. Thanks for catching it.
--
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3 1A34 DDB5 849D 1736 249D
More information about the U-Boot
mailing list