blob: b3e41a757d970ad9998fd86c1b1d4e2a369d9cbd [file] [log] [blame]
dp-armf10796a2016-09-19 11:21:03 +01001/*
J-Alves68730882023-10-04 17:16:45 +01002 * Copyright (c) 2016-2019,2021-2024, Arm Limited and Contributors. All rights reserved.
dp-armf10796a2016-09-19 11:21:03 +01003 *
dp-arm82cb2c12017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
dp-armf10796a2016-09-19 11:21:03 +01005 */
6
Antonio Nino Diaz15b94cc2018-10-25 16:53:04 +01007#ifndef ARM_SIP_SVC_H
8#define ARM_SIP_SVC_H
9
Antonio Nino Diaz09d40e02018-12-14 00:18:21 +000010#include <lib/utils_def.h>
dp-armf10796a2016-09-19 11:21:03 +010011
12/* SMC function IDs for SiP Service queries */
13
Antonio Nino Diaz15b94cc2018-10-25 16:53:04 +010014#define ARM_SIP_SVC_CALL_COUNT U(0x8200ff00)
15#define ARM_SIP_SVC_UID U(0x8200ff01)
16/* U(0x8200ff02) is reserved */
17#define ARM_SIP_SVC_VERSION U(0x8200ff03)
dp-armf10796a2016-09-19 11:21:03 +010018
Ambroise Vincent992f0912019-07-12 13:47:03 +010019/* PMF_SMC_GET_TIMESTAMP_32 0x82000010 */
20/* PMF_SMC_GET_TIMESTAMP_64 0xC2000010 */
21
Jeenu Viswambharanb10d4492017-02-16 14:55:15 +000022/* Function ID for requesting state switch of lower EL */
Antonio Nino Diaz15b94cc2018-10-25 16:53:04 +010023#define ARM_SIP_SVC_EXE_STATE_SWITCH U(0x82000020)
Jeenu Viswambharanb10d4492017-02-16 14:55:15 +000024
Govindraj Raja273b8982024-03-07 15:24:19 -060025/* Deprecated FID's Range and will be removed */
Ambroise Vincent992f0912019-07-12 13:47:03 +010026/* DEBUGFS_SMC_32 0x82000030U */
27/* DEBUGFS_SMC_64 0xC2000030U */
28
Mikael Olsson76a21172021-02-12 17:30:22 +010029/*
Mikael Olssonb139f1c2022-08-15 17:12:58 +020030 * Arm(R) Ethos(TM)-N NPU SiP SMC function IDs
Mikael Olsson76a21172021-02-12 17:30:22 +010031 * 0xC2000050-0xC200005F
32 * 0x82000050-0x8200005F
33 */
34
dp-armf10796a2016-09-19 11:21:03 +010035/* ARM SiP Service Calls version numbers */
Govindraj Raja273b8982024-03-07 15:24:19 -060036#define ARM_SIP_SVC_VERSION_MAJOR U(0x1)
37#define ARM_SIP_SVC_VERSION_MINOR U(0x0)
dp-armf10796a2016-09-19 11:21:03 +010038
Madhukar Pappireddy20324012023-08-24 16:57:22 -050039/*
40 * Arm SiP SMC calls that are primarily used for testing purposes.
41 */
42#if PLAT_TEST_SPM
43#define ARM_SIP_SET_INTERRUPT_PENDING U(0x82000100)
44#endif
45
J-Alves68730882023-10-04 17:16:45 +010046/**
47 * Arm SiP Service Call for the SPM to leverage RME to protect a give memory range.
48 * Protected memory range is one whose PAS was made secure.
49 * Unprotect relates to reverting a protect operation.
50 */
51#if SPMD_SPM_AT_SEL2 && ENABLE_RME
52#define PLAT_PROTECT_MEM_SMC64 0xC2000101
53#define PLAT_UNPROTECT_MEM_SMC64 0xC2000102
54#endif
55
Madhukar Pappireddy7a2130b2023-09-09 23:02:34 -050056/* SiP handler specific to each Arm platform. */
57uintptr_t plat_arm_sip_handler(uint32_t smc_fid,
58 u_register_t x1,
59 u_register_t x2,
60 u_register_t x3,
61 u_register_t x4,
62 void *cookie,
63 void *handle,
64 u_register_t flags);
65
Antonio Nino Diaz15b94cc2018-10-25 16:53:04 +010066#endif /* ARM_SIP_SVC_H */