[PATCH v2 04/12] rockchip: otp: Add dump_otp debug command

Jonas Karlman jonas at kwiboo.se
Wed Feb 22 23:44:39 CET 2023


Add a simple debug command to dump the content of the otp.

Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>
---
v2:
- Print 4 bytes instead of one 32-bit word
- Collect r-b tag

 drivers/misc/rockchip-otp.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/drivers/misc/rockchip-otp.c b/drivers/misc/rockchip-otp.c
index 3da99e83179b..c19cd5ce625e 100644
--- a/drivers/misc/rockchip-otp.c
+++ b/drivers/misc/rockchip-otp.c
@@ -5,6 +5,8 @@
 
 #include <common.h>
 #include <asm/io.h>
+#include <command.h>
+#include <display_options.h>
 #include <dm.h>
 #include <linux/bitops.h>
 #include <linux/delay.h>
@@ -70,6 +72,39 @@ struct rockchip_otp_data {
 	int block_size;
 };
 
+#if defined(DEBUG)
+static int dump_otp(struct cmd_tbl *cmdtp, int flag,
+		    int argc, char *const argv[])
+{
+	struct udevice *dev;
+	u8 data[4];
+	int ret, i;
+
+	ret = uclass_get_device_by_driver(UCLASS_MISC,
+					  DM_DRIVER_GET(rockchip_otp), &dev);
+	if (ret) {
+		printf("%s: no misc-device found\n", __func__);
+		return 0;
+	}
+
+	for (i = 0; true; i += sizeof(data)) {
+		ret = misc_read(dev, i, &data, sizeof(data));
+		if (ret < 0)
+			return 0;
+
+		print_buffer(i, data, 1, sizeof(data), sizeof(data));
+	}
+
+	return 0;
+}
+
+U_BOOT_CMD(
+	dump_otp, 1, 1, dump_otp,
+	"Dump the content of the otp",
+	""
+);
+#endif
+
 static int rockchip_otp_poll_timeout(struct rockchip_otp_plat *otp,
 				     u32 flag, u32 reg)
 {
-- 
2.39.2



More information about the U-Boot mailing list