1 /* 2 * Copyright (c) 2013-2018, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 /* 8 * Contains definitions of commonly used macros and data types needed 9 * for PU Power Management. This file should be common for all PU's. 10 */ 11 12 #ifndef PM_COMMON_H 13 #define PM_COMMON_H 14 15 #include <stdint.h> 16 #include <plat_pm_common.h> 17 18 #if IPI_CRC_CHECK 19 #define PAYLOAD_ARG_CNT 8U 20 #define IPI_W0_TO_W6_SIZE 28U 21 #define PAYLOAD_CRC_POS 7U 22 #define CRC_INIT_VALUE 0x4F4EU 23 #define CRC_ORDER 16U 24 #define CRC_POLYNOM 0x8005U 25 #else 26 #define PAYLOAD_ARG_CNT 6U 27 #endif 28 #define PAYLOAD_ARG_SIZE 4U /* size in bytes */ 29 30 #define TZ_VERSION_MAJOR 1 31 #define TZ_VERSION_MINOR 0 32 #define TZ_VERSION ((TZ_VERSION_MAJOR << 16) | \ 33 TZ_VERSION_MINOR) 34 35 /** 36 * pm_ipi - struct for capturing IPI-channel specific info 37 * @local_ipi_id Local IPI agent ID 38 * @remote_ipi_id Remote IPI Agent ID 39 * @buffer_base base address for payload buffer 40 */ 41 struct pm_ipi { 42 const uint32_t local_ipi_id; 43 const uint32_t remote_ipi_id; 44 const uintptr_t buffer_base; 45 }; 46 47 /** 48 * pm_proc - struct for capturing processor related info 49 * @node_id node-ID of the processor 50 * @pwrdn_mask cpu-specific mask to be used for power control register 51 * @ipi pointer to IPI channel structure 52 * (in APU all processors share one IPI channel) 53 */ 54 struct pm_proc { 55 const uint32_t node_id; 56 const uint32_t pwrdn_mask; 57 const struct pm_ipi *ipi; 58 }; 59 60 const struct pm_proc *pm_get_proc(uint32_t cpuid); 61 62 #endif /* PM_COMMON_H */ 63