fdt_support.c: Allow late kernel cmdline modification

By declaring board-specific board_fdt_chosen_bootargs() the kernel
command line arguments can be adjusted before injecting to flat dt
chosen node.

Signed-off-by: Niko Mauno <niko.mauno@vaisala.com>
This commit is contained in:
Niko Mauno 2021-02-22 19:18:51 +00:00 committed by Tom Rini
parent 653cd92d66
commit f0b21ebd41
2 changed files with 21 additions and 1 deletions

View File

@ -269,6 +269,15 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end)
return 0;
}
/**
* board_fdt_chosen_bootargs - boards may override this function to use
* alternative kernel command line arguments
*/
__weak char *board_fdt_chosen_bootargs(void)
{
return env_get("bootargs");
}
int fdt_chosen(void *fdt)
{
int nodeoffset;
@ -286,7 +295,8 @@ int fdt_chosen(void *fdt)
if (nodeoffset < 0)
return nodeoffset;
str = env_get("bootargs");
str = board_fdt_chosen_bootargs();
if (str) {
err = fdt_setprop(fdt, nodeoffset, "bootargs", str,
strlen(str) + 1);

View File

@ -185,6 +185,16 @@ int fdt_find_or_add_subnode(void *fdt, int parentoffset, const char *name);
*/
int ft_board_setup(void *blob, struct bd_info *bd);
/**
* board_fdt_chosen_bootargs() - Arbitrarily amend fdt kernel command line
*
* This is used for late modification of kernel command line arguments just
* before they are added into the /chosen node in flat device tree.
*
* @return: pointer to kernel command line arguments in memory
*/
char *board_fdt_chosen_bootargs(void);
/*
* The keystone2 SOC requires all 32 bit aliased addresses to be converted
* to their 36 physical format. This has to happen after all fdt nodes