summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharles.park <charles.park@hardkernel.com>2017-09-08 11:40:27 +0900
committercharles.park <charles.park@hardkernel.com>2017-09-08 11:40:27 +0900
commit5d2e57e6ef84dea50bf4638d777c16c834150dab (patch)
treeff2f5dc69d1ac04c945110a07506a1fab73a6f9c
parentd0752a92925576c848e17ff5f7b8b9d49e731af8 (diff)
downloadu-boot-odroid-c1-5d2e57e6ef84dea50bf4638d777c16c834150dab.tar.gz
ODROID-XU4 : serach logic add for boot.ini file.
boot.ini file serach sequence. fatload mmc 0:1 / -> ext4load mmc 0:1 / -> ext4load mmc 0:1 /boot/ -> ext4load mmc 0:2 / -> ext4load mmc 0:2 /boot/
-rwxr-xr-x[-rw-r--r--]cmd/cfgload.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/cmd/cfgload.c b/cmd/cfgload.c
index 6f5aa22f9b..dae4f6f10b 100644..100755
--- a/cmd/cfgload.c
+++ b/cmd/cfgload.c
@@ -47,18 +47,33 @@ static int valid_command(const char* p)
*/
static char* read_cfgload(void)
{
- char cmd[128];
+ char msg[128] = { 0, };
unsigned long filesize;
char *p;
p = (char *)simple_strtoul(getenv("loadaddr"), NULL, 16);
- if (NULL == p)
+ if (NULL == p) {
p = (char *)CONFIG_SYS_LOAD_ADDR;
+ sprintf(msg, "%x", CONFIG_SYS_LOAD_ADDR);
+ setenv("loadaddr", msg);
+ }
setenv("filesize", "0");
-
- sprintf(cmd, "fatload mmc 0:1 0x%p boot.ini", (void *)p);
- run_command(cmd, 0);
+ sprintf(msg, "cfgload addr = 0x%08X, Loading boot.ini from ",
+ simple_strtoul(getenv("loadaddr"), NULL, 16));
+
+ setenv("msgload", msg);
+ run_command("if fatload mmc 0:1 ${loadaddr} boot.ini;" \
+ " then echo ${msgload} FAT;" \
+ " else if ext4load mmc 0:1 ${loadaddr} /boot.ini;" \
+ " then echo ${msgload} ext4 0:1 /boot.ini;" \
+ " else if ext4load mmc 0:1 ${loadaddr} /boot/boot.ini;" \
+ " then echo ${msgload} ext4 0:1 /boot/boot.ini;" \
+ " else if ext4load mmc 0:2 ${loadaddr} /boot/boot.ini;" \
+ " then echo ${msgload} ext4 0:2 /boot.ini;" \
+ " else if ext4load mmc 0:2 ${loadaddr} /boot.ini;" \
+ " then echo ${msgload} ext4 0:2 /boot/boot.ini;" \
+ " fi;fi;fi;fi;fi;", 0);
filesize = getenv_ulong("filesize", 16, 0);
if (0 == filesize) {
@@ -70,7 +85,7 @@ static char* read_cfgload(void)
printf("boot.ini: 'boot.ini' exceeds %d, size=%ld\n",
SZ_BOOTINI, filesize);
return NULL;
- }
+ }
/* Terminate the read buffer with '\0' to be treated as string */
*(char *)(p + filesize) = '\0';