blob: a243671343493fa3373e0a8168b2adc98fc6ec2d [file] [log] [blame]
Soby Mathewfeac8fc2015-09-29 15:47:16 +01001/*
Roberto Vargas2b36b152018-02-12 12:36:17 +00002 * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
Soby Mathewfeac8fc2015-09-29 15:47:16 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Soby Mathewfeac8fc2015-09-29 15:47:16 +01005 */
6
7#ifndef __CSS_PM_H__
8#define __CSS_PM_H__
9
10#include <cdefs.h>
11#include <psci.h>
Antonio Nino Diaz4b32e622018-08-16 16:52:57 +010012#include <stdint.h>
Soby Mathewfeac8fc2015-09-29 15:47:16 +010013
Soby Mathew7a3b5eb2016-12-09 15:23:08 +000014/* System power domain at level 2, as currently implemented by CSS platforms */
15#define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL2
16
Soby Mathew200fffd2016-10-21 11:34:59 +010017/* Macros to read the CSS power domain state */
18#define CSS_CORE_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL0]
19#define CSS_CLUSTER_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL1]
Nariman Poushincd956262018-05-01 09:28:40 +010020
21static inline unsigned int css_system_pwr_state(const psci_power_state_t *state)
22{
23#if (PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL)
24 return state->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL];
25#else
26 return 0;
27#endif
28}
Soby Mathew200fffd2016-10-21 11:34:59 +010029
Soby Mathewfeac8fc2015-09-29 15:47:16 +010030int css_pwr_domain_on(u_register_t mpidr);
31void css_pwr_domain_on_finish(const psci_power_state_t *target_state);
32void css_pwr_domain_off(const psci_power_state_t *target_state);
33void css_pwr_domain_suspend(const psci_power_state_t *target_state);
34void css_pwr_domain_suspend_finish(
35 const psci_power_state_t *target_state);
36void __dead2 css_system_off(void);
37void __dead2 css_system_reset(void);
38void css_cpu_standby(plat_local_state_t cpu_state);
Soby Mathew61e8d0b2015-10-12 17:32:29 +010039void css_get_sys_suspend_power_state(psci_power_state_t *req_state);
Jeenu Viswambharan9cc4fc02016-08-04 09:43:15 +010040int css_node_hw_state(u_register_t mpidr, unsigned int power_level);
Soby Mathewfeac8fc2015-09-29 15:47:16 +010041
Roberto Vargas2b36b152018-02-12 12:36:17 +000042/*
43 * This mapping array has to be exported by the platform. Each element at
44 * a given index maps that core to an SCMI power domain.
45 */
46extern const uint32_t plat_css_core_pos_to_scmi_dmn_id_map[];
47
Soby Mathewfeac8fc2015-09-29 15:47:16 +010048#endif /* __CSS_PM_H__ */