blob: 4d03bc0f6faa6c97b4b13e5f76c68f1de411ec23 [file] [log] [blame]
Soren Brinkmann76fcae32016-03-06 20:16:27 -08001/*
2 * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved.
3 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Soren Brinkmann76fcae32016-03-06 20:16:27 -08005 */
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
Rajan Vajac7ee23d2018-02-14 23:10:54 -080022#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
Soren Brinkmann76fcae32016-03-06 20:16:27 -080027/**
28 * pm_ipi - struct for capturing IPI-channel specific info
Wendy Liang328105c2017-10-03 23:21:11 -070029 * @apu_ipi_id APU IPI agent ID
30 * @pmu_ipi_id PMU Agent ID
Soren Brinkmann76fcae32016-03-06 20:16:27 -080031 * @buffer_base base address for payload buffer
32 */
33struct pm_ipi {
Wendy Liang328105c2017-10-03 23:21:11 -070034 const uint32_t apu_ipi_id;
35 const uint32_t pmu_ipi_id;
Soren Brinkmann76fcae32016-03-06 20:16:27 -080036 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 */
46struct pm_proc {
47 const enum pm_node_id node_id;
48 const unsigned int pwrdn_mask;
49 const struct pm_ipi *ipi;
50};
51
52const struct pm_proc *pm_get_proc(unsigned int cpuid);
53const struct pm_proc *pm_get_proc_by_node(enum pm_node_id nid);
54
55#endif /* _PM_COMMON_H_ */