blob: b44b59039d479e8d9db080e92427cdb7bf9282bb [file] [log] [blame]
Tejas Patel9d09ff92019-01-08 01:46:35 -08001/*
Tanmay Shahff34daa2021-08-09 11:00:41 -07002 * Copyright (c) 2019-2022, 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
Tanmay Shahff34daa2021-08-09 11:00:41 -070017enum pm_ret_status pm_handle_eemi_call(uint32_t flag, uint32_t x0, uint32_t x1,
18 uint32_t x2, uint32_t x3, uint32_t x4,
19 uint32_t x5, uint64_t *result);
Tejas Patelfe0e10a2019-12-08 23:29:44 -080020enum pm_ret_status pm_self_suspend(uint32_t nid,
21 unsigned int latency,
22 unsigned int state,
Tejas Patel18072da2021-02-25 20:16:56 -080023 uintptr_t address, uint32_t flag);
24enum pm_ret_status pm_abort_suspend(enum pm_abort_reason reason, uint32_t flag);
Tejas Patelfe0e10a2019-12-08 23:29:44 -080025enum pm_ret_status pm_req_suspend(uint32_t target,
26 uint8_t ack,
27 unsigned int latency,
Tejas Patel18072da2021-02-25 20:16:56 -080028 unsigned int state, uint32_t flag);
Tejas Patel49cd8712019-01-23 14:18:51 +053029enum pm_ret_status pm_req_wakeup(uint32_t target, uint32_t set_address,
Tejas Patel18072da2021-02-25 20:16:56 -080030 uintptr_t address, uint8_t ack, uint32_t flag);
Tejas Pateldb812052019-01-23 14:18:53 +053031enum pm_ret_status pm_set_wakeup_source(uint32_t target, uint32_t device_id,
Tejas Patel18072da2021-02-25 20:16:56 -080032 uint8_t enable, uint32_t flag);
Tejas Patel18072da2021-02-25 20:16:56 -080033void pm_get_callbackdata(uint32_t *data, size_t count, uint32_t flag);
Tejas Patel023116d2019-01-08 01:46:41 -080034enum pm_ret_status pm_pll_set_param(uint32_t clk_id, uint32_t param,
Tejas Patel18072da2021-02-25 20:16:56 -080035 uint32_t value, uint32_t flag);
Tejas Patel023116d2019-01-08 01:46:41 -080036enum pm_ret_status pm_pll_get_param(uint32_t clk_id, uint32_t param,
Tejas Patel18072da2021-02-25 20:16:56 -080037 uint32_t *value, uint32_t flag);
38enum pm_ret_status pm_pll_set_mode(uint32_t clk_id, uint32_t mode,
39 uint32_t flag);
40enum pm_ret_status pm_pll_get_mode(uint32_t clk_id, uint32_t *mode,
41 uint32_t flag);
42enum pm_ret_status pm_force_powerdown(uint32_t target, uint8_t ack,
43 uint32_t flag);
44enum pm_ret_status pm_system_shutdown(uint32_t type, uint32_t subtype,
45 uint32_t flag);
Tejas Patel9141f442019-01-10 03:03:48 -080046enum pm_ret_status pm_api_ioctl(uint32_t device_id, uint32_t ioctl_id,
Tejas Patel18072da2021-02-25 20:16:56 -080047 uint32_t arg1, uint32_t arg2, uint32_t *value,
48 uint32_t flag);
Tejas Patela3e34ad2019-02-01 17:25:19 +053049enum pm_ret_status pm_query_data(uint32_t qid, uint32_t arg1, uint32_t arg2,
Tejas Patel18072da2021-02-25 20:16:56 -080050 uint32_t arg3, uint32_t *data, uint32_t flag);
Saeed Nowshadic5a1bda2019-12-08 23:35:35 -080051unsigned int pm_get_shutdown_scope(void);
Tejas Patel18072da2021-02-25 20:16:56 -080052enum pm_ret_status pm_feature_check(uint32_t api_id, unsigned int *version,
53 uint32_t flag);
Jolly Shahed05a712019-03-22 05:33:39 +053054enum pm_ret_status pm_load_pdi(uint32_t src, uint32_t address_low,
Tejas Patel18072da2021-02-25 20:16:56 -080055 uint32_t address_high, uint32_t flag);
Tejas Patel42015552020-11-25 01:56:57 -080056enum pm_ret_status pm_register_notifier(uint32_t device_id, uint32_t event,
Tejas Patel18072da2021-02-25 20:16:56 -080057 uint32_t wake, uint32_t enable,
58 uint32_t flag);
Tejas Patel9d09ff92019-01-08 01:46:35 -080059#endif /* PM_API_SYS_H */