@@ -126,6 +126,14 @@ config CMD_BDI
help
Print board info
+config CMD_BOARD
+ bool "board"
+ default y if BOARD
+ help
+ Provides access to board-specific drivers. This includes information
+ about which board init was completed as well as the board
+ description.
+
config CMD_CONFIG
bool "config"
select BUILD_BIN2C
@@ -16,6 +16,7 @@ obj-y += version.o
obj-$(CONFIG_CMD_AES) += aes.o
obj-$(CONFIG_CMD_AMBAPP) += ambapp.o
obj-$(CONFIG_CMD_ARMFLASH) += armflash.o
+obj-$(CONFIG_CMD_BOARD) += board.o
obj-$(CONFIG_SOURCE) += source.o
obj-$(CONFIG_CMD_SOURCE) += source.o
obj-$(CONFIG_CMD_BDI) += bdinfo.o
new file mode 100644
@@ -0,0 +1,58 @@
+/*
+ * Board driver commands
+ *
+ * Copyright (c) 2017 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <board.h>
+#include <command.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static const char * const phase_name[] = {
+ [BOARD_F_ARCH_CPU_INIT_DM] = "arch_cpu_init_dm",
+ [BOARD_F_EARLY_INIT_F] = "board_early_init_f",
+ [BOARD_F_CHECKCPU] = "checkcpu",
+ [BOARD_F_MISC_INIT_F] = "misc_init_f",
+ [BOARD_F_DRAM_INIT] = "dram_init",
+ [BOARD_F_RESERVE_ARCH] = "reserve_arch",
+ [BOARD_PHASE_TEST] = "test",
+ [BOARD_PHASE_INVALID] = "invalid",
+
+};
+
+static void board_list_phases(void)
+{
+ enum board_phase_t phase;
+
+ for (phase = BOARD_PHASE_FIRST; phase < BOARD_PHASE_TEST; phase++)
+ printf("%3d %s\n", gd->phase_count[phase], phase_name[phase]);
+}
+
+static int do_board(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+ int cmd = 'p';
+
+ if (argc > 1)
+ cmd = argv[1][0];
+
+ switch (cmd) {
+ case 'p': /* phases */
+ board_list_phases();
+ break;
+ default:
+ return CMD_RET_FAILURE;
+ }
+
+ return 0;
+}
+
+U_BOOT_CMD(
+ board, 2, 0, do_board,
+ "Access board information",
+ "phases\t- Show information about completed board init phases"
+);
Add a 'board phases' command ('boa' or 'boa p' for short) which shows which board phases have been run and how many devices provided an implementation of each phase. Sample output: => board phases 1 arch_cpu_init_dm 0 board_early_init_f 1 checkcpu 0 misc_init_f 1 dram_init 1 reserve_arch Signed-off-by: Simon Glass <sjg@chromium.org> --- cmd/Kconfig | 8 ++++++++ cmd/Makefile | 1 + cmd/board.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 cmd/board.c