blob: 03351c246073517f92b69aa6fb9addea5686a73a [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
22/**
23 * pm_ipi - struct for capturing IPI-channel specific info
24 * @mask mask for enabling/disabling and triggering the IPI
25 * @base base address for IPI
26 * @buffer_base base address for payload buffer
27 */
28struct pm_ipi {
29 const unsigned int mask;
30 const uintptr_t base;
31 const uintptr_t buffer_base;
32};
33
34/**
35 * pm_proc - struct for capturing processor related info
36 * @node_id node-ID of the processor
37 * @pwrdn_mask cpu-specific mask to be used for power control register
38 * @ipi pointer to IPI channel structure
39 * (in APU all processors share one IPI channel)
40 */
41struct pm_proc {
42 const enum pm_node_id node_id;
43 const unsigned int pwrdn_mask;
44 const struct pm_ipi *ipi;
45};
46
47const struct pm_proc *pm_get_proc(unsigned int cpuid);
48const struct pm_proc *pm_get_proc_by_node(enum pm_node_id nid);
49
50#endif /* _PM_COMMON_H_ */