stm32mp1: ram: update loop management in infinite test
authorPatrick Delaunay <patrick.delaunay@st.com>
Tue, 30 Jul 2019 17:16:50 +0000 (19:16 +0200)
committerPatrice Chotard <patrice.chotard@st.com>
Tue, 27 Aug 2019 09:19:23 +0000 (11:19 +0200)
Reduce verbosity of the infinite tests to avoid CubeMX issue.
test and display loop by 1024*1024 accesses: read or write.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
drivers/ram/stm32mp1/stm32mp1_tests.c

index 691c63c3ae0993d47331a6a714f8301b0546d833..73568022576d1d97381c2356f7d020056d9fa223 100644 (file)
@@ -1241,6 +1241,7 @@ static enum test_result test_read(struct stm32mp1_ddrctl *ctl,
        u32 *addr;
        u32 data;
        u32 loop = 0;
+       int i, size = 1024 * 1024;
        bool random = false;
 
        if (get_addr(string, argc, argv, 0, (u32 *)&addr))
@@ -1254,14 +1255,19 @@ static enum test_result test_read(struct stm32mp1_ddrctl *ctl,
        printf("running at 0x%08x\n", (u32)addr);
 
        while (1) {
-               if (random)
-                       addr = (u32 *)(STM32_DDR_BASE +
-                              (rand() & (STM32_DDR_SIZE - 1) & ~0x3));
-               data = readl(addr);
-               if (test_loop_end(&loop, 0, 1000))
+               for (i = 0; i < size; i++) {
+                       if (random)
+                               addr = (u32 *)(STM32_DDR_BASE +
+                                      (rand() & (STM32_DDR_SIZE - 1) & ~0x3));
+                       data = readl(addr);
+               }
+               if (test_loop_end(&loop, 0, 1))
                        break;
        }
-       sprintf(string, "0x%x: %x", (u32)addr, data);
+       if (random)
+               sprintf(string, "%d loops random", loop);
+       else
+               sprintf(string, "%d loops at 0x%x: %x", loop, (u32)addr, data);
 
        return TEST_PASSED;
 }
@@ -1280,6 +1286,7 @@ static enum test_result test_write(struct stm32mp1_ddrctl *ctl,
        u32 *addr;
        u32 data = 0xA5A5AA55;
        u32 loop = 0;
+       int i, size = 1024 * 1024;
        bool random = false;
 
        if (get_addr(string, argc, argv, 0, (u32 *)&addr))
@@ -1293,16 +1300,21 @@ static enum test_result test_write(struct stm32mp1_ddrctl *ctl,
        printf("running at 0x%08x\n", (u32)addr);
 
        while (1) {
-               if (random) {
-                       addr = (u32 *)(STM32_DDR_BASE +
-                              (rand() & (STM32_DDR_SIZE - 1) & ~0x3));
-                       data = rand();
+               for (i = 0; i < size; i++) {
+                       if (random) {
+                               addr = (u32 *)(STM32_DDR_BASE +
+                                      (rand() & (STM32_DDR_SIZE - 1) & ~0x3));
+                               data = rand();
+                       }
+                       writel(data, addr);
                }
-               writel(data, addr);
-               if (test_loop_end(&loop, 0, 1000))
+               if (test_loop_end(&loop, 0, 1))
                        break;
        }
-       sprintf(string, "0x%x: %x", (u32)addr, data);
+       if (random)
+               sprintf(string, "%d loops random", loop);
+       else
+               sprintf(string, "%d loops at 0x%x: %x", loop, (u32)addr, data);
 
        return TEST_PASSED;
 }