1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 08:42:12 +02:00

bootm: vxworks: Support Linux compatible standard DTB for ARM and PPC

Enhance do_bootm_vxworks() to support Linux compatible standard DTB
for ARM and PPC, when the least significant bit of flags in VxWorks
bootargs is set. Otherwise it falls back to the existing bootm flow
which is now legacy.

Signed-off-by: Lihua Zhao <lihua.zhao@windriver.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Lihua Zhao
2019-11-15 00:21:17 -08:00
committed by Tom Rini
parent 9a94a8994a
commit 1e26f64888
3 changed files with 53 additions and 2 deletions

View File

@@ -319,8 +319,8 @@ static void do_bootvx_fdt(bootm_headers_t *images)
puts("## vxWorks terminated\n");
}
int do_bootm_vxworks(int flag, int argc, char * const argv[],
bootm_headers_t *images)
static int do_bootm_vxworks_legacy(int flag, int argc, char * const argv[],
bootm_headers_t *images)
{
if (flag != BOOTM_STATE_OS_GO)
return 0;
@@ -336,6 +336,41 @@ int do_bootm_vxworks(int flag, int argc, char * const argv[],
return 1;
}
int do_bootm_vxworks(int flag, int argc, char * const argv[],
bootm_headers_t *images)
{
char *bootargs;
int pos;
unsigned long vxflags;
bool std_dtb = false;
/* get bootargs env */
bootargs = env_get("bootargs");
if (bootargs != NULL) {
for (pos = 0; pos < strlen(bootargs); pos++) {
/* find f=0xnumber flag */
if ((bootargs[pos] == '=') && (pos >= 1) &&
(bootargs[pos - 1] == 'f')) {
vxflags = simple_strtoul(&bootargs[pos + 1],
NULL, 16);
if (vxflags & VXWORKS_SYSFLG_STD_DTB)
std_dtb = true;
}
}
}
if (std_dtb) {
if (flag & BOOTM_STATE_OS_PREP)
printf(" Using standard DTB\n");
return do_bootm_linux(flag, argc, argv, images);
} else {
if (flag & BOOTM_STATE_OS_PREP)
printf(" !!! WARNING !!! Using legacy DTB\n");
return do_bootm_vxworks_legacy(flag, argc, argv, images);
}
}
#endif
#if defined(CONFIG_CMD_ELF)