cmd: fdt: skip board specific fixup using env variable

Sometimes it is useful to boot OS with already fixed-up
device tree. Check for env variable 'skip_board_fixup'
before calling ft_board_setup().
Current behaviour is unchanged, additionally user can
set skip_board_fixup to 1 to skip the fixup.

Signed-off-by: Wasim Khan <wasim.khan@nxp.com>
This commit is contained in:
Wasim Khan 2021-02-04 15:44:04 +01:00 committed by Tom Rini
parent 220fa478fb
commit 402558b1fe
2 changed files with 18 additions and 5 deletions

View File

@ -576,11 +576,18 @@ int image_setup_libfdt(bootm_headers_t *images, void *blob,
fdt_fixup_pstore(blob);
#endif
if (IMAGE_OF_BOARD_SETUP) {
fdt_ret = ft_board_setup(blob, gd->bd);
if (fdt_ret) {
printf("ERROR: board-specific fdt fixup failed: %s\n",
fdt_strerror(fdt_ret));
goto err;
const char *skip_board_fixup;
skip_board_fixup = env_get("skip_board_fixup");
if (skip_board_fixup && ((int)simple_strtol(skip_board_fixup, NULL, 10) == 1)) {
printf("skip board fdt fixup\n");
} else {
fdt_ret = ft_board_setup(blob, gd->bd);
if (fdt_ret) {
printf("ERROR: board-specific fdt fixup failed: %s\n",
fdt_strerror(fdt_ret));
goto err;
}
}
}
if (IMAGE_OF_SYSTEM_SETUP) {

View File

@ -2383,6 +2383,12 @@ sub u_boot_line {
"fdt or initrd relocation disabled at boot time\n" . $herecurr);
}
# make sure 'skip_board_fixup' is not
if ($rawline =~ /.*skip_board_fixup.*/) {
ERROR("SKIP_BOARD_FIXUP",
"Avoid setting skip_board_fixup env variable\n" . $herecurr);
}
# Do not use CONFIG_ prefix in CONFIG_IS_ENABLED() calls
if ($line =~ /^\+.*CONFIG_IS_ENABLED\(CONFIG_\w*\).*/) {
ERROR("CONFIG_IS_ENABLED_CONFIG",