[U-Boot] [PATCH] spi: sf: add support for throughput mesurement of sf read/write
Mugunthan V N
mugunthanvnm at ti.com
Tue Oct 27 14:54:23 CET 2015
This patch adds time measurement and throughput calculation for
sf read/write commands.
The output of sf read changes from
---8<---
SF: 4096 bytes @ 0x0 Read: OK
--->8---
to
---8<---
SF: 4096 bytes @ 0x0 Read: OK in 6 ms (666 KiB/s)
--->8---
Signed-off-by: Mugunthan V N <mugunthanvnm at ti.com>
---
common/cmd_sf.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/common/cmd_sf.c b/common/cmd_sf.c
index ac7f5df..8687f3a 100644
--- a/common/cmd_sf.c
+++ b/common/cmd_sf.c
@@ -15,6 +15,7 @@
#include <spi_flash.h>
#include <jffs2/jffs2.h>
#include <linux/mtd/mtd.h>
+#include <linux/math64.h>
#include <asm/io.h>
#include <dm/device-internal.h>
@@ -266,6 +267,7 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
int ret = 1;
int dev = 0;
loff_t offset, len, maxsize;
+ unsigned long time;
if (argc < 3)
return -1;
@@ -298,17 +300,27 @@ static int do_spi_flash_read_write(int argc, char * const argv[])
int read;
read = strncmp(argv[0], "read", 4) == 0;
+
+ time = get_timer(0);
if (read)
ret = spi_flash_read(flash, offset, len, buf);
else
ret = spi_flash_write(flash, offset, len, buf);
+ time = get_timer(time);
printf("SF: %zu bytes @ %#x %s: ", (size_t)len, (u32)offset,
read ? "Read" : "Written");
- if (ret)
+ if (ret) {
printf("ERROR %d\n", ret);
- else
- printf("OK\n");
+ } else {
+ printf("OK in %lu ms", time);
+ if (time > 0) {
+ puts(" (");
+ print_size(div_u64(len, time) * 1000, "/s");
+ puts(")");
+ }
+ puts("\n");
+ }
}
unmap_physmem(buf, len);
--
2.6.2.280.g74301d6
More information about the U-Boot
mailing list