blob: f5237919f23df32d23adc9638b3a892ef5bc8ba2 [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
7#include <stddef.h>
8#include <arch_helpers.h>
Soby Mathew61e615b2015-01-15 11:49:49 +00009#include <assert.h>
Antonio Nino Diaze3962d02017-02-16 16:17:19 +000010#include <console.h>
Juan Castillo4dc4a472014-08-12 11:17:06 +010011#include <debug.h>
12#include <platform.h>
13#include "psci_private.h"
14
15void psci_system_off(void)
16{
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
34void psci_system_reset(void)
35{
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}