RK3588 bootrom function
if (mpidr_el1 & 0xffff) != 0 {
((uint32_t)0xffff00e0)[0] = 1;
while (((uint32_t)0xffff00e0)[0] != 0xdeadbeaf) {
__asm__("wfe");
}
typedef core_entry();
core_entry *entry = (core_entry *)(uintptr_t)(((uint32_t)0xffff00e8)[0]);
entry();
}
boot();
boot()
The main boot function does a lot of stuff, mostly with undocumented mmio registers: - ddrphy - cru - crypto - saradc
After that it runs through a loop bringing up and trying various storage devices to find a bootable medium. 1. FSPI 0 2. FSPI 1 3. FSPI 2 4. FSPI 3 5. FSPI 4 6. FSPI 6 7. eMMC 8. sdmmc
TODO: Document iomux settings for all these devices
If no bootable medium is found, it will bring up a dwc3 gadget on USB3OTG_0.