fdt: Limit printed hex in fdt print and list commands
authorJoe Hershberger <joe.hershberger@ni.com>
Fri, 17 Aug 2012 10:34:36 +0000 (10:34 +0000)
committerGerald Van Baren <gvb@unssw.com>
Mon, 15 Oct 2012 23:20:16 +0000 (19:20 -0400)
Prevent printing the entire image in a itb. It is most likely unhelpful
to have the hex of the entire image scroll for minutes on your slow
serial console.

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
common/cmd_fdt.c

index e2225c4d5c64e188b50a2f9f205426dac11ba5df..699441b51ad31f48d4eed59357fb0c608dccde52 100644 (file)
@@ -35,6 +35,9 @@
 
 #define MAX_LEVEL      32              /* how deeply nested we will go */
 #define SCRATCHPAD     1024            /* bytes of scratchpad memory */
+#ifndef CONFIG_CMD_FDT_MAX_DUMP
+#define CONFIG_CMD_FDT_MAX_DUMP 64
+#endif
 
 /*
  * Global data (for the gd->bd)
@@ -672,19 +675,28 @@ static void print_data(const void *data, int len)
        }
 
        if ((len %4) == 0) {
-               const u32 *p;
-
-               printf("<");
-               for (j = 0, p = data; j < len/4; j ++)
-                       printf("0x%x%s", fdt32_to_cpu(p[j]), j < (len/4 - 1) ? " " : "");
-               printf(">");
+               if (len > CONFIG_CMD_FDT_MAX_DUMP)
+                       printf("* 0x%08x [0x%08x]", (unsigned int)data, len);
+               else {
+                       const u32 *p;
+
+                       printf("<");
+                       for (j = 0, p = data; j < len/4; j++)
+                               printf("0x%08x%s", fdt32_to_cpu(p[j]),
+                                       j < (len/4 - 1) ? " " : "");
+                       printf(">");
+               }
        } else { /* anything else... hexdump */
-               const u8 *s;
-
-               printf("[");
-               for (j = 0, s = data; j < len; j++)
-                       printf("%02x%s", s[j], j < len - 1 ? " " : "");
-               printf("]");
+               if (len > CONFIG_CMD_FDT_MAX_DUMP)
+                       printf("* 0x%08x [0x%08x]", (unsigned int)data, len);
+               else {
+                       const u8 *s;
+
+                       printf("[");
+                       for (j = 0, s = data; j < len; j++)
+                               printf("%02x%s", s[j], j < len - 1 ? " " : "");
+                       printf("]");
+               }
        }
 }