[U-Boot] [PATCH] cmd: memio: Add support functions to read/write data
kameyama eiji
kameyama.eiji at fujitsu.com
Mon Sep 30 08:51:06 UTC 2019
The existing source code (binop.c) includes read/write function to
read/write data on DDR. To use these functions and avoid duplicate code,
based on the existing functions, move and update the read/write function
to a public file which is memio file.
- New memio includes support functions to read/write data from/to DDR.
- Update binop.c file to use read/write functions.
Signed-off-by: Dao Van Trung <trungdv at vn.fujitsu.com>
Signed-off-by: Pham Duc Tung <tungpd at vn.fujitsu.com>
Signed-off-by: kameyama eiji <kameyama.eiji at fujitsu.com>
---
cmd/Makefile | 1 +
cmd/binop.c | 24 +++---------------------
cmd/memio.c | 42 ++++++++++++++++++++++++++++++++++++++++++
include/memio.h | 16 ++++++++++++++++
4 files changed, 62 insertions(+), 21 deletions(-)
create mode 100644 cmd/memio.c
create mode 100644 include/memio.h
diff --git a/cmd/Makefile b/cmd/Makefile
index ac843b4b16..8c241b256e 100644
--- a/cmd/Makefile
+++ b/cmd/Makefile
@@ -86,6 +86,7 @@ obj-$(CONFIG_CMD_LOG) += log.o
obj-$(CONFIG_ID_EEPROM) += mac.o
obj-$(CONFIG_CMD_MD5SUM) += md5sum.o
obj-$(CONFIG_CMD_MEMORY) += mem.o
+obj-y += memio.o
obj-$(CONFIG_CMD_IO) += io.o
obj-$(CONFIG_CMD_MFSL) += mfsl.o
obj-$(CONFIG_CMD_MII) += mii.o
diff --git a/cmd/binop.c b/cmd/binop.c
index 6d2df5f3dd..c14ca09fc3 100644
--- a/cmd/binop.c
+++ b/cmd/binop.c
@@ -7,6 +7,7 @@
#include <malloc.h>
#include <mapmem.h>
#include <linux/ctype.h>
+#include <memio.h>
enum {
OP_ID_XOR,
@@ -44,26 +45,6 @@ void read_from_env_var(char *varname, u8 *result)
hex2bin(result, varname, strlen(varname) / 2);
}
-void read_from_mem(ulong addr, u8 *result, ulong len)
-{
- u8 *src;
-
- src = map_sysmem(addr, len);
- memcpy(result, src, len);
- unmap_sysmem(src);
-}
-
-void write_to_mem(char *varname, u8 *result, ulong len)
-{
- ulong addr;
- u8 *buf;
-
- addr = simple_strtoul(varname, NULL, 16);
- buf = map_sysmem(addr, len);
- memcpy(buf, result, len);
- unmap_sysmem(buf);
-}
-
static int do_binop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
ulong len;
@@ -134,7 +115,8 @@ static int do_binop(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
destarg = argv[5];
if (*destarg == '*')
- write_to_mem(destarg + 1, result, len); /* Skip asterisk */
+ write_to_mem(simple_strtoul(destarg + 1, NULL, 16),
+ result, len); /* Skip asterisk */
else
write_to_env_var(destarg, result, len);
exit:
diff --git a/cmd/memio.c b/cmd/memio.c
new file mode 100644
index 0000000000..b9da5e5294
--- /dev/null
+++ b/cmd/memio.c
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * cmd/memio.c
+ * Support functions to read/write data from/to DDR
+ * physical address.
+ *
+ * Copyright (C) 2019 FUJITSU VIETNAM LIMITED and FUJITSU COMPUTER
+ * TECHNOLOGIES LIMITED. All rights reserved.
+ */
+#include <common.h>
+#include <mapmem.h>
+#include <memio.h>
+
+/**
+ * read_from_mem() - Read data from DDR
+ * @addr: Physical address on DDR
+ * @result: Buffer for read data
+ * @len: Data length
+ */
+void read_from_mem(ulong addr, u8 *result, ulong len)
+{
+ u8 *src;
+
+ src = map_sysmem(addr, len);
+ memcpy(result, src, len);
+ unmap_sysmem(src);
+}
+
+/**
+ * write_to_mem() - Write data to DDR
+ * @addr: Physical address on DDR
+ * @result: Buffer of write data
+ * @len: Data length
+ */
+void write_to_mem(ulong addr, u8 *result, ulong len)
+{
+ u8 *buf;
+
+ buf = map_sysmem(addr, len);
+ memcpy(buf, result, len);
+ unmap_sysmem(buf);
+}
diff --git a/include/memio.h b/include/memio.h
new file mode 100644
index 0000000000..c5f397393b
--- /dev/null
+++ b/include/memio.h
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * include/memio.h
+ * This file declares support functions to read/write from/to
+ * DDR physical address.
+ *
+ * Copyright (C) 2019 FUJITSU VIETNAM LIMITED and FUJITSU COMPUTER
+ * TECHNOLOGIES LIMITED. All rights reserved.
+ */
+#ifndef _MEMIO_H_
+#define _MEMIO_H_
+
+void read_from_mem(ulong addr, u8 *result, ulong len);
+void write_to_mem(ulong addr, u8 *result, ulong len);
+
+#endif /* _MEMIO_H_ */
--
2.20.1
More information about the U-Boot
mailing list