blob: ef5d3d1d6590b0f6d7b04c79587f7b0cd066abbd [file] [log] [blame]
Juan Castillo4dc4a472014-08-12 11:17:06 +01001/*
Antonio Nino Diaze3962d02017-02-16 16:17:19 +00002 * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
Juan Castillo4dc4a472014-08-12 11:17:06 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Juan Castillo4dc4a472014-08-12 11:17:06 +01005 */
6
Juan Castillo4dc4a472014-08-12 11:17:06 +01007#include <arch_helpers.h>
Soby Mathew61e615b2015-01-15 11:49:49 +00008#include <assert.h>
Antonio Nino Diaze3962d02017-02-16 16:17:19 +00009#include <console.h>
Juan Castillo4dc4a472014-08-12 11:17:06 +010010#include <debug.h>
11#include <platform.h>
Isla Mitchell99305012017-07-11 14:54:08 +010012#include <stddef.h>
Juan Castillo4dc4a472014-08-12 11:17:06 +010013#include "psci_private.h"
14
Etienne Carriere3fdf5f32017-06-07 16:42:42 +020015void __dead2 psci_system_off(void)
Juan Castillo4dc4a472014-08-12 11:17:06 +010016{
Soby Mathew981487a2015-07-13 14:10:57 +010017 psci_print_power_domain_map();
Juan Castillo4dc4a472014-08-12 11:17:06 +010018
Soby Mathew61e615b2015-01-15 11:49:49 +000019 assert(psci_plat_pm_ops->system_off);
20
Juan Castillo4dc4a472014-08-12 11:17:06 +010021 /* Notify the Secure Payload Dispatcher */
22 if (psci_spd_pm && psci_spd_pm->svc_system_off) {
23 psci_spd_pm->svc_system_off();
24 }
25
Antonio Nino Diaze3962d02017-02-16 16:17:19 +000026 console_flush();
27
Juan Castillo4dc4a472014-08-12 11:17:06 +010028 /* Call the platform specific hook */
29 psci_plat_pm_ops->system_off();
30
31 /* This function does not return. We should never get here */
32}
33
Etienne Carriere3fdf5f32017-06-07 16:42:42 +020034void __dead2 psci_system_reset(void)
Juan Castillo4dc4a472014-08-12 11:17:06 +010035{
Soby Mathew981487a2015-07-13 14:10:57 +010036 psci_print_power_domain_map();
Juan Castillo4dc4a472014-08-12 11:17:06 +010037
Soby Mathew61e615b2015-01-15 11:49:49 +000038 assert(psci_plat_pm_ops->system_reset);
39
Juan Castillo4dc4a472014-08-12 11:17:06 +010040 /* Notify the Secure Payload Dispatcher */
41 if (psci_spd_pm && psci_spd_pm->svc_system_reset) {
42 psci_spd_pm->svc_system_reset();
43 }
44
Antonio Nino Diaze3962d02017-02-16 16:17:19 +000045 console_flush();
46
Juan Castillo4dc4a472014-08-12 11:17:06 +010047 /* Call the platform specific hook */
48 psci_plat_pm_ops->system_reset();
49
50 /* This function does not return. We should never get here */
51}