summaryrefslogtreecommitdiff
path: root/common/cmd_bootaux.c
diff options
context:
space:
mode:
authorYe.Li <B37916@freescale.com>2014-07-16 13:53:34 +0800
committerYe.Li <B37916@freescale.com>2014-07-17 13:09:40 +0800
commit54a0803b29c5ab459bedfb2c68c1e94b89866aa1 (patch)
tree62e0cda8d1b5950b9719fd266e829bc7272cb094 /common/cmd_bootaux.c
parentd74815051120adcad041f4480db49402db4f9823 (diff)
downloadu-boot-imx-54a0803b29c5ab459bedfb2c68c1e94b89866aa1.zip
u-boot-imx-54a0803b29c5ab459bedfb2c68c1e94b89866aa1.tar.gz
u-boot-imx-54a0803b29c5ab459bedfb2c68c1e94b89866aa1.tar.bz2
ENGR00322860 iMX6SX: Add function to check M4 status before booting
Add new function "arch_auxiliary_core_check_up" to check whether M4 is already up. Therefore, avoid starting M4 again when it is running. Signed-off-by: Ye.Li <B37916@freescale.com>
Diffstat (limited to 'common/cmd_bootaux.c')
-rw-r--r--common/cmd_bootaux.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/common/cmd_bootaux.c b/common/cmd_bootaux.c
index 188cb73..b15de0e 100644
--- a/common/cmd_bootaux.c
+++ b/common/cmd_bootaux.c
@@ -16,14 +16,30 @@ static int __arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
__attribute__((weak, alias("__arch_auxiliary_core_up")));
+/* Allow for arch specific config before we boot */
+static int __arch_auxiliary_core_check_up(u32 core_id)
+{
+ /* please define platform specific arch_auxiliary_core_check_up() */
+ return 0;
+}
+
+int arch_auxiliary_core_check_up(u32 core_id)
+ __attribute__((weak, alias("__arch_auxiliary_core_check_up")));
+
int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
ulong addr;
- int ret;
+ int ret, up;
if (argc < 2)
return CMD_RET_USAGE;
+ up = arch_auxiliary_core_check_up(0);
+ if (up) {
+ printf("## Auxiliary core is already up\n");
+ return CMD_RET_SUCCESS;
+ }
+
addr = simple_strtoul(argv[1], NULL, 16);
printf("## Starting auxiliary core at 0x%08lX ...\n", addr);