mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
arm: cpu: armv8: add support for arm psci reset2.
Current U-Boot has only support for psci reset. Adding support for arm psci reset2 allows passing of reset level and other platform sepcific parameters like strap settings to lowlevel psci implementation. Signed-off-by: Rajesh Ravi <rajesh.ravi@broadcom.com> Signed-off-by: Vladimir Olovyannikov <vladimir.olovyannikov@broadcom.com>
This commit is contained in:
parent
0bc4356dea
commit
41acbc53f4
3 changed files with 21 additions and 0 deletions
|
@ -98,6 +98,22 @@ void __noreturn psci_system_reset(void)
|
|||
;
|
||||
}
|
||||
|
||||
void __noreturn psci_system_reset2(u32 reset_level, u32 cookie)
|
||||
{
|
||||
struct pt_regs regs;
|
||||
|
||||
regs.regs[0] = ARM_PSCI_0_2_FN64_SYSTEM_RESET2;
|
||||
regs.regs[1] = PSCI_RESET2_TYPE_VENDOR | reset_level;
|
||||
regs.regs[2] = cookie;
|
||||
if (use_smc_for_psci)
|
||||
smc_call(®s);
|
||||
else
|
||||
hvc_call(®s);
|
||||
|
||||
while (1)
|
||||
;
|
||||
}
|
||||
|
||||
void __noreturn psci_system_off(void)
|
||||
{
|
||||
struct pt_regs regs;
|
||||
|
|
|
@ -64,6 +64,7 @@
|
|||
#define ARM_PSCI_0_2_FN64_AFFINITY_INFO ARM_PSCI_0_2_FN64(4)
|
||||
#define ARM_PSCI_0_2_FN64_MIGRATE ARM_PSCI_0_2_FN64(5)
|
||||
#define ARM_PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU ARM_PSCI_0_2_FN64(7)
|
||||
#define ARM_PSCI_0_2_FN64_SYSTEM_RESET2 ARM_PSCI_0_2_FN64(18)
|
||||
|
||||
/* PSCI 1.0 interface */
|
||||
#define ARM_PSCI_1_0_FN_PSCI_FEATURES ARM_PSCI_0_2_FN(10)
|
||||
|
@ -90,6 +91,9 @@
|
|||
#define PSCI_AFFINITY_LEVEL_OFF 1
|
||||
#define PSCI_AFFINITY_LEVEL_ON_PENDING 2
|
||||
|
||||
#define PSCI_RESET2_TYPE_VENDOR_SHIFT 31
|
||||
#define PSCI_RESET2_TYPE_VENDOR BIT(PSCI_RESET2_TYPE_VENDOR_SHIFT)
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/types.h>
|
||||
|
||||
|
|
|
@ -254,6 +254,7 @@ void mmu_change_region_attr(phys_addr_t start, size_t size, u64 attrs);
|
|||
void smc_call(struct pt_regs *args);
|
||||
|
||||
void __noreturn psci_system_reset(void);
|
||||
void __noreturn psci_system_reset2(u32 reset_level, u32 cookie);
|
||||
void __noreturn psci_system_off(void);
|
||||
|
||||
#ifdef CONFIG_ARMV8_PSCI
|
||||
|
|
Loading…
Add table
Reference in a new issue