All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Humphreys <j-humphreys@ti.com>
To: Nishanth Menon <nm@ti.com>, Tom Rini <trini@konsulko.com>
Cc: Kamlesh Gurudasani <kamlesh@ti.com>,
	Sinthu Raja <sinthu.raja@ti.com>,
	Neha Malcom Francis <n-francis@ti.com>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Roger Quadros <rogerq@kernel.org>, Simon Glass <sjg@chromium.org>,
	Andrew Davis <afd@ti.com>,
	Mattijs Korpershoek <mkorpershoek@baylibre.com>,
	Nikhil M Jain <n-jain1@ti.com>,
	"Manorit Chawdhry" <m-chawdhry@ti.com>,
	Bryan Brattlof <bb@ti.com>,
	Robert Nelson <robertcnelson@gmail.com>, <u-boot@lists.denx.de>,
	Nishanth Menon <nm@ti.com>
Subject: Re: [PATCH V2 01/10] board: ti: common: Introduce a common fdt ops library
Date: Fri, 12 Jan 2024 15:13:08 -0600	[thread overview]
Message-ID: <86edemdzmj.fsf@udb0321960.dhcp.ti.com> (raw)
In-Reply-To: <20240109191506.3820908-2-nm@ti.com>

Nishanth Menon <nm@ti.com> writes:

> 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@ti.com>
> ---
> Changes Since v1:
> * s/TI_EVM_FDT_FOLDER_PATH/TI_FDT_FOLDER_PATH s/name_fdt/board_name
>   s/TI_NAME_FDT_MAX/TI_BOARD_NAME_MAX
> * Comment updates in various places for review clarification.
> * Still maintain the fall back using CONFIG_DEFAULT_DEVICE_TREE for
>   reasons explained in review comment response.
> * Added a specific u-boot version number for deprecation of legacy
>   env variables.
>
> V1: https://lore.kernel.org/r/20240108173301.2692332-2-nm@ti.com
>
>  board/ti/common/Kconfig   | 12 ++++++++
>  board/ti/common/Makefile  |  1 +
>  board/ti/common/fdt_ops.c | 64 +++++++++++++++++++++++++++++++++++++++
>  board/ti/common/fdt_ops.h | 42 +++++++++++++++++++++++++
>  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..de44e4de2115 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_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..eb917be9e0da
> --- /dev/null
> +++ b/board/ti/common/fdt_ops.c
> @@ -0,0 +1,64 @@
> +// 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 *board_name, struct ti_fdt_map *fdt_map)
> +{
> +	char *fdt_file_name = NULL;
> +	char fdtfile[TI_FDT_FILE_MAX];
> +
> +	if (board_name) {
> +		while (fdt_map) {
> +			/* Check for NULL terminator in the list */
> +			if (!fdt_map->board_name)
> +				break;
> +			if (!strncmp(fdt_map->board_name, board_name, TI_BOARD_NAME_MAX)) {
> +				fdt_file_name = fdt_map->fdt_file_name;
> +				break;
> +			}
> +			fdt_map++;
> +		}
> +	}
> +
> +	/* match not found OR null board_name */
> +	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_FDT_FOLDER_PATH, CONFIG_DEFAULT_FDT_FILE);
> +		} else
> +#endif
> +		{
> +			snprintf(fdtfile, sizeof(fdtfile), "%s/%s.dtb",
> +				 CONFIG_TI_FDT_FOLDER_PATH, CONFIG_DEFAULT_DEVICE_TREE);
> +		}
> +	} else {
> +		snprintf(fdtfile, sizeof(fdtfile), "%s/%s", CONFIG_TI_FDT_FOLDER_PATH,
> +			 fdt_file_name);
> +	}
> +
> +	env_set("fdtfile", fdtfile);
> +
> +	/*
> +	 * XXX: DEPRECATION WARNING: 2 u-boot versions (2024.10).
> +	 *
> +	 * Maintain compatibility with downstream scripts that may be using
> +	 * name_fdt
> +	 */
> +	if (board_name)
> +		env_set("name_fdt", fdtfile);
> +	/* Also set the findfdt legacy script to warn users to stop using this */
> +	env_set("findfdt",
> +		"echo WARN: fdtfile already set. Stop using findfdt in script");
> +}
> diff --git a/board/ti/common/fdt_ops.h b/board/ti/common/fdt_ops.h
> new file mode 100644
> index 000000000000..5d304994fb6e
> --- /dev/null
> +++ b/board/ti/common/fdt_ops.h
> @@ -0,0 +1,42 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Library to support common device tree manipulation for TI EVMs
> + *
> + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com
> + */
> +
> +#ifndef __FDT_OPS_H
> +#define __FDT_OPS_H
> +
> +#define TI_BOARD_NAME_MAX 20
> +#define TI_FDT_FILE_MAX 200
> +
> +/**
> + *  struct ti_fdt_map - mapping of device tree blob name to board name
> + *  @board_name: board_name up to TI_BOARD_NAME_MAX long
> + *  @fdt_file_name: device tree blob name as described by kernel
> + */
> +struct ti_fdt_map {
> +	const char *board_name;
> +	char *fdt_file_name;
> +};
> +
> +/**
> + * ti_set_fdt_env  - Find the correct device tree file name based on the
> + * board name and set 'fdtfile' env variable with correct folder
> + * structure appropriate to the architecture and Linux kernel's
> + * 'make install_dtbs' conventions. This function is invoked typically
> + * as part of board_late_init.
> + *
> + * fdt name is picked by:
> + * a) If a board name match is found, use the match
> + * b) If not, CONFIG_DEFAULT_FDT_FILE (Boot OS device tree) if that is defined
> + *    and not null
> + * c) If not, Use CONFIG_DEFAULT_DEVICE_TREE (DT control for bootloader)
> + *
> + * @board_name: match to search with (max of TI_BOARD_NAME_MAX chars)
> + * @fdt_map: NULL terminated array of device tree file name matches.
> + */
> +void ti_set_fdt_env(const char *board_name, struct ti_fdt_map *fdt_map);
> +
> +#endif /* __FDT_OPS_H */
> -- 
> 2.43.0

Reviewed-by: Jonathan Humphreys <j-humphreys@ti.com>

  reply	other threads:[~2024-01-12 21:26 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-09 19:14 [PATCH V2 00/10] board/ti: k3 boards: Stop using findfdt Nishanth Menon
2024-01-09 19:14 ` [PATCH V2 01/10] board: ti: common: Introduce a common fdt ops library Nishanth Menon
2024-01-12 21:13   ` Jon Humphreys [this message]
2024-01-09 19:14 ` [PATCH V2 02/10] board: ti: am62ax: Set fdtfile from C code instead of findfdt script Nishanth Menon
2024-01-12 21:13   ` Jon Humphreys
2024-01-09 19:14 ` [PATCH V2 03/10] board: ti: am62x: " Nishanth Menon
2024-01-12 21:14   ` Jon Humphreys
2024-01-09 19:14 ` [PATCH V2 04/10] board: ti: am64x: " Nishanth Menon
2024-01-12 21:14   ` Jon Humphreys
2024-01-09 19:15 ` [PATCH V2 05/10] board: ti: am65x: " Nishanth Menon
2024-01-12 21:14   ` Jon Humphreys
2024-01-09 19:15 ` [PATCH V2 06/10] board: ti: j721e: " Nishanth Menon
2024-01-12 21:14   ` Jon Humphreys
2024-01-09 19:15 ` [PATCH V2 07/10] board: ti: j721s2: " Nishanth Menon
2024-01-12 21:15   ` Jon Humphreys
2024-01-09 19:15 ` [PATCH V2 08/10] board: beagle: beagleboneai64: " Nishanth Menon
2024-01-12 21:15   ` Jon Humphreys
2024-01-09 19:15 ` [PATCH V2 09/10] board: beagle: beagleplay: " Nishanth Menon
2024-01-12 21:15   ` Jon Humphreys
2024-01-09 19:15 ` [PATCH V2 10/10] include: env: ti: Drop default_findfdt Nishanth Menon
2024-01-10 17:31   ` Roger Quadros
2024-01-10 18:34     ` Nishanth Menon
2024-01-12 21:15   ` Jon Humphreys
2024-01-11 10:17 ` [PATCH V2 00/10] board/ti: k3 boards: Stop using findfdt Roger Quadros
2024-01-20 16:36 ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86edemdzmj.fsf@udb0321960.dhcp.ti.com \
    --to=j-humphreys@ti.com \
    --cc=afd@ti.com \
    --cc=bb@ti.com \
    --cc=kamlesh@ti.com \
    --cc=m-chawdhry@ti.com \
    --cc=mkorpershoek@baylibre.com \
    --cc=n-francis@ti.com \
    --cc=n-jain1@ti.com \
    --cc=nm@ti.com \
    --cc=robertcnelson@gmail.com \
    --cc=rogerq@kernel.org \
    --cc=sinthu.raja@ti.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.