xref: /openbmc/u-boot/arch/arm/include/asm/arch-imx8/sci/rpc.h (revision cf033e04da315ba949e804c127abae0134bda30f)
1  /* SPDX-License-Identifier:     GPL-2.0+ */
2  /*
3   * Copyright 2017-2018 NXP
4   *
5   */
6  
7  #ifndef SC_RPC_H
8  #define SC_RPC_H
9  
10  /* Note: Check SCFW API Released DOC before you want to modify something */
11  #define SC_RPC_VERSION          1U
12  
13  #define SC_RPC_MAX_MSG          8U
14  
15  #define RPC_VER(MSG)            ((MSG)->version)
16  #define RPC_SIZE(MSG)           ((MSG)->size)
17  #define RPC_SVC(MSG)            ((MSG)->svc)
18  #define RPC_FUNC(MSG)           ((MSG)->func)
19  #define RPC_R8(MSG)             ((MSG)->func)
20  #define RPC_I32(MSG, IDX)       ((MSG)->DATA.i32[(IDX) / 4U])
21  #define RPC_I16(MSG, IDX)       ((MSG)->DATA.i16[(IDX) / 2U])
22  #define RPC_I8(MSG, IDX)        ((MSG)->DATA.i8[(IDX)])
23  #define RPC_U32(MSG, IDX)       ((MSG)->DATA.u32[(IDX) / 4U])
24  #define RPC_U16(MSG, IDX)       ((MSG)->DATA.u16[(IDX) / 2U])
25  #define RPC_U8(MSG, IDX)        ((MSG)->DATA.u8[(IDX)])
26  
27  #define SC_RPC_SVC_UNKNOWN      0U
28  #define SC_RPC_SVC_RETURN       1U
29  #define SC_RPC_SVC_PM           2U
30  #define SC_RPC_SVC_RM           3U
31  #define SC_RPC_SVC_TIMER        5U
32  #define SC_RPC_SVC_PAD          6U
33  #define SC_RPC_SVC_MISC         7U
34  #define SC_RPC_SVC_IRQ          8U
35  #define SC_RPC_SVC_ABORT        9U
36  
37  /* Types */
38  
39  struct sc_rpc_msg_s {
40  	u8 version;
41  	u8 size;
42  	u8 svc;
43  	u8 func;
44  	union {
45  		s32 i32[(SC_RPC_MAX_MSG - 1U)];
46  		s16 i16[(SC_RPC_MAX_MSG - 1U) * 2U];
47  		s8 i8[(SC_RPC_MAX_MSG - 1U) * 4U];
48  		u32 u32[(SC_RPC_MAX_MSG - 1U)];
49  		u16 u16[(SC_RPC_MAX_MSG - 1U) * 2U];
50  		u8 u8[(SC_RPC_MAX_MSG - 1U) * 4U];
51  	} DATA;
52  };
53  
54  /* PM RPC */
55  #define PM_FUNC_UNKNOWN				0
56  #define PM_FUNC_SET_SYS_POWER_MODE		19U
57  #define PM_FUNC_SET_PARTITION_POWER_MODE	1U
58  #define PM_FUNC_GET_SYS_POWER_MODE		2U
59  #define PM_FUNC_SET_RESOURCE_POWER_MODE		3U
60  #define PM_FUNC_GET_RESOURCE_POWER_MODE		4U
61  #define PM_FUNC_REQ_LOW_POWER_MODE		16U
62  #define PM_FUNC_REQ_CPU_LOW_POWER_MODE		20U
63  #define PM_FUNC_SET_CPU_RESUME_ADDR		17U
64  #define PM_FUNC_SET_CPU_RESUME			21U
65  #define PM_FUNC_REQ_SYS_IF_POWER_MODE		18U
66  #define PM_FUNC_SET_CLOCK_RATE			5U
67  #define PM_FUNC_GET_CLOCK_RATE			6U
68  #define PM_FUNC_CLOCK_ENABLE			7U
69  #define PM_FUNC_SET_CLOCK_PARENT		14U
70  #define PM_FUNC_GET_CLOCK_PARENT		15U
71  #define PM_FUNC_RESET				13U
72  #define PM_FUNC_RESET_REASON			10U
73  #define PM_FUNC_BOOT				8U
74  #define PM_FUNC_REBOOT				9U
75  #define PM_FUNC_REBOOT_PARTITION		12U
76  #define PM_FUNC_CPU_START			11U
77  
78  /* MISC RPC */
79  #define MISC_FUNC_UNKNOWN			0
80  #define MISC_FUNC_SET_CONTROL			1U
81  #define MISC_FUNC_GET_CONTROL			2U
82  #define MISC_FUNC_SET_MAX_DMA_GROUP		4U
83  #define MISC_FUNC_SET_DMA_GROUP			5U
84  #define MISC_FUNC_SECO_IMAGE_LOAD		8U
85  #define MISC_FUNC_SECO_AUTHENTICATE		9U
86  #define MISC_FUNC_SECO_FUSE_WRITE		20U
87  #define MISC_FUNC_SECO_ENABLE_DEBUG		21U
88  #define MISC_FUNC_SECO_FORWARD_LIFECYCLE	22U
89  #define MISC_FUNC_SECO_RETURN_LIFECYCLE		23U
90  #define MISC_FUNC_SECO_BUILD_INFO		24U
91  #define MISC_FUNC_DEBUG_OUT			10U
92  #define MISC_FUNC_WAVEFORM_CAPTURE		6U
93  #define MISC_FUNC_BUILD_INFO			15U
94  #define MISC_FUNC_UNIQUE_ID			19U
95  #define MISC_FUNC_SET_ARI			3U
96  #define MISC_FUNC_BOOT_STATUS			7U
97  #define MISC_FUNC_BOOT_DONE			14U
98  #define MISC_FUNC_OTP_FUSE_READ			11U
99  #define MISC_FUNC_OTP_FUSE_WRITE		17U
100  #define MISC_FUNC_SET_TEMP			12U
101  #define MISC_FUNC_GET_TEMP			13U
102  #define MISC_FUNC_GET_BOOT_DEV			16U
103  #define MISC_FUNC_GET_BUTTON_STATUS		18U
104  
105  /* PAD RPC */
106  #define PAD_FUNC_UNKNOWN			0
107  #define PAD_FUNC_SET_MUX			1U
108  #define PAD_FUNC_GET_MUX			6U
109  #define PAD_FUNC_SET_GP				2U
110  #define PAD_FUNC_GET_GP				7U
111  #define PAD_FUNC_SET_WAKEUP			4U
112  #define PAD_FUNC_GET_WAKEUP			9U
113  #define PAD_FUNC_SET_ALL			5U
114  #define PAD_FUNC_GET_ALL			10U
115  #define PAD_FUNC_SET				15U
116  #define PAD_FUNC_GET				16U
117  #define PAD_FUNC_SET_GP_28FDSOI			11U
118  #define PAD_FUNC_GET_GP_28FDSOI			12U
119  #define PAD_FUNC_SET_GP_28FDSOI_HSIC		3U
120  #define PAD_FUNC_GET_GP_28FDSOI_HSIC		8U
121  #define PAD_FUNC_SET_GP_28FDSOI_COMP		13U
122  #define PAD_FUNC_GET_GP_28FDSOI_COMP		14U
123  
124  /* RM RPC */
125  #define RM_FUNC_UNKNOWN				0
126  #define RM_FUNC_PARTITION_ALLOC			1U
127  #define RM_FUNC_SET_CONFIDENTIAL		31U
128  #define RM_FUNC_PARTITION_FREE			2U
129  #define RM_FUNC_GET_DID				26U
130  #define RM_FUNC_PARTITION_STATIC		3U
131  #define RM_FUNC_PARTITION_LOCK			4U
132  #define RM_FUNC_GET_PARTITION			5U
133  #define RM_FUNC_SET_PARENT			6U
134  #define RM_FUNC_MOVE_ALL			7U
135  #define RM_FUNC_ASSIGN_RESOURCE			8U
136  #define RM_FUNC_SET_RESOURCE_MOVABLE		9U
137  #define RM_FUNC_SET_SUBSYS_RSRC_MOVABLE		28U
138  #define RM_FUNC_SET_MASTER_ATTRIBUTES		10U
139  #define RM_FUNC_SET_MASTER_SID			11U
140  #define RM_FUNC_SET_PERIPHERAL_PERMISSIONS	12U
141  #define RM_FUNC_IS_RESOURCE_OWNED		13U
142  #define RM_FUNC_IS_RESOURCE_MASTER		14U
143  #define RM_FUNC_IS_RESOURCE_PERIPHERAL		15U
144  #define RM_FUNC_GET_RESOURCE_INFO		16U
145  #define RM_FUNC_MEMREG_ALLOC			17U
146  #define RM_FUNC_MEMREG_SPLIT			29U
147  #define RM_FUNC_MEMREG_FREE			18U
148  #define RM_FUNC_FIND_MEMREG			30U
149  #define RM_FUNC_ASSIGN_MEMREG			19U
150  #define RM_FUNC_SET_MEMREG_PERMISSIONS		20U
151  #define RM_FUNC_IS_MEMREG_OWNED			21U
152  #define RM_FUNC_GET_MEMREG_INFO			22U
153  #define RM_FUNC_ASSIGN_PAD			23U
154  #define RM_FUNC_SET_PAD_MOVABLE			24U
155  #define RM_FUNC_IS_PAD_OWNED			25U
156  #define RM_FUNC_DUMP				27U
157  
158  #endif /* SC_RPC_H */
159