1c664909eSJoseph Chen // SPDX-License-Identifier: GPL-2.0 2c664909eSJoseph Chen /* 3c664909eSJoseph Chen * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd 4c664909eSJoseph Chen */ 5c664909eSJoseph Chen 6c664909eSJoseph Chen #include <common.h> 7c664909eSJoseph Chen #include <bidram.h> 89b78eaa4SJoseph Chen #include <cli.h> 9c664909eSJoseph Chen #include <console.h> 10c664909eSJoseph Chen #include <sysmem.h> 11c664909eSJoseph Chen #include <asm/arch/hotkey.h> 12c664909eSJoseph Chen 13c664909eSJoseph Chen DECLARE_GLOBAL_DATA_PTR; 14c664909eSJoseph Chen 15665be4b0SJoseph Chen #define CTRL_A 0x01 /* shell(cli) on BOOTM_STATE_OS_PREP */ 164fe75b5bSJoseph Chen #define CTRL_B 0x02 /* bootrom mode */ 174fe75b5bSJoseph Chen #define CTRL_D 0x04 /* download mde */ 184fe75b5bSJoseph Chen #define CTRL_F 0x06 /* fastboot mode */ 194fe75b5bSJoseph Chen #define CTRL_I 0x09 /* inicall debug for kernel */ 20*c51f2c54SJoseph Chen #define CTRL_L 0x0c /* late shell(cli) on BOOTM_STATE_OS_GO */ 214fe75b5bSJoseph Chen #define CTRL_M 0x0d /* memory(sysmem/bidram) */ 224fe75b5bSJoseph Chen #define CTRL_P 0x10 /* parameter(cmdline) dump */ 23dba9c9e5SJoseph Chen #define CTRL_R 0x12 /* regulator initial state dump */ 24b173f38eSJoseph Chen #define CTRL_T 0x14 /* print fdt */ 25c664909eSJoseph Chen is_hotkey(enum hotkey_t id)26c664909eSJoseph Chenbool is_hotkey(enum hotkey_t id) 27c664909eSJoseph Chen { 28c664909eSJoseph Chen switch (id) { 29866ecb69SJoseph Chen case HK_CMDLINE: 30866ecb69SJoseph Chen return gd->console_evt == CTRL_P; 31866ecb69SJoseph Chen case HK_INITCALL: 32866ecb69SJoseph Chen return gd->console_evt == CTRL_I; 33dba9c9e5SJoseph Chen case HK_REGULATOR: 34dba9c9e5SJoseph Chen return gd->console_evt == CTRL_R; 35c664909eSJoseph Chen case HK_SYSMEM: 36c664909eSJoseph Chen return gd->console_evt == CTRL_M; 379beff106SJoseph Chen case HK_BROM_DNL: 389beff106SJoseph Chen return gd->console_evt == CTRL_B; 399889a0e0SJoseph Chen #ifndef CONFIG_CONSOLE_DISABLE_CLI 409beff106SJoseph Chen case HK_ROCKUSB_DNL: 419beff106SJoseph Chen return gd->console_evt == CTRL_D; 429beff106SJoseph Chen case HK_FASTBOOT: 439beff106SJoseph Chen return gd->console_evt == CTRL_F; 449beff106SJoseph Chen #endif 45c664909eSJoseph Chen default: 46c664909eSJoseph Chen break; 47c664909eSJoseph Chen } 48c664909eSJoseph Chen 49c664909eSJoseph Chen return false; 50c664909eSJoseph Chen } 51c664909eSJoseph Chen hotkey_run(enum hotkey_t id)52c664909eSJoseph Chenvoid hotkey_run(enum hotkey_t id) 53c664909eSJoseph Chen { 54c664909eSJoseph Chen switch ((id)) { 55c664909eSJoseph Chen case HK_SYSMEM: 56c664909eSJoseph Chen if (gd->console_evt == CTRL_M) { 57c664909eSJoseph Chen bidram_dump(); 58c664909eSJoseph Chen sysmem_dump(); 59c664909eSJoseph Chen } 60c664909eSJoseph Chen break; 61866ecb69SJoseph Chen case HK_CMDLINE: 62866ecb69SJoseph Chen if (gd->console_evt == CTRL_P) 63866ecb69SJoseph Chen printf("cmdline: %s\n", env_get("bootargs")); 64866ecb69SJoseph Chen break; 65866ecb69SJoseph Chen case HK_INITCALL: 66866ecb69SJoseph Chen if (gd->console_evt == CTRL_I) 67866ecb69SJoseph Chen env_update("bootargs", "initcall_debug debug"); 68866ecb69SJoseph Chen break; 69b173f38eSJoseph Chen case HK_FDT: 70b173f38eSJoseph Chen if (gd->console_evt == CTRL_T) 71b173f38eSJoseph Chen run_command("fdt print", 0); 72b173f38eSJoseph Chen break; 73665be4b0SJoseph Chen case HK_CLI_OS_PRE: 74665be4b0SJoseph Chen if (gd->console_evt == CTRL_A) 75665be4b0SJoseph Chen cli_loop(); 76665be4b0SJoseph Chen break; 77665be4b0SJoseph Chen case HK_CLI_OS_GO: 78*c51f2c54SJoseph Chen if (gd->console_evt == CTRL_L) 799b78eaa4SJoseph Chen cli_loop(); 809b78eaa4SJoseph Chen break; 81c664909eSJoseph Chen default: 82c664909eSJoseph Chen break; 83c664909eSJoseph Chen } 84c664909eSJoseph Chen } 85