diff options
author | Peng Fan <Peng.Fan@freescale.com> | 2015-10-23 02:13:04 (GMT) |
---|---|---|
committer | Stefano Babic <sbabic@denx.de> | 2015-11-12 16:31:16 (GMT) |
commit | 7de4703691498e18c58f375d724818e4d0db6223 (patch) | |
tree | 080824ec20f880eda1c4500ee33a11b14107aca0 /arch/arm/cpu/armv7/mx7/psci.S | |
parent | d47cb0b61aa9e268f140455b2bc4421ae9e0b4bc (diff) | |
download | u-boot-fsl-qoriq-7de4703691498e18c58f375d724818e4d0db6223.tar.xz |
mx7: psci: add basic psci support
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>
Diffstat (limited to 'arch/arm/cpu/armv7/mx7/psci.S')
-rw-r--r-- | arch/arm/cpu/armv7/mx7/psci.S | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/mx7/psci.S b/arch/arm/cpu/armv7/mx7/psci.S new file mode 100644 index 0000000..34c6ab3 --- /dev/null +++ b/arch/arm/cpu/armv7/mx7/psci.S @@ -0,0 +1,54 @@ +#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 |