diff options
Diffstat (limited to 'plat/hisilicon/hikey960/hikey960_pm.c')
-rw-r--r-- | plat/hisilicon/hikey960/hikey960_pm.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/plat/hisilicon/hikey960/hikey960_pm.c b/plat/hisilicon/hikey960/hikey960_pm.c index ede893ecb..f836508d5 100644 --- a/plat/hisilicon/hikey960/hikey960_pm.c +++ b/plat/hisilicon/hikey960/hikey960_pm.c @@ -11,6 +11,7 @@ #include <drivers/arm/cci.h> #include <drivers/arm/gicv2.h> #include <drivers/arm/pl011.h> +#include <drivers/arm/pl061_gpio.h> #include <drivers/delay_timer.h> #include <lib/mmio.h> #include <lib/psci/psci.h> @@ -33,7 +34,7 @@ #define AXI_CONF_BASE 0x820 static unsigned int uart_base; -static console_pl011_t console; +static console_t console; static uintptr_t hikey960_sec_entrypoint; static void hikey960_pwr_domain_standby(plat_local_state_t cpu_state) @@ -116,6 +117,13 @@ void hikey960_pwr_domain_off(const psci_power_state_t *target_state) } } +static void __dead2 hikey960_system_off(void) +{ + gpio_set_direction(176, GPIO_DIR_OUT); + gpio_set_value(176, GPIO_LEVEL_LOW); + panic(); +} + static void __dead2 hikey960_system_reset(void) { dsb(); @@ -293,7 +301,7 @@ static const plat_psci_ops_t hikey960_psci_ops = { .pwr_domain_off = hikey960_pwr_domain_off, .pwr_domain_suspend = hikey960_pwr_domain_suspend, .pwr_domain_suspend_finish = hikey960_pwr_domain_suspend_finish, - .system_off = NULL, + .system_off = hikey960_system_off, .system_reset = hikey960_system_reset, .validate_power_state = hikey960_validate_power_state, .validate_ns_entrypoint = hikey960_validate_ns_entrypoint, |