diff options
author | Tom Rini <trini@konsulko.com> | 2019-12-03 18:10:17 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-12-03 18:10:17 -0500 |
commit | 2ae43a26405498fcaaec2132db82a2487ad6747b (patch) | |
tree | baafe4b77ce234e1d67cf7d4279a782e4058f6bb /common/bootm_os.c | |
parent | 1297989804d66c8db92efbf9fa2e6cc76965a943 (diff) | |
parent | c9f417b28a2460018206b821baf38217bb1c3211 (diff) |
Merge branch '2019-12-03-master-imports'
- omapl138_lcdk fixes
- MediaTek MT8518 support
- VxWorks standard DTB support
- Assorted bug fixes
Diffstat (limited to 'common/bootm_os.c')
-rw-r--r-- | common/bootm_os.c | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/common/bootm_os.c b/common/bootm_os.c index de0709f8ba0..d89ddc32b0d 100644 --- a/common/bootm_os.c +++ b/common/bootm_os.c @@ -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) |