/* * K2HK: secure kernel command file * * (C) Copyright 2012-2014 * Texas Instruments Incorporated, * * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include asm(".arch_extension sec\n\t"); static int do_mon_install(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { u32 addr, dpsc_base = 0x1E80000, freq; int rcode = 0; if (argc < 2) return CMD_RET_USAGE; freq = CONFIG_SYS_HZ_CLOCK; addr = simple_strtoul(argv[1], NULL, 16); rcode = mon_install(addr, dpsc_base, freq); printf("## installed monitor, freq [%d], status %d\n", freq, rcode); return 0; } U_BOOT_CMD(mon_install, 2, 0, do_mon_install, "Install boot kernel at 'addr'", "" ); static void core_spin(void) { while (1) { asm volatile ( "dsb\n" "isb\n" "wfi\n" ); } } int do_mon_power(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int rcode = 0, core_id, on; void (*fn)(void); fn = core_spin; if (argc < 3) return CMD_RET_USAGE; core_id = simple_strtoul(argv[1], NULL, 16); on = simple_strtoul(argv[2], NULL, 16); if (on) rcode = mon_power_on(core_id, fn); else rcode = mon_power_off(core_id); if (on) { if (!rcode) printf("core %d powered on successfully\n", core_id); else printf("core %d power on failure\n", core_id); } else { printf("core %d powered off successfully\n", core_id); } return 0; } U_BOOT_CMD(mon_power, 3, 0, do_mon_power, "Power On/Off secondary core", "mon_power \n" "- coreid (1-3) and oper (1 - ON, 0 - OFF)\n" "" );