[U-Boot] [PATCH 05/16] dm: board: Add a command to view phase info
Simon Glass
sjg at chromium.org
Sun Mar 19 18:59:24 UTC 2017
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 at chromium.org>
---
cmd/Kconfig | 8 ++++++++
cmd/Makefile | 1 +
cmd/board.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 67 insertions(+)
create mode 100644 cmd/board.c
diff --git a/cmd/Kconfig b/cmd/Kconfig
index 25e3b783a8..9b93f213b7 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -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
diff --git a/cmd/Makefile b/cmd/Makefile
index f13bb8c11e..4b1d183514 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -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
diff --git a/cmd/board.c b/cmd/board.c
new file mode 100644
index 0000000000..3ee91ca25d
--- /dev/null
+++ b/cmd/board.c
@@ -0,0 +1,58 @@
+/*
+ * Board driver commands
+ *
+ * Copyright (c) 2017 Google, Inc
+ * Written by Simon Glass <sjg at 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"
+);
--
2.12.0.367.g23dc2f6d3c-goog
More information about the U-Boot
mailing list