Add pattern for infinite test_read and test_write, that
allow to change the pattern to test without recompilation;
default pattern is 0xA5A5AA55.

Signed-off-by: Patrick Delaunay <[email protected]>
---

 drivers/ram/stm32mp1/stm32mp1_tests.c | 31 ++++++++++++++++++++-----------
 1 file changed, 20 insertions(+), 11 deletions(-)

diff --git a/drivers/ram/stm32mp1/stm32mp1_tests.c 
b/drivers/ram/stm32mp1/stm32mp1_tests.c
index f947b5d..581ee48 100644
--- a/drivers/ram/stm32mp1/stm32mp1_tests.c
+++ b/drivers/ram/stm32mp1/stm32mp1_tests.c
@@ -1250,13 +1250,18 @@ static enum test_result test_read(struct 
stm32mp1_ddrctl *ctl,
        if (get_addr(string, argc, argv, 0, (u32 *)&addr))
                return TEST_ERROR;
 
+       if (get_pattern(string, argc, argv, 1, &data, 0xA5A5AA55))
+               return TEST_ERROR;
+
        if ((u32)addr == ADDR_INVALID) {
-               printf("random ");
+               printf("running random\n");
                random = true;
+       } else {
+               printf("running at 0x%08x with pattern=0x%08x\n",
+                      (u32)addr, data);
+               writel(data, addr);
        }
 
-       printf("running at 0x%08x\n", (u32)addr);
-
        while (1) {
                for (i = 0; i < size; i++) {
                        if (random)
@@ -1287,7 +1292,7 @@ static enum test_result test_write(struct stm32mp1_ddrctl 
*ctl,
                                   char *string, int argc, char *argv[])
 {
        u32 *addr;
-       u32 data = 0xA5A5AA55;
+       u32 data;
        u32 loop = 0;
        int i, size = 1024 * 1024;
        bool random = false;
@@ -1295,13 +1300,17 @@ static enum test_result test_write(struct 
stm32mp1_ddrctl *ctl,
        if (get_addr(string, argc, argv, 0, (u32 *)&addr))
                return TEST_ERROR;
 
+       if (get_pattern(string, argc, argv, 1, &data, 0xA5A5AA55))
+               return TEST_ERROR;
+
        if ((u32)addr == ADDR_INVALID) {
-               printf("random ");
+               printf("running random\n");
                random = true;
+       } else {
+               printf("running at 0x%08x with pattern 0x%08x\n",
+                      (u32)addr, data);
        }
 
-       printf("running at 0x%08x\n", (u32)addr);
-
        while (1) {
                for (i = 0; i < size; i++) {
                        if (random) {
@@ -1435,10 +1444,10 @@ const struct test_desc test[] = {
         3
        },
        /* need to the the 2 last one (infinite) : skipped for test all */
-       {test_read, "infinite read", "[addr]",
-        "basic test : infinite read access", 1},
-       {test_write, "infinite write", "[addr]",
-        "basic test : infinite write access", 1},
+       {test_read, "infinite read", "[addr] [pattern]",
+        "basic test : infinite read access (random: addr=0xFFFFFFFF)", 2},
+       {test_write, "infinite write", "[addr] [pattern]",
+        "basic test : infinite write access (random: addr=0xFFFFFFFF)", 2},
 };
 
 const int test_nb = ARRAY_SIZE(test);
-- 
2.7.4

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

Reply via email to