xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-rockchip/hotkey.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #include <common.h>
7*4882a593Smuzhiyun #include <bidram.h>
8*4882a593Smuzhiyun #include <cli.h>
9*4882a593Smuzhiyun #include <console.h>
10*4882a593Smuzhiyun #include <sysmem.h>
11*4882a593Smuzhiyun #include <asm/arch/hotkey.h>
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun DECLARE_GLOBAL_DATA_PTR;
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define CTRL_A		0x01	/* shell(cli) on BOOTM_STATE_OS_PREP */
16*4882a593Smuzhiyun #define CTRL_B		0x02	/* bootrom mode */
17*4882a593Smuzhiyun #define CTRL_D		0x04	/* download mde */
18*4882a593Smuzhiyun #define CTRL_F		0x06	/* fastboot mode */
19*4882a593Smuzhiyun #define CTRL_I		0x09	/* inicall debug for kernel */
20*4882a593Smuzhiyun #define CTRL_L		0x0c	/* late shell(cli) on BOOTM_STATE_OS_GO */
21*4882a593Smuzhiyun #define CTRL_M		0x0d	/* memory(sysmem/bidram) */
22*4882a593Smuzhiyun #define CTRL_P		0x10	/* parameter(cmdline) dump */
23*4882a593Smuzhiyun #define CTRL_R		0x12	/* regulator initial state dump */
24*4882a593Smuzhiyun #define CTRL_T		0x14	/* print fdt */
25*4882a593Smuzhiyun 
is_hotkey(enum hotkey_t id)26*4882a593Smuzhiyun bool is_hotkey(enum hotkey_t id)
27*4882a593Smuzhiyun {
28*4882a593Smuzhiyun 	switch (id) {
29*4882a593Smuzhiyun 	case HK_CMDLINE:
30*4882a593Smuzhiyun 		return gd->console_evt == CTRL_P;
31*4882a593Smuzhiyun 	case HK_INITCALL:
32*4882a593Smuzhiyun 		return gd->console_evt == CTRL_I;
33*4882a593Smuzhiyun 	case HK_REGULATOR:
34*4882a593Smuzhiyun 		return gd->console_evt == CTRL_R;
35*4882a593Smuzhiyun 	case HK_SYSMEM:
36*4882a593Smuzhiyun 		return gd->console_evt == CTRL_M;
37*4882a593Smuzhiyun 	case HK_BROM_DNL:
38*4882a593Smuzhiyun 		return gd->console_evt == CTRL_B;
39*4882a593Smuzhiyun #ifndef CONFIG_CONSOLE_DISABLE_CLI
40*4882a593Smuzhiyun 	case HK_ROCKUSB_DNL:
41*4882a593Smuzhiyun 		return gd->console_evt == CTRL_D;
42*4882a593Smuzhiyun 	case HK_FASTBOOT:
43*4882a593Smuzhiyun 		return gd->console_evt == CTRL_F;
44*4882a593Smuzhiyun #endif
45*4882a593Smuzhiyun 	default:
46*4882a593Smuzhiyun 		break;
47*4882a593Smuzhiyun 	}
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun 	return false;
50*4882a593Smuzhiyun }
51*4882a593Smuzhiyun 
hotkey_run(enum hotkey_t id)52*4882a593Smuzhiyun void hotkey_run(enum hotkey_t id)
53*4882a593Smuzhiyun {
54*4882a593Smuzhiyun 	switch ((id)) {
55*4882a593Smuzhiyun 	case HK_SYSMEM:
56*4882a593Smuzhiyun 		if (gd->console_evt == CTRL_M) {
57*4882a593Smuzhiyun 			bidram_dump();
58*4882a593Smuzhiyun 			sysmem_dump();
59*4882a593Smuzhiyun 		}
60*4882a593Smuzhiyun 		break;
61*4882a593Smuzhiyun 	case HK_CMDLINE:
62*4882a593Smuzhiyun 		if (gd->console_evt == CTRL_P)
63*4882a593Smuzhiyun 			printf("cmdline: %s\n", env_get("bootargs"));
64*4882a593Smuzhiyun 		break;
65*4882a593Smuzhiyun 	case HK_INITCALL:
66*4882a593Smuzhiyun 		if (gd->console_evt == CTRL_I)
67*4882a593Smuzhiyun 			env_update("bootargs", "initcall_debug debug");
68*4882a593Smuzhiyun 		break;
69*4882a593Smuzhiyun 	case HK_FDT:
70*4882a593Smuzhiyun 		if (gd->console_evt == CTRL_T)
71*4882a593Smuzhiyun 			run_command("fdt print", 0);
72*4882a593Smuzhiyun 		break;
73*4882a593Smuzhiyun 	case HK_CLI_OS_PRE:
74*4882a593Smuzhiyun 		if (gd->console_evt == CTRL_A)
75*4882a593Smuzhiyun 			cli_loop();
76*4882a593Smuzhiyun 		break;
77*4882a593Smuzhiyun 	case HK_CLI_OS_GO:
78*4882a593Smuzhiyun 		if (gd->console_evt == CTRL_L)
79*4882a593Smuzhiyun 			cli_loop();
80*4882a593Smuzhiyun 		break;
81*4882a593Smuzhiyun 	default:
82*4882a593Smuzhiyun 		break;
83*4882a593Smuzhiyun 	}
84*4882a593Smuzhiyun }
85