U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH] Add a memory get command
@ 2012-08-17 20:58 Joe Hershberger
  2012-08-17 23:47 ` Mike Frysinger
  2012-09-02 19:10 ` Wolfgang Denk
  0 siblings, 2 replies; 6+ messages in thread
From: Joe Hershberger @ 2012-08-17 20:58 UTC (permalink / raw)
  To: u-boot

This command allows you to read the value of a memory address and store
it in an environment variable.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
---
 common/cmd_mem.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/common/cmd_mem.c b/common/cmd_mem.c
index 18f0a3f..08c7d69 100644
--- a/common/cmd_mem.c
+++ b/common/cmd_mem.c
@@ -32,6 +32,7 @@
 #ifdef CONFIG_HAS_DATAFLASH
 #include <dataflash.h>
 #endif
+#include <asm/io.h>
 #include <watchdog.h>
 
 static int mod_mem(cmd_tbl_t *, int, int, int, char * const []);
@@ -147,6 +148,45 @@ int do_mem_md ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 	return (rc);
 }
 
+#ifdef CONFIG_CMD_MEM_GET
+int do_mem_mg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+	ulong addr;
+	int size;
+	char *var;
+	char buf[11];
+
+	if (argc < 3)
+		return CMD_RET_USAGE;
+
+	/* Check for a size specification.
+	 * Defaults to long if no or incorrect specification.
+	 */
+	size = cmd_get_data_size(argv[0], 4);
+	if (size < 0)
+		return 1;
+
+	var = argv[1];
+
+	addr = simple_strtoul(argv[2], NULL, 16);
+	addr += base_address;
+
+	if (size == 4) {
+		uint32_t value = readl(addr);
+		sprintf(buf, "0x%08x", value);
+	} else if (size == 2) {
+		uint16_t value = readw(addr);
+		sprintf(buf, "0x%04x", value);
+	} else {
+		uint8_t value = readb(addr);
+		sprintf(buf, "0x%02x", value);
+	}
+	setenv(var, buf);
+
+	return 0;
+}
+#endif
+
 int do_mem_mm ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	return mod_mem (cmdtp, 1, flag, argc, argv);
@@ -1145,6 +1185,13 @@ U_BOOT_CMD(
 	"[.b, .w, .l] address [# of objects]"
 );
 
+#ifdef CONFIG_CMD_MEM_GET
+U_BOOT_CMD(
+	mg,	3,	1,	do_mem_mg,
+	"memory get",
+	"[.b, .w, .l] variable address"
+);
+#endif
 
 U_BOOT_CMD(
 	mm,	2,	1,	do_mem_mm,
-- 
1.7.11.5

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2012-12-19 23:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-17 20:58 [U-Boot] [PATCH] Add a memory get command Joe Hershberger
2012-08-17 23:47 ` Mike Frysinger
2012-09-02 19:10 ` Wolfgang Denk
     [not found]   ` <OFBA608614.0C8902BC-ON86257A6F.0051AAED-86257A6F.005233E4@ni.com>
2012-09-04 22:00     ` Wolfgang Denk
2012-11-02  2:21   ` [U-Boot] [PATCH v2] Add a simple load option to setexpr Joe Hershberger
2012-12-19 23:00     ` [U-Boot] [U-Boot,v2] " Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox