board/t104xrdb: Conditional workaround of errata A-008044
authorPrabhakar Kushwaha <prabhakar@freescale.com>
Wed, 29 Oct 2014 17:03:55 +0000 (22:33 +0530)
committerYork Sun <yorksun@freescale.com>
Fri, 5 Dec 2014 16:06:09 +0000 (08:06 -0800)
Workaround of Errata A-008044 was implemented without errata number and it is
enabled by default. Errata A-008044 is only valid for T1040 Rev 1.0.

So put errata number and make it conditional.

Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
arch/powerpc/cpu/mpc85xx/cmd_errata.c
board/freescale/t104xrdb/spl.c

index b134096f901d2ac3ba25cc8ce62c9b349ac19cba..f9085a63e1cd861664d075ff2fcb558effe8deac 100644 (file)
@@ -315,7 +315,8 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 #endif
 #if defined(CONFIG_SYS_FSL_ERRATUM_A008044) && \
        defined(CONFIG_A008044_WORKAROUND)
-       puts("Work-around for Erratum A-008044 enabled\n");
+       if (IS_SVR_REV(svr, 1, 0))
+               puts("Work-around for Erratum A-008044 enabled\n");
 #endif
        return 0;
 }
index 75d9d9c5fa1714644584d9f58b74c11e98b976b2..e394b121d281cb8e153cdbcba982c65c075274ca 100644 (file)
@@ -36,18 +36,24 @@ void board_init_f(ulong bootflag)
        u32 plat_ratio, sys_clk, uart_clk;
 #if defined(CONFIG_SPL_NAND_BOOT) && defined(CONFIG_A008044_WORKAROUND)
        u32 porsr1, pinctl;
+       u32 svr = get_svr();
 #endif
        ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
 
 #if defined(CONFIG_SPL_NAND_BOOT) && defined(CONFIG_A008044_WORKAROUND)
-       /*
-        * There is T1040 SoC issue where NOR, FPGA are inaccessible during
-        * NAND boot because IFC signals > IFC_AD7 are not enabled.
-        * This workaround changes RCW source to make all signals enabled.
-        */
-       porsr1 = in_be32(&gur->porsr1);
-       pinctl = ((porsr1 & ~(FSL_CORENET_CCSR_PORSR1_RCW_MASK)) | 0x24800000);
-       out_be32((unsigned int *)(CONFIG_SYS_DCSRBAR + 0x20000), pinctl);
+       if (IS_SVR_REV(svr, 1, 0)) {
+               /*
+                * There is T1040 SoC issue where NOR, FPGA are inaccessible
+                * during NAND boot because IFC signals > IFC_AD7 are not
+                * enabled. This workaround changes RCW source to make all
+                * signals enabled.
+                */
+               porsr1 = in_be32(&gur->porsr1);
+               pinctl = ((porsr1 & ~(FSL_CORENET_CCSR_PORSR1_RCW_MASK))
+                         | 0x24800000);
+               out_be32((unsigned int *)(CONFIG_SYS_DCSRBAR + 0x20000),
+                        pinctl);
+       }
 #endif
 
        /* Memcpy existing GD at CONFIG_SPL_GD_ADDR */