drivers/ddr/fsl: Fix typo in BIST test for DDR4
authorYork Sun <yorksun@freescale.com>
Fri, 6 Nov 2015 17:58:46 +0000 (09:58 -0800)
committerYork Sun <yorksun@freescale.com>
Mon, 30 Nov 2015 17:11:12 +0000 (09:11 -0800)
BIST test code has a typo, resulting the binding registers not
maintained as expected. This typo results BIST runs twice on
the covered memory.

Signed-off-by: York Sun <yorksun@freescale.com>
Reported-by: Shengzhou Liu <Shengzhou.Liu@freescale.com>
drivers/ddr/fsl/fsl_ddr_gen4.c

index 7881a20e622ce91eae572bb16bde1bba5e2310f2..1de7b72b4cd22e5e35aa79828eaa22c8aa57ec57 100644 (file)
@@ -423,16 +423,16 @@ step2:
        if (getenv_f("ddr_bist", buffer, CONFIG_SYS_CBSIZE) >= 0) {
                puts("Running BIST test. This will take a while...");
                cs0_config = ddr_in32(&ddr->cs0_config);
+               cs0_bnds = ddr_in32(&ddr->cs0_bnds);
+               cs1_bnds = ddr_in32(&ddr->cs1_bnds);
+               cs2_bnds = ddr_in32(&ddr->cs2_bnds);
+               cs3_bnds = ddr_in32(&ddr->cs3_bnds);
                if (cs0_config & CTLR_INTLV_MASK) {
-                       cs0_bnds = ddr_in32(&cs0_bnds);
-                       cs1_bnds = ddr_in32(&cs1_bnds);
-                       cs2_bnds = ddr_in32(&cs2_bnds);
-                       cs3_bnds = ddr_in32(&cs3_bnds);
                        /* set bnds to non-interleaving */
-                       ddr_out32(&cs0_bnds, (cs0_bnds & 0xfffefffe) >> 1);
-                       ddr_out32(&cs1_bnds, (cs1_bnds & 0xfffefffe) >> 1);
-                       ddr_out32(&cs2_bnds, (cs2_bnds & 0xfffefffe) >> 1);
-                       ddr_out32(&cs3_bnds, (cs3_bnds & 0xfffefffe) >> 1);
+                       ddr_out32(&ddr->cs0_bnds, (cs0_bnds & 0xfffefffe) >> 1);
+                       ddr_out32(&ddr->cs1_bnds, (cs1_bnds & 0xfffefffe) >> 1);
+                       ddr_out32(&ddr->cs2_bnds, (cs2_bnds & 0xfffefffe) >> 1);
+                       ddr_out32(&ddr->cs3_bnds, (cs3_bnds & 0xfffefffe) >> 1);
                }
                ddr_out32(&ddr->mtp1, BIST_PATTERN1);
                ddr_out32(&ddr->mtp2, BIST_PATTERN1);
@@ -469,10 +469,10 @@ step2:
 
                if (cs0_config & CTLR_INTLV_MASK) {
                        /* restore bnds registers */
-                       ddr_out32(&cs0_bnds, cs0_bnds);
-                       ddr_out32(&cs1_bnds, cs1_bnds);
-                       ddr_out32(&cs2_bnds, cs2_bnds);
-                       ddr_out32(&cs3_bnds, cs3_bnds);
+                       ddr_out32(&ddr->cs0_bnds, cs0_bnds);
+                       ddr_out32(&ddr->cs1_bnds, cs1_bnds);
+                       ddr_out32(&ddr->cs2_bnds, cs2_bnds);
+                       ddr_out32(&ddr->cs3_bnds, cs3_bnds);
                }
        }
 #endif