1 /* 2 * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 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 **********************************************************/ 16 enum 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 21 enum pm_ret_status pm_self_suspend(enum pm_node_id nid, 22 unsigned int latency, 23 unsigned int state, 24 uintptr_t address); 25 26 enum pm_ret_status pm_force_powerdown(enum pm_node_id nid, 27 enum pm_request_ack ack); 28 29 enum pm_ret_status pm_abort_suspend(enum pm_abort_reason reason); 30 31 enum 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 36 enum pm_ret_status pm_set_wakeup_source(enum pm_node_id target, 37 enum pm_node_id wkup_node, 38 unsigned int enable); 39 40 enum pm_ret_status pm_system_shutdown(unsigned int type, unsigned int subtype); 41 42 enum 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 */ 48 enum 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); 52 enum pm_ret_status pm_release_node(enum pm_node_id nid); 53 54 enum 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); 58 enum pm_ret_status pm_set_max_latency(enum pm_node_id nid, 59 unsigned int latency); 60 61 /* Miscellaneous API functions */ 62 enum pm_ret_status pm_get_api_version(unsigned int *version); 63 enum pm_ret_status pm_set_configuration(unsigned int phys_addr); 64 enum pm_ret_status pm_get_node_status(enum pm_node_id node); 65 enum pm_ret_status pm_register_notifier(enum pm_node_id nid, 66 unsigned int event, 67 unsigned int wake, 68 unsigned int enable); 69 enum pm_ret_status pm_get_op_characteristic(enum pm_node_id nid, 70 enum pm_opchar_type type, 71 uint32_t *result); 72 enum pm_ret_status pm_acknowledge_cb(enum pm_node_id nid, 73 enum pm_ret_status status, 74 unsigned int oppoint); 75 enum 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 */ 80 enum pm_ret_status pm_reset_assert(unsigned int reset_id, 81 unsigned int assert); 82 enum pm_ret_status pm_reset_get_status(unsigned int reset_id, 83 unsigned int *reset_status); 84 enum pm_ret_status pm_mmio_write(uintptr_t address, 85 unsigned int mask, 86 unsigned int value); 87 enum pm_ret_status pm_mmio_read(uintptr_t address, unsigned int *value); 88 enum pm_ret_status pm_fpga_load(uint32_t address_low, 89 uint32_t address_high, 90 uint32_t size, 91 uint32_t flags); 92 enum pm_ret_status pm_fpga_get_status(unsigned int *value); 93 94 enum pm_ret_status pm_get_chipid(uint32_t *value); 95 void pm_get_callbackdata(uint32_t *data, size_t count); 96 97 #endif /* _PM_API_SYS_H_ */ 98