diff options
Diffstat (limited to 'board/freescale/mx50_rdp')
-rw-r--r-- | board/freescale/mx50_rdp/flash_header.S | 13 | ||||
-rw-r--r-- | board/freescale/mx50_rdp/mx50_rdp.c | 13 |
2 files changed, 22 insertions, 4 deletions
diff --git a/board/freescale/mx50_rdp/flash_header.S b/board/freescale/mx50_rdp/flash_header.S index 38ad560..530a079 100644 --- a/board/freescale/mx50_rdp/flash_header.S +++ b/board/freescale/mx50_rdp/flash_header.S @@ -576,15 +576,22 @@ delay1: * Final image size on exit. * boot_data - Initial @ref ivt Boot Data load address. */ + + ldr r0, =ROM_SI_REV + ldr r1, [r0] + cmp r1, #0x11 + adr r0, DDR_DEST_ADDR adr r1, COPY_SIZE adr r2, BOOT_DATA before_calling_rom___pu_irom_hwcnfg_setup: mov r3, #0x2a00 - add r3, r3, #0x19 - cmp r4, #0xF8000000 - blxhi r3 // This address might change in future ROM versions + /* Different ROM address for TO 1.0 & TO 1.1.1 */ + addeq r3, r3, #0xad + addne r3, r3, #0x19 + cmp r4, #0xf8000000 + blxhi r3 after_calling_rom___pu_irom_hwcnfg_setup: pop {r0-r4, lr} diff --git a/board/freescale/mx50_rdp/mx50_rdp.c b/board/freescale/mx50_rdp/mx50_rdp.c index 0235441..924c7e6 100644 --- a/board/freescale/mx50_rdp/mx50_rdp.c +++ b/board/freescale/mx50_rdp/mx50_rdp.c @@ -112,7 +112,18 @@ u32 get_board_rev(void) static inline void setup_soc_rev(void) { - system_rev = 0x50000 | CHIP_REV_1_0; + int reg = __REG(ROM_SI_REV); + + switch (reg) { + case 0x10: + system_rev = 0x50000 | CHIP_REV_1_0; + break; + case 0x11: + system_rev = 0x50000 | CHIP_REV_1_1_1; + break; + default: + system_rev = 0x50000 | CHIP_REV_1_1_1; + } } static inline void setup_board_rev(int rev) |