summaryrefslogtreecommitdiff
path: root/board/freescale/ls1043ardb/ls1043ardb.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/freescale/ls1043ardb/ls1043ardb.c')
-rw-r--r--board/freescale/ls1043ardb/ls1043ardb.c20
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);