diff options
Diffstat (limited to 'board/freescale/ls1043ardb/ls1043ardb.c')
-rw-r--r-- | board/freescale/ls1043ardb/ls1043ardb.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/board/freescale/ls1043ardb/ls1043ardb.c b/board/freescale/ls1043ardb/ls1043ardb.c index 51228bcf79..5a740a0dfa 100644 --- a/board/freescale/ls1043ardb/ls1043ardb.c +++ b/board/freescale/ls1043ardb/ls1043ardb.c @@ -363,7 +363,25 @@ void nand_fixup() csor = (csor & ~(CSOR_NAND_SPRZ_MASK)) | CSOR_NAND_SPRZ_224; #ifdef CONFIG_TFABOOT - set_ifc_csor(IFC_CS1, csor); + enum boot_src src = get_boot_src(); + u8 cfg_rcw_src1, cfg_rcw_src2; + u16 cfg_rcw_src; + cfg_rcw_src1 = CPLD_READ(cfg_rcw_src1); + cfg_rcw_src2 = CPLD_READ(cfg_rcw_src2); + cpld_rev_bit(&cfg_rcw_src1); + cfg_rcw_src = cfg_rcw_src1; + cfg_rcw_src = (cfg_rcw_src << 1) | cfg_rcw_src2; + + if (cfg_rcw_src == 0x25) + set_ifc_csor(IFC_CS1, csor); + else if (cfg_rcw_src == 0x118) + set_ifc_csor(IFC_CS0, csor); + else { + if (src == BOOT_SOURCE_SD_MMC) + set_ifc_csor(IFC_CS1, csor); + else + printf("Invalid setting\n"); + } #else #ifdef CONFIG_NAND_BOOT set_ifc_csor(IFC_CS0, csor); |