Skip to content

Commit f88e5fe

Browse files
committed
fel: a523: change buffer and load addresses
The SRAM situation on the A523 family of SoCs is a bit more involved: while there is indeed a large 128KB SRAM region at offset 0x20000, this is labeled as "MCU0 SRAM" and is apparently switchable, to the RISC-V MCU. It is unclear at this point whether the MCU will take posession of this region at some point, and whether it might not be available when rebooting or doing some suspend/resume operations. The BootROM doesn't use this SRAM, and actually loads the initial boot0/SPL payload from MMC to 0x44000, so at an 16K offset into SRAM A2. To keep the SPL compatible between MMC/SPI and FEL loads (we cannot be position independent), move the SPL address to this 0x44000. This means we do need a swap buffer, since the FEL stack is right on early in this region. The region after 0x5c000 seem to be used by the BROM, so we cannot use that for buffers, without further limiting the FEL payload. To leave the MCU0 SRAM alone, put those buffers in the 16K *before* the new SPL load address. Since U-Boot will use 0x44000 for the initial SPL stack, put the thunk buffer at the beginning, where it should not be overwritten. The scratch address goes at the usual 4K offset of the SPL address, where it is located just before the FEL stack. Signed-off-by: Andre Przywara <[email protected]>
1 parent f0834e4 commit f88e5fe

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

soc_info.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ sram_swap_buffers f1c100s_sram_swap_buffers[] = {
180180
{ .size = 0 } /* End of the table */
181181
};
182182

183+
sram_swap_buffers a523_sram_swap_buffers[] = {
184+
{ .buf1 = 0x45000, .buf2 = 0x40200, .size = 0x0400 },
185+
{ .size = 0 } /* End of the table */
186+
};
183187
/*
184188
* Some SoCs put both stacks, BSS and data segments at the end of a comparably
185189
* large SRAM, so we don't need to move anything around.
@@ -608,11 +612,11 @@ soc_info_t soc_info_table[] = {
608612
},{
609613
.soc_id = 0x1890, /* Allwinner A523 */
610614
.name = "A523",
611-
.spl_addr = 0x20000,
612-
.scratch_addr = 0x21000,
613-
.thunk_addr = 0x43e00, .thunk_size = 0x200,
614-
.swap_buffers = no_sram_swap_buffers,
615-
.sram_size = 144 * 1024,
615+
.spl_addr = 0x44000,
616+
.scratch_addr = 0x45000,
617+
.thunk_addr = 0x40000, .thunk_size = 0x200,
618+
.swap_buffers = a523_sram_swap_buffers,
619+
.sram_size = 96 * 1024,
616620
.sid_base = 0x03006000,
617621
.sid_offset = 0x200,
618622
.sid_sections = generic_2k_sid_maps,

0 commit comments

Comments
 (0)