blob: 10899b885cbf7f11d5eae5d5d6356a5cf4a1f495 [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
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000012#ifndef PM_COMMON_H
13#define PM_COMMON_H
Soren Brinkmann76fcae32016-03-06 20:16:27 -080014
Soren Brinkmann76fcae32016-03-06 20:16:27 -080015#include <stdint.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000016
17#include <common/debug.h>
18
Soren Brinkmann76fcae32016-03-06 20:16:27 -080019#include "pm_defs.h"
20
21#define PAYLOAD_ARG_CNT 6U
22#define PAYLOAD_ARG_SIZE 4U /* size in bytes */
23
Rajan Vajac7ee23d2018-02-14 23:10:54 -080024#define ZYNQMP_TZ_VERSION_MAJOR 1
25#define ZYNQMP_TZ_VERSION_MINOR 0
26#define ZYNQMP_TZ_VERSION ((ZYNQMP_TZ_VERSION_MAJOR << 16) | \
27 ZYNQMP_TZ_VERSION_MINOR)
28
Soren Brinkmann76fcae32016-03-06 20:16:27 -080029/**
30 * pm_ipi - struct for capturing IPI-channel specific info
Jolly Shah36c930b2019-01-07 12:51:40 -080031 * @local_ipi_id Local IPI agent ID
32 * @remote_ipi_id Remote IPI Agent ID
Soren Brinkmann76fcae32016-03-06 20:16:27 -080033 * @buffer_base base address for payload buffer
34 */
35struct pm_ipi {
Jolly Shah36c930b2019-01-07 12:51:40 -080036 const uint32_t local_ipi_id;
37 const uint32_t remote_ipi_id;
Soren Brinkmann76fcae32016-03-06 20:16:27 -080038 const uintptr_t buffer_base;
39};
40
41/**
42 * pm_proc - struct for capturing processor related info
43 * @node_id node-ID of the processor
44 * @pwrdn_mask cpu-specific mask to be used for power control register
45 * @ipi pointer to IPI channel structure
46 * (in APU all processors share one IPI channel)
47 */
48struct pm_proc {
49 const enum pm_node_id node_id;
50 const unsigned int pwrdn_mask;
51 const struct pm_ipi *ipi;
52};
53
54const struct pm_proc *pm_get_proc(unsigned int cpuid);
55const struct pm_proc *pm_get_proc_by_node(enum pm_node_id nid);
56
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000057#endif /* PM_COMMON_H */