54746271f60fe24030da82a1b35aa6297901ed83
[project/bcm63xx/atf.git] / plat / xilinx / zynqmp / pm_service / pm_common.h
1 /*
2 * Copyright (c) 2013-2015, 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 <debug.h>
16 #include <stdint.h>
17 #include "pm_defs.h"
18
19 #define PAYLOAD_ARG_CNT 6U
20 #define PAYLOAD_ARG_SIZE 4U /* size in bytes */
21
22 #define ZYNQMP_TZ_VERSION_MAJOR 1
23 #define ZYNQMP_TZ_VERSION_MINOR 0
24 #define ZYNQMP_TZ_VERSION ((ZYNQMP_TZ_VERSION_MAJOR << 16) | \
25 ZYNQMP_TZ_VERSION_MINOR)
26
27 /**
28 * pm_ipi - struct for capturing IPI-channel specific info
29 * @apu_ipi_id APU IPI agent ID
30 * @pmu_ipi_id PMU Agent ID
31 * @buffer_base base address for payload buffer
32 */
33 struct pm_ipi {
34 const uint32_t apu_ipi_id;
35 const uint32_t pmu_ipi_id;
36 const uintptr_t buffer_base;
37 };
38
39 /**
40 * pm_proc - struct for capturing processor related info
41 * @node_id node-ID of the processor
42 * @pwrdn_mask cpu-specific mask to be used for power control register
43 * @ipi pointer to IPI channel structure
44 * (in APU all processors share one IPI channel)
45 */
46 struct pm_proc {
47 const enum pm_node_id node_id;
48 const unsigned int pwrdn_mask;
49 const struct pm_ipi *ipi;
50 };
51
52 const struct pm_proc *pm_get_proc(unsigned int cpuid);
53 const struct pm_proc *pm_get_proc_by_node(enum pm_node_id nid);
54
55 #endif /* PM_COMMON_H */