blob: 32a425c797133af41b4de99491e61e32ee842f5e [file] [log] [blame]
Tejas Patelc73a90e2018-12-14 00:55:37 -08001/*
Venkatesh Yadav Abbarapubf704492021-04-19 07:49:57 -06002 * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
Devanshi Chauhanc0719d22025-05-16 02:49:34 -07003 * Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved.
Tejas Patelc73a90e2018-12-14 00:55:37 -08004 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef PM_SVC_MAIN_H
9#define PM_SVC_MAIN_H
10
11#include <pm_common.h>
12
Jay Buddhabhatti4661c8f2024-06-24 02:10:29 -070013#define PASS_THROUGH_FW_CMD_ID U(0xfff)
14
Jay Buddhabhatticebb7cc2023-07-31 00:11:00 -070015/******************************************************************************/
16/**
17 * SECURE_REDUNDANT_CALL() - Adds redundancy to the function call. This is to
18 * avoid glitches which can skip a function call
19 * and cause altering of the code flow in security
20 * critical functions.
21 * @status: Variable which holds the return value of function executed
22 * @status_tmp: Variable which holds the return value of redundant function
23 * call executed
24 * @function: Function to be executed
25 *
26 * Return: None
27 *
28 ******************************************************************************/
29#define SECURE_REDUNDANT_CALL(status, status_tmp, function, ...) \
30 { \
31 status = function(__VA_ARGS__); \
32 status_tmp = function(__VA_ARGS__); \
33 }
34
Devanshi Chauhanc0719d22025-05-16 02:49:34 -070035bool pm_pwrdwn_req_status(void);
Jay Buddhabhatti88ee0812023-06-19 05:08:54 -070036void request_cpu_pwrdwn(void);
Venkatesh Yadav Abbarapu912b7a62022-05-24 11:11:12 +053037int32_t pm_setup(void);
Tejas Patelab43d152019-01-09 04:10:29 -080038uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3,
Venkatesh Yadav Abbarapu3d2ebe72022-05-24 14:02:52 +053039 uint64_t x4, const void *cookie, void *handle,
Tejas Patelab43d152019-01-09 04:10:29 -080040 uint64_t flags);
Tejas Patelc73a90e2018-12-14 00:55:37 -080041
Venkatesh Yadav Abbarapu912b7a62022-05-24 11:11:12 +053042int32_t pm_register_sgi(uint32_t sgi_num, uint32_t reset);
Tejas Patelc73a90e2018-12-14 00:55:37 -080043#endif /* PM_SVC_MAIN_H */