xref: /rk3399_rockchip-uboot/test/rockchip/test-rockchip.c (revision b40c07fc2e802a4ff2f3f3fc2acc2fdab91d3281)
1 /*
2  * (C) Copyright 2017 Rockchip Electronics Co., Ltd
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6 
7 #include <common.h>
8 #include <command.h>
9 #include "test-rockchip.h"
10 
11 typedef struct board_module {
12 	char *name;
13 	int (*test)(int argc, char * const argv[]);
14 } board_module_t;
15 
16 static board_module_t g_board_modules[] = {
17 	{ .name = "timer",	.test = board_timer_test },
18 	{ .name = "brom",	.test = board_brom_dnl_test },
19 
20 #if defined(CONFIG_DM_KEY)
21 	{ .name = "key",	.test = board_key_test },
22 #endif
23 #if defined(CONFIG_MMC)
24 	{ .name = "emmc",	.test = board_emmc_test },
25 #endif
26 #if defined(CONFIG_DM_REGULATOR)
27 	{ .name = "regulator",	.test = board_regulator_test },
28 #endif
29 #if defined(CONFIG_RKNAND)
30 	{ .name = "rknand",	.test = board_rknand_test },
31 #endif
32 #if defined(CONFIG_GMAC_ROCKCHIP)
33 	{ .name = "eth",        .test = board_eth_test },
34 #endif
35 #if defined(CONFIG_RK_IR)
36 	{ .name = "ir",		.test = board_ir_test },
37 #endif
38 #if defined(CONFIG_ROCKCHIP_VENDOR_PARTITION)
39 	{ .name = "vendor",	.test = board_vendor_storage_test },
40 #endif
41 };
42 
43 static void help(void)
44 {
45 	printf("Command: rktest [module] [args...]\n\n"
46 	       "  - module: timer|key|emmc|rknand|regulator|eth|ir|brom|vendor\n"
47 	       "  - args: depends on module\n");
48 }
49 
50 static int do_rockchip_test(cmd_tbl_t *cmdtp, int flag,
51 			    int argc, char * const argv[])
52 {
53 	ulong ms_start = 0, ms = 0, sec = 0;
54 	board_module_t *module = NULL;
55 	char *module_name = NULL;
56 	int index = 0, err = 0;
57 	bool found = false;
58 
59 	if (argc >= 2) {
60 		module_name = argv[1];
61 	} else {
62 		help();
63 		return 0;
64 	}
65 
66 	if (!module_name)
67 		return 0;
68 
69 
70 	for (index = 0; index < ARRAY_SIZE(g_board_modules); index++) {
71 		module = &g_board_modules[index];
72 		if (module && !strcmp(module->name, module_name)) {
73 			found = true;
74 
75 			printf("***********************************************************\n");
76 			printf("Rockchip Board Module [%s] Test start.\n", module_name);
77 			printf("***********************************************************\n");
78 
79 			ms_start = get_timer(0);
80 
81 			err = module->test(argc, argv);
82 
83 			ms = get_timer(ms_start);
84 			if (ms >= 1000) {
85 				sec = ms / 1000;
86 				ms = ms % 1000;
87 			}
88 
89 			printf("-----------------------------------------------------------\n");
90 			printf("Rockchip Board Module [%s] Test end <%s>.. Total: %lu.%lus\n",
91 			       module->name, err ? "FAILED" : "PASS", sec, ms);
92 			printf("-----------------------------------------------------------\n\n\n");
93 		}
94 	}
95 
96 	if (!found)
97 		printf("Rockchip Board Module [%s] is not support !\n",
98 		       module_name);
99 
100 	return 0;
101 }
102 
103 U_BOOT_CMD(
104 	rktest, 10, 0, do_rockchip_test,
105 	"Rockchip Board Module Test",
106 	""
107 );
108