blob: 84867b638c1255f4c3a6840ec01aa938b487fb2b [file] [log] [blame]
Tejas Patel9d09ff92019-01-08 01:46:35 -08001/*
Ravi Patel476b5b12019-08-12 03:10:10 -07002 * Copyright (c) 2019-2020, Xilinx, Inc. All rights reserved.
Tejas Patel9d09ff92019-01-08 01:46:35 -08003 *
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>
Tejas Patelfe0e10a2019-12-08 23:29:44 -080011#include "pm_defs.h"
Tejas Patel9d09ff92019-01-08 01:46:35 -080012
13/**********************************************************
14 * PM API function declarations
15 **********************************************************/
16
17enum pm_ret_status pm_get_api_version(unsigned int *version);
Ravi Patel476b5b12019-08-12 03:10:10 -070018enum pm_ret_status pm_init_finalize(void);
Tejas Patelfe0e10a2019-12-08 23:29:44 -080019enum pm_ret_status pm_self_suspend(uint32_t nid,
20 unsigned int latency,
21 unsigned int state,
22 uintptr_t address);
23enum pm_ret_status pm_abort_suspend(enum pm_abort_reason reason);
24enum pm_ret_status pm_req_suspend(uint32_t target,
25 uint8_t ack,
26 unsigned int latency,
27 unsigned int state);
Tejas Patel49cd8712019-01-23 14:18:51 +053028enum pm_ret_status pm_req_wakeup(uint32_t target, uint32_t set_address,
29 uintptr_t address, uint8_t ack);
Tejas Pateldb812052019-01-23 14:18:53 +053030enum pm_ret_status pm_set_wakeup_source(uint32_t target, uint32_t device_id,
31 uint8_t enable);
Tejas Patel41f3e0b2019-01-08 01:46:37 -080032enum pm_ret_status pm_request_device(uint32_t device_id, uint32_t capabilities,
33 uint32_t qos, uint32_t ack);
34enum pm_ret_status pm_release_device(uint32_t device_id);
35enum pm_ret_status pm_set_requirement(uint32_t device_id, uint32_t capabilities,
36 uint32_t latency, uint32_t qos);
37enum pm_ret_status pm_get_device_status(uint32_t device_id, uint32_t *response);
Tejas Patel87c4f3a2019-01-08 01:46:38 -080038enum pm_ret_status pm_reset_assert(uint32_t reset, bool assert);
39enum pm_ret_status pm_reset_get_status(uint32_t reset, uint32_t *status);
Rajan Vaja649e9242019-03-04 11:09:40 +053040void pm_get_callbackdata(uint32_t *data, size_t count);
Tejas Patel20e92022019-01-08 01:46:39 -080041enum pm_ret_status pm_pinctrl_request(uint32_t pin);
42enum pm_ret_status pm_pinctrl_release(uint32_t pin);
43enum pm_ret_status pm_pinctrl_set_function(uint32_t pin, uint32_t function);
44enum pm_ret_status pm_pinctrl_get_function(uint32_t pin, uint32_t *function);
45enum pm_ret_status pm_pinctrl_set_pin_param(uint32_t pin, uint32_t param,
46 uint32_t value);
47enum pm_ret_status pm_pinctrl_get_pin_param(uint32_t pin, uint32_t param,
48 uint32_t *value);
Tejas Patel1f56fb12019-01-08 01:46:40 -080049enum pm_ret_status pm_clock_enable(uint32_t clk_id);
50enum pm_ret_status pm_clock_disable(uint32_t clk_id);
51enum pm_ret_status pm_clock_get_state(uint32_t clk_id, uint32_t *state);
52enum pm_ret_status pm_clock_set_divider(uint32_t clk_id, uint32_t divider);
53enum pm_ret_status pm_clock_get_divider(uint32_t clk_id, uint32_t *divider);
54enum pm_ret_status pm_clock_set_parent(uint32_t clk_id, uint32_t parent);
55enum pm_ret_status pm_clock_get_parent(uint32_t clk_id, uint32_t *parent);
Tejas Patel84275bf2020-09-01 04:43:53 -070056enum pm_ret_status pm_clock_get_rate(uint32_t clk_id, uint32_t *clk_rate);
Tejas Patel023116d2019-01-08 01:46:41 -080057enum pm_ret_status pm_pll_set_param(uint32_t clk_id, uint32_t param,
58 uint32_t value);
59enum pm_ret_status pm_pll_get_param(uint32_t clk_id, uint32_t param,
60 uint32_t *value);
61enum pm_ret_status pm_pll_set_mode(uint32_t clk_id, uint32_t mode);
62enum pm_ret_status pm_pll_get_mode(uint32_t clk_id, uint32_t *mode);
Tejas Patel6b282252019-01-10 03:03:47 -080063enum pm_ret_status pm_force_powerdown(uint32_t target, uint8_t ack);
64enum pm_ret_status pm_system_shutdown(uint32_t type, uint32_t subtype);
Tejas Patel9141f442019-01-10 03:03:48 -080065enum pm_ret_status pm_api_ioctl(uint32_t device_id, uint32_t ioctl_id,
66 uint32_t arg1, uint32_t arg2, uint32_t *value);
Tejas Patela3e34ad2019-02-01 17:25:19 +053067enum pm_ret_status pm_query_data(uint32_t qid, uint32_t arg1, uint32_t arg2,
68 uint32_t arg3, uint32_t *data);
Saeed Nowshadic5a1bda2019-12-08 23:35:35 -080069unsigned int pm_get_shutdown_scope(void);
Ravi Patelbd4aa5a2019-08-12 03:17:54 -070070enum pm_ret_status pm_get_chipid(uint32_t *value);
Ravi Patel22b0b492019-03-06 12:34:46 +053071enum pm_ret_status pm_feature_check(uint32_t api_id, unsigned int *version);
Jolly Shahed05a712019-03-22 05:33:39 +053072enum pm_ret_status pm_load_pdi(uint32_t src, uint32_t address_low,
73 uint32_t address_high);
Saeed Nowshadi2294b422019-06-03 10:22:35 -070074enum pm_ret_status pm_get_op_characteristic(uint32_t device_id,
75 enum pm_opchar_type type,
76 uint32_t *result);
Tejas Patel5c154e12020-11-25 01:53:12 -080077enum pm_ret_status pm_set_max_latency(uint32_t device_id, uint32_t latency);
Tejas Patel42015552020-11-25 01:56:57 -080078enum pm_ret_status pm_register_notifier(uint32_t device_id, uint32_t event,
79 uint32_t wake, uint32_t enable);
Tejas Patel9d09ff92019-01-08 01:46:35 -080080#endif /* PM_API_SYS_H */