|
|
|
@ -513,3 +513,41 @@ int checkboard(void) |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int do_m4go(cmd_tbl_t *cmdtp, int flag, int argc, |
|
|
|
|
char * const argv[]) |
|
|
|
|
{ |
|
|
|
|
ulong addr; |
|
|
|
|
|
|
|
|
|
/* Consume 'm4go' */ |
|
|
|
|
argc--; argv++; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Parse provided address - default to load_addr in case not provided. |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
if (argc) |
|
|
|
|
addr = simple_strtoul(argv[0], NULL, 16); |
|
|
|
|
else |
|
|
|
|
addr = load_addr; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Write boot address in PERSISTENT_ENTRY1[31:0] aka SRC_GPR2[31:0] |
|
|
|
|
*/ |
|
|
|
|
writel(addr + 0x401, 0x4006E028); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Start secondary processor by enabling its clock |
|
|
|
|
*/ |
|
|
|
|
writel(0x15a5a, 0x4006B08C); |
|
|
|
|
|
|
|
|
|
return 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
U_BOOT_CMD( |
|
|
|
|
m4go, 2 /* one arg max */, 1 /* repeatable */, do_m4go, |
|
|
|
|
"start the secondary Cortex-M4 from scatter file image", |
|
|
|
|
"[<addr>]\n" |
|
|
|
|
" - start secondary Cortex-M4 core using a scatter file image\n" |
|
|
|
|
"The argument needs to be a scatter file\n" |
|
|
|
|
); |
|
|
|
|