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 <[email protected]>
---
 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

_______________________________________________
U-Boot mailing list
[email protected]
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to