blob: af7b2523a2f14dff21d0a17b4793c6312ddf3e2d [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#ifndef _PM_API_SYS_H_
8#define _PM_API_SYS_H_
9
10#include <stdint.h>
11#include "pm_defs.h"
12
13/**********************************************************
14 * System-level API function declarations
15 **********************************************************/
16enum pm_ret_status pm_req_suspend(enum pm_node_id nid,
17 enum pm_request_ack ack,
18 unsigned int latency,
19 unsigned int state);
20
21enum pm_ret_status pm_self_suspend(enum pm_node_id nid,
22 unsigned int latency,
23 unsigned int state,
24 uintptr_t address);
25
26enum pm_ret_status pm_force_powerdown(enum pm_node_id nid,
27 enum pm_request_ack ack);
28
29enum pm_ret_status pm_abort_suspend(enum pm_abort_reason reason);
30
31enum pm_ret_status pm_req_wakeup(enum pm_node_id nid,
32 unsigned int set_address,
33 uintptr_t address,
34 enum pm_request_ack ack);
35
36enum pm_ret_status pm_set_wakeup_source(enum pm_node_id target,
37 enum pm_node_id wkup_node,
38 unsigned int enable);
39
Soren Brinkmann58fbb9b2016-09-02 09:50:54 -070040enum pm_ret_status pm_system_shutdown(unsigned int type, unsigned int subtype);
Soren Brinkmann76fcae32016-03-06 20:16:27 -080041
42enum pm_ret_status pm_init_suspend_cb(enum pm_suspend_reason reason,
43 unsigned int latency,
44 unsigned int state,
45 unsigned int timeout);
46
47/* API functions for managing PM Slaves */
48enum pm_ret_status pm_req_node(enum pm_node_id nid,
49 unsigned int capabilities,
50 unsigned int qos,
51 enum pm_request_ack ack);
52enum pm_ret_status pm_release_node(enum pm_node_id nid);
53
54enum pm_ret_status pm_set_requirement(enum pm_node_id nid,
55 unsigned int capabilities,
56 unsigned int qos,
57 enum pm_request_ack ack);
58enum pm_ret_status pm_set_max_latency(enum pm_node_id nid,
59 unsigned int latency);
60
61/* Miscellaneous API functions */
62enum pm_ret_status pm_get_api_version(unsigned int *version);
63enum pm_ret_status pm_set_configuration(unsigned int phys_addr);
64enum pm_ret_status pm_get_node_status(enum pm_node_id node);
65enum pm_ret_status pm_register_notifier(enum pm_node_id nid,
66 unsigned int event,
67 unsigned int wake,
68 unsigned int enable);
69enum pm_ret_status pm_get_op_characteristic(enum pm_node_id nid,
Anes Hadziahmetagic92aee012016-05-12 16:17:30 +020070 enum pm_opchar_type type,
71 uint32_t *result);
Soren Brinkmann76fcae32016-03-06 20:16:27 -080072enum pm_ret_status pm_acknowledge_cb(enum pm_node_id nid,
73 enum pm_ret_status status,
74 unsigned int oppoint);
75enum pm_ret_status pm_notify_cb(enum pm_node_id nid,
76 unsigned int event,
77 unsigned int oppoint);
78
79/* Direct-Control API functions */
80enum pm_ret_status pm_reset_assert(unsigned int reset_id,
81 unsigned int assert);
82enum pm_ret_status pm_reset_get_status(unsigned int reset_id,
83 unsigned int *reset_status);
84enum pm_ret_status pm_mmio_write(uintptr_t address,
85 unsigned int mask,
86 unsigned int value);
87enum pm_ret_status pm_mmio_read(uintptr_t address, unsigned int *value);
Soren Brinkmann881788d2017-09-18 09:13:17 -070088enum pm_ret_status pm_fpga_load(uint32_t address_low,
89 uint32_t address_high,
Nava kishore Manne68d460c2016-08-20 23:18:09 +053090 uint32_t size,
91 uint32_t flags);
92enum pm_ret_status pm_fpga_get_status(unsigned int *value);
93
Soren Brinkmanncb366812016-09-22 12:21:11 -070094enum pm_ret_status pm_get_chipid(uint32_t *value);
Soren Brinkmann84f0af42016-09-30 14:24:25 -070095void pm_get_callbackdata(uint32_t *data, size_t count);
Soren Brinkmanncb366812016-09-22 12:21:11 -070096
Soren Brinkmann76fcae32016-03-06 20:16:27 -080097#endif /* _PM_API_SYS_H_ */