.globl platform_get_core_pos
.globl platform_mem_init
.globl platform_set_el0_stack
- .globl platform_spin_core
+ .globl psci_power_down_wfi
.globl plat_print_gic_regs
.globl plat_print_interconnect_regs
.globl plat_interrupt_type_to_line
func platform_mem_init
ret
-func platform_spin_core
+func psci_power_down_wfi
/*
* MPIDR_EL1 Fields:
* MPIDR[1:0] = AFF0_CPUID <- Core ID (0,1)
mov x1, #1
cbz x1, slave_exit
slave_exit:
+ str xzr, [x11]
br x0 /* branch to the given address */
.section .rodata.rev_err_str, "aS"
#include <stddef.h>
#include <string.h>
#include <platform_def.h>
+#include <psci.h>
#include "rpi3_def.h"
#include "rpi3_private.h"
#include "debug.h"
uint64_t bl31_getspin(void)
{
memset(&__spin_table[0], 0, sizeof(__spin_table));
- return(uint64_t)(platform_spin_core);
+ return(uint64_t)(psci_power_down_wfi);
}
/*******************************************************************************
(void)linear_id;
}
+void rpi3_affinst_off(unsigned int afflvl, unsigned int state)
+{
+ /* Determine if any platform actions need to be executed */
+ disable_mmu_el3();
+}
static void __dead2 rpi3_system_off(void)
{
static const plat_pm_ops_t rpi3_ops = {
.affinst_on = rpi3_affinst_on,
.affinst_on_finish = rpi3_affinst_on_finish,
- .affinst_off = NULL,
+ .affinst_off = rpi3_affinst_off,
.affinst_standby = NULL,
.affinst_suspend = NULL,
.affinst_suspend_finish = NULL,
extern void plat_gic_init(void);
extern uint64_t *bl31_get_spin_tbl_addr(void);
-extern void platform_spin_core(void);
#endif /* __RPI3_PRIVATE_H__ */
.globl psci_aff_on_finish_entry
.globl psci_aff_suspend_finish_entry
.globl psci_power_down_wfi
+ .weak psci_power_down_wfi
/* -----------------------------------------------------
* This cpu has been physically powered up. Depending