1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2020 MediaTek Inc. 4 * 5 * Author: Weijie Gao <weijie.gao@mediatek.com> 6 */ 7 8#include <config.h> 9#include <asm-offsets.h> 10#include <asm/regdef.h> 11#include <asm/asm.h> 12 13 .set noreorder 14 15NESTED(lowlevel_init, 0, ra) 16 /* Save ra and do real lowlevel initialization */ 17 move s0, ra 18 19 /* 20 * Use SRAM from 802.11n MAC/BBP, 16KiB (0x10184000 ~ 0x10187fff) 21 * NOTE: non-word operations may fail in this SRAM. 22 * Use it as stack only for CPU/DRAM init which only has word operations. 23 */ 24 PTR_LI sp, 0xb0187f00 25 26 /* We still need a temporary gd for udelay */ 27 PTR_SUBU \ 28 sp, sp, GD_SIZE # reserve space for gd 29 li t0, -16 30 and sp, sp, t0 # force 16 byte alignment 31 move k0, sp # save gd pointer 32 33 move fp, sp 34 35 /* Clear gd */ 36 move t0, k0 371: 38 PTR_S zero, 0(t0) 39 PTR_ADDIU t0, PTRSIZE 40 blt t0, t1, 1b 41 nop 42 43 /* Do CPU & DRAM initialization */ 44 PTR_LA t9, mt7620_init 45 jalr t9 46 nop 47 48 /* Restore ra */ 49 move ra, s0 50 51 jr ra 52 nop 53 END(lowlevel_init) 54