mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-31 03:58:17 +00:00 
			
		
		
		
	1. add basic psci support for imx7 chip. 2. support cpu_on and cpu_off. 3. switch to non-secure mode when boot linux kernel. 4. set csu allow accessing all peripherial register in non-secure mode. Signed-off-by: Frank Li <Frank.Li@freescale.com> Signed-off-by: Peng Fan <Peng.Fan@freescale.com> Cc: Stefano Babic <sbabic@denx.de> Cc: Fabio Estevam <fabio.estevam@freescale.com>
		
			
				
	
	
		
			55 lines
		
	
	
		
			703 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			703 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #include <config.h>
 | |
| #include <linux/linkage.h>
 | |
| 
 | |
| #include <asm/armv7.h>
 | |
| #include <asm/arch-armv7/generictimer.h>
 | |
| #include <asm/psci.h>
 | |
| 
 | |
| 	.pushsection ._secure.text, "ax"
 | |
| 
 | |
| 	.arch_extension sec
 | |
| 
 | |
| 	@ r1 = target CPU
 | |
| 	@ r2 = target PC
 | |
| 
 | |
| .globl	psci_arch_init
 | |
| psci_arch_init:
 | |
| 	mov	r6, lr
 | |
| 
 | |
| 	bl	psci_get_cpu_id
 | |
| 	bl	psci_get_cpu_stack_top
 | |
| 	mov	sp, r0
 | |
| 
 | |
| 	bx	r6
 | |
| 
 | |
| 	@ r1 = target CPU
 | |
| 	@ r2 = target PC
 | |
| 
 | |
| .globl psci_cpu_on
 | |
| psci_cpu_on:
 | |
| 	push	{lr}
 | |
| 
 | |
| 	mov	r0, r1
 | |
| 	bl	psci_get_cpu_stack_top
 | |
| 	str	r2, [r0]
 | |
| 	dsb
 | |
| 
 | |
| 	ldr	r2, =psci_cpu_entry
 | |
| 	bl	imx_cpu_on
 | |
| 
 | |
| 	pop	{pc}
 | |
| 
 | |
| .globl psci_cpu_off
 | |
| psci_cpu_off:
 | |
| 
 | |
| 	bl	psci_cpu_off_common
 | |
| 	bl	psci_get_cpu_id
 | |
| 	bl	imx_cpu_off
 | |
| 
 | |
| 1: 	wfi
 | |
| 	b 1b
 | |
| 
 | |
| 	.globl psci_text_end
 | |
| psci_text_end:
 | |
| 	.popsection
 |