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