blob: eb917be9e0daf4e018361dfad14388e7e0a8fbbe [file] [log] [blame]
// 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");
}