1 /* 2 * Copyright (c) 2015-2020, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef CSS_PM_H 8 #define CSS_PM_H 9 10 #include <cdefs.h> 11 #include <stdint.h> 12 13 #include <lib/psci/psci.h> 14 15 /* Macros to read the CSS power domain state */ 16 #define CSS_CORE_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL0] 17 #define CSS_CLUSTER_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL1] 18 css_system_pwr_state(const psci_power_state_t * state)19static inline unsigned int css_system_pwr_state(const psci_power_state_t *state) 20 { 21 #if (PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL) 22 return state->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL]; 23 #else 24 return 0; 25 #endif 26 } 27 28 int css_pwr_domain_on(u_register_t mpidr); 29 void css_pwr_domain_on_finish(const psci_power_state_t *target_state); 30 void css_pwr_domain_on_finish_late(const psci_power_state_t *target_state); 31 void css_pwr_domain_off(const psci_power_state_t *target_state); 32 void css_pwr_domain_suspend(const psci_power_state_t *target_state); 33 void css_pwr_domain_suspend_finish( 34 const psci_power_state_t *target_state); 35 void __dead2 css_system_off(void); 36 void __dead2 css_system_reset(void); 37 void css_cpu_standby(plat_local_state_t cpu_state); 38 void css_get_sys_suspend_power_state(psci_power_state_t *req_state); 39 int css_node_hw_state(u_register_t mpidr, unsigned int power_level); 40 41 /* 42 * This mapping array has to be exported by the platform. Each element at 43 * a given index maps that core to an SCMI power domain. 44 */ 45 extern const uint32_t plat_css_core_pos_to_scmi_dmn_id_map[]; 46 47 #define SCMI_DOMAIN_ID_MASK U(0xFFFF) 48 #define SCMI_CHANNEL_ID_MASK U(0xFFFF) 49 #define SCMI_CHANNEL_ID_SHIFT U(16) 50 51 #define SET_SCMI_CHANNEL_ID(n) (((n) & SCMI_CHANNEL_ID_MASK) << \ 52 SCMI_CHANNEL_ID_SHIFT) 53 #define SET_SCMI_DOMAIN_ID(n) ((n) & SCMI_DOMAIN_ID_MASK) 54 #define GET_SCMI_CHANNEL_ID(n) (((n) >> SCMI_CHANNEL_ID_SHIFT) & \ 55 SCMI_CHANNEL_ID_MASK) 56 #define GET_SCMI_DOMAIN_ID(n) ((n) & SCMI_DOMAIN_ID_MASK) 57 58 #endif /* CSS_PM_H */ 59