| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
- /*
- * Copyright (c) 2018 Microsemi Corporation
- */
- #include <asm/asm.h>
- #include <asm/regdef.h>
- .set noreorder
- .extern vcoreiii_tlb_init
- .extern vcoreiii_ddr_init
- #ifdef CONFIG_SOC_LUTON
- .extern pll_init
- #endif
- LEAF(lowlevel_init)
- /*
- * As we have no stack yet, we can assume the restricted
- * luxury of the sX-registers without saving them
- */
- /* Modify ra/s0 such we return to physical NOR location */
- li t0, 0x0fffffff
- li t1, CONFIG_TEXT_BASE
- and s0, ra, t0
- add s0, s0, t1
- jal vcoreiii_tlb_init
- nop
- #ifdef CONFIG_SOC_LUTON
- jal pll_init
- nop
- #endif
- /* Initialize DDR controller to enable stack/gd/heap */
- 0:
- jal vcoreiii_ddr_init
- nop
- bnez v0, 0b /* Retry on error */
- nop
- jr s0
- nop
- END(lowlevel_init)
|