Merge branch 'master' of /home/stefan/git/u-boot/u-boot into next
[platform/kernel/u-boot.git] / examples / test_burst.c
index ba23f14..d8c5ed4 100644 (file)
@@ -88,10 +88,11 @@ static unsigned long test_pattern [] = {
 int test_burst (int argc, char *argv[])
 {
        unsigned long size = CACHE_LINE_SIZE;
-       int res;
-       int i;
+       unsigned int pass = 0;
+       int res = 0;
+       int i, j;
 
-       if (argc == 2) {
+       if (argc == 3) {
                char * d;
                for (size = 0, d = argv[1]; *d >= '0' && *d <= '9'; d++) {
                        size *= 10;
@@ -101,7 +102,15 @@ int test_burst (int argc, char *argv[])
                        test_usage();
                        return 1;
                }
-       } else if (argc > 2) {
+               for (d = argv[2]; *d >= '0' && *d <= '9'; d++) {
+                       pass *= 10;
+                       pass += *d - '0';
+               }
+               if (*d) {
+                       test_usage();
+                       return 1;
+               }
+       } else if (argc > 3) {
                test_usage();
                return 1;
        }
@@ -115,11 +124,19 @@ int test_burst (int argc, char *argv[])
 
        test_desc(size);
 
-       for (i = 0; i < sizeof(test_pattern) / sizeof(test_pattern[0]); i++) {
-               res = test_burst_start(size, test_pattern[i]);
-               if (res != 0) {
-                       goto Done;
+       for (j = 0; !pass || j < pass; j++) {
+               for (i = 0; i < sizeof(test_pattern) / sizeof(test_pattern[0]);
+                    i++) {
+                       res = test_burst_start(size, test_pattern[i]);
+                       if (res != 0) {
+                               goto Done;
+                       }
                }
+
+               printf ("Iteration #%d passed\n", j + 1);
+
+               if (tstc() && 0x03 == getc())
+                       break;
        }
 Done:
        return res;
@@ -156,7 +173,7 @@ static int test_burst_start (unsigned long size, unsigned long pattern)
        int i, n;
        int res = 1;
 
-       printf ("Test pattern %08x ...", pattern);
+       printf ("Test pattern %08lx ...", pattern);
 
        n = size / 4;
 
@@ -231,7 +248,7 @@ static void test_desc(unsigned long size)
 {
        printf(
        "The following tests will be conducted:\n"
-       "1)  Map %d-byte region of physical RAM at 0x%08x\n"
+       "1)  Map %ld-byte region of physical RAM at 0x%08x\n"
        "    into two virtual regions:\n"
        "    one cached at 0x%08x and\n"
        "    the the other uncached at 0x%08x.\n",
@@ -260,8 +277,8 @@ static void test_error(
        p[1] = val;
        p[2] = pattern;
 
-       printf ("\nError at step %s, addr %08x: read %08x, pattern %08x",
-               step, addr, val, pattern);
+       printf ("\nError at step %s, addr %08lx: read %08lx, pattern %08lx",
+               step, (unsigned long)addr, val, pattern);
 }
 
 static void signal_init(void)
@@ -298,5 +315,5 @@ static void signal_error(void)
 
 static void test_usage(void)
 {
-       printf("Usage: go 0x40004 [size]\n");
+       printf("Usage: go 0x40004 [size] [count]\n");
 }