summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <[email protected]>2023-07-12 09:04:37 -0600
committerBin Meng <[email protected]>2023-07-17 13:38:34 +0800
commit347a845aec18561d36299b0735c47c2b3f45bc71 (patch)
tree68188c6812827b4dd1a2bf20afaecf5bce20fc38
parent43b6fa9c1464e0918004dc03be03acd3c40bcc25 (diff)
bdinfo: Show information about the serial port
It is useful to see the detailed setting of the serial port, e.g. to allow setting up earlycon or console for Linux. Add this output to the 'bdinfo' command. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Bin Meng <[email protected]> [bmeng: squashed in [email protected]] Signed-off-by: Bin Meng <[email protected]>
-rw-r--r--cmd/bdinfo.c21
-rw-r--r--test/cmd/bdinfo.c14
2 files changed, 35 insertions, 0 deletions
diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c
index 365357ca545..dab73f1d93c 100644
--- a/cmd/bdinfo.c
+++ b/cmd/bdinfo.c
@@ -13,6 +13,7 @@
#include <lmb.h>
#include <mapmem.h>
#include <net.h>
+#include <serial.h>
#include <video.h>
#include <vsprintf.h>
#include <asm/cache.h>
@@ -113,6 +114,25 @@ static void show_video_info(void)
}
}
+static void print_serial(struct udevice *dev)
+{
+ struct serial_device_info info;
+ int ret;
+
+ if (!dev || !IS_ENABLED(CONFIG_DM_SERIAL))
+ return;
+
+ ret = serial_getinfo(dev, &info);
+ if (ret)
+ return;
+
+ bdinfo_print_num_l("serial addr", info.addr);
+ bdinfo_print_num_l(" width", info.reg_width);
+ bdinfo_print_num_l(" shift", info.reg_shift);
+ bdinfo_print_num_l(" offset", info.reg_offset);
+ bdinfo_print_num_l(" clock", info.clock);
+}
+
int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
{
struct bd_info *bd = gd->bd;
@@ -151,6 +171,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
if (IS_ENABLED(CONFIG_OF_REAL))
printf("devicetree = %s\n", fdtdec_get_srcname());
}
+ print_serial(gd->cur_serial_dev);
arch_print_bdinfo();
diff --git a/test/cmd/bdinfo.c b/test/cmd/bdinfo.c
index cddf1a46d49..6480393fd5d 100644
--- a/test/cmd/bdinfo.c
+++ b/test/cmd/bdinfo.c
@@ -16,6 +16,7 @@
#include <env.h>
#include <lmb.h>
#include <net.h>
+#include <serial.h>
#include <video.h>
#include <vsprintf.h>
#include <asm/cache.h>
@@ -191,6 +192,19 @@ static int bdinfo_test_move(struct unit_test_state *uts)
ut_assert_nextline("devicetree = %s", fdtdec_get_srcname());
}
+ if (IS_ENABLED(CONFIG_DM_SERIAL)) {
+ struct serial_device_info info;
+
+ ut_assertnonnull(gd->cur_serial_dev);
+ ut_assertok(serial_getinfo(gd->cur_serial_dev, &info));
+
+ ut_assertok(test_num_l(uts, "serial addr", info.addr));
+ ut_assertok(test_num_l(uts, " width", info.reg_width));
+ ut_assertok(test_num_l(uts, " shift", info.reg_shift));
+ ut_assertok(test_num_l(uts, " offset", info.reg_offset));
+ ut_assertok(test_num_l(uts, " clock", info.clock));
+ }
+
ut_assertok(ut_check_console_end(uts));
return 0;