mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
sunxi: board: Save the chosen DT name in the SPL header
This overwrites the name loaded from the SPL image. It will be different if there was previously no name provided, or if a more accurate name was determined by the board variant selection logic. This means that the DT name in the SPL header now always matches the DT appended to U-Boot. Acked-by: Maxime Ripard <mripard@kernel.org> Reviewed-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Samuel Holland <samuel@sholland.org> Reviewed-by: Jagan Teki <jagan@amarulasolutions.com> [Andre: move function under CONFIG_SPL_LOAD_FIT guard] Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
parent
8a8b73b6d7
commit
41530cf681
1 changed files with 27 additions and 1 deletions
|
@ -903,9 +903,26 @@ int ft_board_setup(void *blob, struct bd_info *bd)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_SPL_LOAD_FIT
|
||||
|
||||
static void set_spl_dt_name(const char *name)
|
||||
{
|
||||
struct boot_file_head *spl = get_spl_header(SPL_ENV_HEADER_VERSION);
|
||||
|
||||
if (spl == INVALID_SPL_HEADER)
|
||||
return;
|
||||
|
||||
/* Promote the header version for U-Boot proper, if needed. */
|
||||
if (spl->spl_signature[3] < SPL_DT_HEADER_VERSION)
|
||||
spl->spl_signature[3] = SPL_DT_HEADER_VERSION;
|
||||
|
||||
strcpy((char *)&spl->string_pool, name);
|
||||
spl->dt_name_offset = offsetof(struct boot_file_head, string_pool);
|
||||
}
|
||||
|
||||
int board_fit_config_name_match(const char *name)
|
||||
{
|
||||
const char *best_dt_name = get_spl_dt_name();
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_DEFAULT_DEVICE_TREE
|
||||
if (best_dt_name == NULL)
|
||||
|
@ -943,6 +960,15 @@ int board_fit_config_name_match(const char *name)
|
|||
}
|
||||
#endif
|
||||
|
||||
return strcmp(name, best_dt_name);
|
||||
ret = strcmp(name, best_dt_name);
|
||||
|
||||
/*
|
||||
* If one of the FIT configurations matches the most accurate DT name,
|
||||
* update the SPL header to provide that DT name to U-Boot proper.
|
||||
*/
|
||||
if (ret == 0)
|
||||
set_spl_dt_name(best_dt_name);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue