xref: /rk3399_rockchip-uboot/test/rockchip/test-rockchip.c (revision 785b4fbf6c5db1eb4c0ddf983292d7ab077c4212)
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 = "key",	.test = board_key_test },
19 	{ .name = "emmc",	.test = board_emmc_test },
20 	{ .name = "regulator",	.test = board_regulator_test },
21 	{ .name = "rknand",	.test = board_rknand_test },
22 #if defined(CONFIG_GMAC_ROCKCHIP)
23 	{ .name = "eth",        .test = board_eth_test },
24 #endif
25 #if defined(CONFIG_RK_IR)
26 	{ .name = "ir",		.test = board_ir_test },
27 #endif
28 	{ .name = "brom_dnl",	.test = board_brom_dnl_test}
29 };
30 
31 static int do_rockchip_test(cmd_tbl_t *cmdtp, int flag,
32 			    int argc, char * const argv[])
33 {
34 	ulong ms_start = 0, ms = 0, sec = 0;
35 	board_module_t *module = NULL;
36 	char *module_name = NULL;
37 	int index = 0, err = 0;
38 	bool found = false;
39 
40 	if (argc >= 2) {
41 		module_name = argv[1];
42 	} else {
43 		printf("cmd format: test_rockchip [module_name] [args...]\n");
44 		return 0;
45 	}
46 
47 	if (!module_name)
48 		return 0;
49 
50 
51 	for (index = 0; index < ARRAY_SIZE(g_board_modules); index++) {
52 		module = &g_board_modules[index];
53 		if (module && !strcmp(module->name, module_name)) {
54 			found = true;
55 
56 			printf("***********************************************************\n");
57 			printf("Rockchip Board Module [%s] Test start.\n", module_name);
58 			printf("***********************************************************\n");
59 
60 			ms_start = get_timer(0);
61 
62 			err = module->test(argc, argv);
63 
64 			ms = get_timer(ms_start);
65 			if (ms >= 1000) {
66 				sec = ms / 1000;
67 				ms = ms % 1000;
68 			}
69 
70 			printf("-----------------------------------------------------------\n");
71 			printf("Rockchip Board Module [%s] Test end <%s>.. Total: %lu.%lus\n",
72 			       module->name, err ? "FAILED" : "PASS", sec, ms);
73 			printf("-----------------------------------------------------------\n\n\n");
74 		}
75 	}
76 
77 	if (!found)
78 		printf("Rockchip Board Module [%s] is not support !\n",
79 		       module_name);
80 
81 	return 0;
82 }
83 
84 U_BOOT_CMD(
85 	rktest, 10, 0, do_rockchip_test,
86 	"Rockchip Board Module Test",
87 	""
88 );
89