mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-11-04 02:11:25 +01:00 
			
		
		
		
	This patch adds support for MediaTek MT7620 SoC. All files are dedicated for u-boot. Reviewed-by: Stefan Roese <sr@denx.de> Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
		
			
				
	
	
		
			54 lines
		
	
	
		
			1003 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1003 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0 */
 | 
						|
/*
 | 
						|
 * Copyright (C) 2020 MediaTek Inc.
 | 
						|
 *
 | 
						|
 * Author:  Weijie Gao <weijie.gao@mediatek.com>
 | 
						|
 */
 | 
						|
 | 
						|
#include <config.h>
 | 
						|
#include <asm-offsets.h>
 | 
						|
#include <asm/regdef.h>
 | 
						|
#include <asm/asm.h>
 | 
						|
 | 
						|
	.set noreorder
 | 
						|
 | 
						|
NESTED(lowlevel_init, 0, ra)
 | 
						|
	/* Save ra and do real lowlevel initialization */
 | 
						|
	move	s0, ra
 | 
						|
 | 
						|
	/*
 | 
						|
	* Use SRAM from 802.11n MAC/BBP, 16KiB (0x10184000 ~ 0x10187fff)
 | 
						|
	* NOTE: non-word operations may fail in this SRAM.
 | 
						|
	* Use it as stack only for CPU/DRAM init which only has word operations.
 | 
						|
	*/
 | 
						|
	PTR_LI	sp, 0xb0187f00
 | 
						|
 | 
						|
	/* We still need a temporary gd for udelay */
 | 
						|
	PTR_SUBU \
 | 
						|
		sp, sp, GD_SIZE		# reserve space for gd
 | 
						|
	li	t0, -16
 | 
						|
	and	sp, sp, t0		# force 16 byte alignment
 | 
						|
	move	k0, sp			# save gd pointer
 | 
						|
 | 
						|
	move	fp, sp
 | 
						|
 | 
						|
	/* Clear gd */
 | 
						|
	move	t0, k0
 | 
						|
1:
 | 
						|
	PTR_S	zero, 0(t0)
 | 
						|
	PTR_ADDIU t0, PTRSIZE
 | 
						|
	blt	t0, t1, 1b
 | 
						|
	 nop
 | 
						|
 | 
						|
	/* Do CPU & DRAM initialization */
 | 
						|
	PTR_LA	t9, mt7620_init
 | 
						|
	jalr	t9
 | 
						|
	 nop
 | 
						|
 | 
						|
	/* Restore ra */
 | 
						|
	move	ra, s0
 | 
						|
 | 
						|
	jr	ra
 | 
						|
	 nop
 | 
						|
	END(lowlevel_init)
 |