1 /* 2 * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved. 3 * Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved. 4 * 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 13 #define PASS_THROUGH_FW_CMD_ID U(0xfff) 14 15 /******************************************************************************/ 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 35 bool pm_pwrdwn_req_status(void); 36 void request_cpu_pwrdwn(void); 37 int32_t pm_setup(void); 38 uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3, 39 uint64_t x4, const void *cookie, void *handle, 40 uint64_t flags); 41 42 int32_t pm_register_sgi(uint32_t sgi_num, uint32_t reset); 43 #endif /* PM_SVC_MAIN_H */ 44