~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/firmware/intel/stratix10-smc.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /include/linux/firmware/intel/stratix10-smc.h (Architecture sparc64) and /include/linux/firmware/intel/stratix10-smc.h (Architecture ppc)


  1 /* SPDX-License-Identifier: GPL-2.0 */              1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*                                                  2 /*
  3  * Copyright (C) 2017-2018, Intel Corporation       3  * Copyright (C) 2017-2018, Intel Corporation
  4  */                                                 4  */
  5                                                     5 
  6 #ifndef __STRATIX10_SMC_H                           6 #ifndef __STRATIX10_SMC_H
  7 #define __STRATIX10_SMC_H                           7 #define __STRATIX10_SMC_H
  8                                                     8 
  9 #include <linux/arm-smccc.h>                        9 #include <linux/arm-smccc.h>
 10 #include <linux/bitops.h>                          10 #include <linux/bitops.h>
 11                                                    11 
 12 /**                                                12 /**
 13  * This file defines the Secure Monitor Call (     13  * This file defines the Secure Monitor Call (SMC) message protocol used for
 14  * service layer driver in normal world (EL1)      14  * service layer driver in normal world (EL1) to communicate with secure
 15  * monitor software in Secure Monitor Exceptio     15  * monitor software in Secure Monitor Exception Level 3 (EL3).
 16  *                                                 16  *
 17  * This file is shared with secure firmware (F     17  * This file is shared with secure firmware (FW) which is out of kernel tree.
 18  *                                                 18  *
 19  * An ARM SMC instruction takes a function ide     19  * An ARM SMC instruction takes a function identifier and up to 6 64-bit
 20  * register values as arguments, and can retur     20  * register values as arguments, and can return up to 4 64-bit register
 21  * value. The operation of the secure monitor      21  * value. The operation of the secure monitor is determined by the parameter
 22  * values passed in through registers.             22  * values passed in through registers.
 23  *                                                 23  *
 24  * EL1 and EL3 communicates pointer as physica     24  * EL1 and EL3 communicates pointer as physical address rather than the
 25  * virtual address.                                25  * virtual address.
 26  *                                                 26  *
 27  * Functions specified by ARM SMC Calling conv     27  * Functions specified by ARM SMC Calling convention:
 28  *                                                 28  *
 29  * FAST call executes atomic operations, retur     29  * FAST call executes atomic operations, returns when the requested operation
 30  * has completed.                                  30  * has completed.
 31  * STD call starts a operation which can be pr     31  * STD call starts a operation which can be preempted by a non-secure
 32  * interrupt. The call can return before the r     32  * interrupt. The call can return before the requested operation has
 33  * completed.                                      33  * completed.
 34  *                                                 34  *
 35  * a0..a7 is used as register names in the des     35  * a0..a7 is used as register names in the descriptions below, on arm32
 36  * that translates to r0..r7 and on arm64 to w     36  * that translates to r0..r7 and on arm64 to w0..w7.
 37  */                                                37  */
 38                                                    38 
 39 /**                                                39 /**
 40  * @func_num: function ID                          40  * @func_num: function ID
 41  */                                                41  */
 42 #define INTEL_SIP_SMC_STD_CALL_VAL(func_num) \     42 #define INTEL_SIP_SMC_STD_CALL_VAL(func_num) \
 43         ARM_SMCCC_CALL_VAL(ARM_SMCCC_STD_CALL,     43         ARM_SMCCC_CALL_VAL(ARM_SMCCC_STD_CALL, ARM_SMCCC_SMC_64, \
 44         ARM_SMCCC_OWNER_SIP, (func_num))           44         ARM_SMCCC_OWNER_SIP, (func_num))
 45                                                    45 
 46 #define INTEL_SIP_SMC_FAST_CALL_VAL(func_num)      46 #define INTEL_SIP_SMC_FAST_CALL_VAL(func_num) \
 47         ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL     47         ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, ARM_SMCCC_SMC_64, \
 48         ARM_SMCCC_OWNER_SIP, (func_num))           48         ARM_SMCCC_OWNER_SIP, (func_num))
 49                                                    49 
 50 /**                                                50 /**
 51  * Return values in INTEL_SIP_SMC_* call           51  * Return values in INTEL_SIP_SMC_* call
 52  *                                                 52  *
 53  * INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION:          53  * INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION:
 54  * Secure monitor software doesn't recognize t     54  * Secure monitor software doesn't recognize the request.
 55  *                                                 55  *
 56  * INTEL_SIP_SMC_STATUS_OK:                        56  * INTEL_SIP_SMC_STATUS_OK:
 57  * Secure monitor software accepts the service     57  * Secure monitor software accepts the service client's request.
 58  *                                                 58  *
 59  * INTEL_SIP_SMC_STATUS_BUSY:                      59  * INTEL_SIP_SMC_STATUS_BUSY:
 60  * Secure monitor software is still processing     60  * Secure monitor software is still processing service client's request.
 61  *                                                 61  *
 62  * INTEL_SIP_SMC_STATUS_REJECTED:                  62  * INTEL_SIP_SMC_STATUS_REJECTED:
 63  * Secure monitor software reject the service      63  * Secure monitor software reject the service client's request.
 64  *                                                 64  *
 65  * INTEL_SIP_SMC_STATUS_ERROR:                     65  * INTEL_SIP_SMC_STATUS_ERROR:
 66  * There is error during the process of servic     66  * There is error during the process of service request.
 67  *                                                 67  *
 68  * INTEL_SIP_SMC_RSU_ERROR:                        68  * INTEL_SIP_SMC_RSU_ERROR:
 69  * There is error during the process of remote     69  * There is error during the process of remote status update request.
 70  */                                                70  */
 71 #define INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION      71 #define INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION           0xFFFFFFFF
 72 #define INTEL_SIP_SMC_STATUS_OK                    72 #define INTEL_SIP_SMC_STATUS_OK                         0x0
 73 #define INTEL_SIP_SMC_STATUS_BUSY                  73 #define INTEL_SIP_SMC_STATUS_BUSY                       0x1
 74 #define INTEL_SIP_SMC_STATUS_REJECTED              74 #define INTEL_SIP_SMC_STATUS_REJECTED                   0x2
 75 #define INTEL_SIP_SMC_STATUS_ERROR                 75 #define INTEL_SIP_SMC_STATUS_ERROR                      0x4
 76 #define INTEL_SIP_SMC_RSU_ERROR                    76 #define INTEL_SIP_SMC_RSU_ERROR                         0x7
 77                                                    77 
 78 /**                                                78 /**
 79  * Request INTEL_SIP_SMC_FPGA_CONFIG_START         79  * Request INTEL_SIP_SMC_FPGA_CONFIG_START
 80  *                                                 80  *
 81  * Sync call used by service driver at EL1 to      81  * Sync call used by service driver at EL1 to request the FPGA in EL3 to
 82  * be prepare to receive a new configuration.      82  * be prepare to receive a new configuration.
 83  *                                                 83  *
 84  * Call register usage:                            84  * Call register usage:
 85  * a0: INTEL_SIP_SMC_FPGA_CONFIG_START.            85  * a0: INTEL_SIP_SMC_FPGA_CONFIG_START.
 86  * a1: flag for full or partial configuration.     86  * a1: flag for full or partial configuration. 0 for full and 1 for partial
 87  * configuration.                                  87  * configuration.
 88  * a2-7: not used.                                 88  * a2-7: not used.
 89  *                                                 89  *
 90  * Return status:                                  90  * Return status:
 91  * a0: INTEL_SIP_SMC_STATUS_OK, or INTEL_SIP_S     91  * a0: INTEL_SIP_SMC_STATUS_OK, or INTEL_SIP_SMC_STATUS_ERROR.
 92  * a1-3: not used.                                 92  * a1-3: not used.
 93  */                                                93  */
 94 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_START     94 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_START 1
 95 #define INTEL_SIP_SMC_FPGA_CONFIG_START \          95 #define INTEL_SIP_SMC_FPGA_CONFIG_START \
 96         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_     96         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_START)
 97                                                    97 
 98 /**                                                98 /**
 99  * Request INTEL_SIP_SMC_FPGA_CONFIG_WRITE         99  * Request INTEL_SIP_SMC_FPGA_CONFIG_WRITE
100  *                                                100  *
101  * Async call used by service driver at EL1 to    101  * Async call used by service driver at EL1 to provide FPGA configuration data
102  * to secure world.                               102  * to secure world.
103  *                                                103  *
104  * Call register usage:                           104  * Call register usage:
105  * a0: INTEL_SIP_SMC_FPGA_CONFIG_WRITE.           105  * a0: INTEL_SIP_SMC_FPGA_CONFIG_WRITE.
106  * a1: 64bit physical address of the configura    106  * a1: 64bit physical address of the configuration data memory block
107  * a2: Size of configuration data block.          107  * a2: Size of configuration data block.
108  * a3-7: not used.                                108  * a3-7: not used.
109  *                                                109  *
110  * Return status:                                 110  * Return status:
111  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_    111  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_STATUS_BUSY or
112  * INTEL_SIP_SMC_STATUS_ERROR.                    112  * INTEL_SIP_SMC_STATUS_ERROR.
113  * a1: 64bit physical address of 1st completed    113  * a1: 64bit physical address of 1st completed memory block if any completed
114  * block, otherwise zero value.                   114  * block, otherwise zero value.
115  * a2: 64bit physical address of 2nd completed    115  * a2: 64bit physical address of 2nd completed memory block if any completed
116  * block, otherwise zero value.                   116  * block, otherwise zero value.
117  * a3: 64bit physical address of 3rd completed    117  * a3: 64bit physical address of 3rd completed memory block if any completed
118  * block, otherwise zero value.                   118  * block, otherwise zero value.
119  */                                               119  */
120 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_WRITE    120 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_WRITE 2
121 #define INTEL_SIP_SMC_FPGA_CONFIG_WRITE \         121 #define INTEL_SIP_SMC_FPGA_CONFIG_WRITE \
122         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_S    122         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_WRITE)
123                                                   123 
124 /**                                               124 /**
125  * Request INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED    125  * Request INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE
126  *                                                126  *
127  * Sync call used by service driver at EL1 to     127  * Sync call used by service driver at EL1 to track the completed write
128  * transactions. This request is called after     128  * transactions. This request is called after INTEL_SIP_SMC_FPGA_CONFIG_WRITE
129  * call returns INTEL_SIP_SMC_STATUS_BUSY.        129  * call returns INTEL_SIP_SMC_STATUS_BUSY.
130  *                                                130  *
131  * Call register usage:                           131  * Call register usage:
132  * a0: INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRI    132  * a0: INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE.
133  * a1-7: not used.                                133  * a1-7: not used.
134  *                                                134  *
135  * Return status:                                 135  * Return status:
136  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_    136  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_FPGA_BUSY or
137  * INTEL_SIP_SMC_STATUS_ERROR.                    137  * INTEL_SIP_SMC_STATUS_ERROR.
138  * a1: 64bit physical address of 1st completed    138  * a1: 64bit physical address of 1st completed memory block.
139  * a2: 64bit physical address of 2nd completed    139  * a2: 64bit physical address of 2nd completed memory block if
140  * any completed block, otherwise zero value.     140  * any completed block, otherwise zero value.
141  * a3: 64bit physical address of 3rd completed    141  * a3: 64bit physical address of 3rd completed memory block if
142  * any completed block, otherwise zero value.     142  * any completed block, otherwise zero value.
143  */                                               143  */
144 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPL    144 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE 3
145 #define INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WR    145 #define INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE \
146 INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNC    146 INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE)
147                                                   147 
148 /**                                               148 /**
149  * Request INTEL_SIP_SMC_FPGA_CONFIG_ISDONE       149  * Request INTEL_SIP_SMC_FPGA_CONFIG_ISDONE
150  *                                                150  *
151  * Sync call used by service driver at EL1 to     151  * Sync call used by service driver at EL1 to inform secure world that all
152  * data are sent, to check whether or not the     152  * data are sent, to check whether or not the secure world had completed
153  * the FPGA configuration process.                153  * the FPGA configuration process.
154  *                                                154  *
155  * Call register usage:                           155  * Call register usage:
156  * a0: INTEL_SIP_SMC_FPGA_CONFIG_ISDONE.          156  * a0: INTEL_SIP_SMC_FPGA_CONFIG_ISDONE.
157  * a1-7: not used.                                157  * a1-7: not used.
158  *                                                158  *
159  * Return status:                                 159  * Return status:
160  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_    160  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_STATUS_BUSY or
161  * INTEL_SIP_SMC_STATUS_ERROR.                    161  * INTEL_SIP_SMC_STATUS_ERROR.
162  * a1-3: not used.                                162  * a1-3: not used.
163  */                                               163  */
164 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_ISDON    164 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_ISDONE 4
165 #define INTEL_SIP_SMC_FPGA_CONFIG_ISDONE \        165 #define INTEL_SIP_SMC_FPGA_CONFIG_ISDONE \
166         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    166         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_ISDONE)
167                                                   167 
168 /**                                               168 /**
169  * Request INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM      169  * Request INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM
170  *                                                170  *
171  * Sync call used by service driver at EL1 to     171  * Sync call used by service driver at EL1 to query the physical address of
172  * memory block reserved by secure monitor sof    172  * memory block reserved by secure monitor software.
173  *                                                173  *
174  * Call register usage:                           174  * Call register usage:
175  * a0:INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM.          175  * a0:INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM.
176  * a1-7: not used.                                176  * a1-7: not used.
177  *                                                177  *
178  * Return status:                                 178  * Return status:
179  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SM    179  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR.
180  * a1: start of physical address of reserved m    180  * a1: start of physical address of reserved memory block.
181  * a2: size of reserved memory block.             181  * a2: size of reserved memory block.
182  * a3: not used.                                  182  * a3: not used.
183  */                                               183  */
184 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_GET_M    184 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_GET_MEM 5
185 #define INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM \       185 #define INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM \
186         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    186         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_GET_MEM)
187                                                   187 
188 /**                                               188 /**
189  * Request INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK     189  * Request INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK
190  *                                                190  *
191  * For SMC loop-back mode only, used for inter    191  * For SMC loop-back mode only, used for internal integration, debugging
192  * or troubleshooting.                            192  * or troubleshooting.
193  *                                                193  *
194  * Call register usage:                           194  * Call register usage:
195  * a0: INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK.        195  * a0: INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK.
196  * a1-7: not used.                                196  * a1-7: not used.
197  *                                                197  *
198  * Return status:                                 198  * Return status:
199  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SM    199  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR.
200  * a1-3: not used.                                200  * a1-3: not used.
201  */                                               201  */
202 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_LOOPB    202 #define INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_LOOPBACK 6
203 #define INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK \      203 #define INTEL_SIP_SMC_FPGA_CONFIG_LOOPBACK \
204         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    204         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_LOOPBACK)
205                                                   205 
206 /**                                               206 /**
207  * Request INTEL_SIP_SMC_REG_READ                 207  * Request INTEL_SIP_SMC_REG_READ
208  *                                                208  *
209  * Read a protected register at EL3               209  * Read a protected register at EL3
210  *                                                210  *
211  * Call register usage:                           211  * Call register usage:
212  * a0: INTEL_SIP_SMC_REG_READ.                    212  * a0: INTEL_SIP_SMC_REG_READ.
213  * a1: register address.                          213  * a1: register address.
214  * a2-7: not used.                                214  * a2-7: not used.
215  *                                                215  *
216  * Return status:                                 216  * Return status:
217  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SM    217  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REG_ERROR.
218  * a1: value in the register                      218  * a1: value in the register
219  * a2-3: not used.                                219  * a2-3: not used.
220  */                                               220  */
221 #define INTEL_SIP_SMC_FUNCID_REG_READ 7           221 #define INTEL_SIP_SMC_FUNCID_REG_READ 7
222 #define INTEL_SIP_SMC_REG_READ \                  222 #define INTEL_SIP_SMC_REG_READ \
223         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    223         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_READ)
224                                                   224 
225 /**                                               225 /**
226  * Request INTEL_SIP_SMC_REG_WRITE                226  * Request INTEL_SIP_SMC_REG_WRITE
227  *                                                227  *
228  * Write a protected register at EL3              228  * Write a protected register at EL3
229  *                                                229  *
230  * Call register usage:                           230  * Call register usage:
231  * a0: INTEL_SIP_SMC_REG_WRITE.                   231  * a0: INTEL_SIP_SMC_REG_WRITE.
232  * a1: register address                           232  * a1: register address
233  * a2: value to program into register.            233  * a2: value to program into register.
234  * a3-7: not used.                                234  * a3-7: not used.
235  *                                                235  *
236  * Return status:                                 236  * Return status:
237  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SM    237  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REG_ERROR.
238  * a1-3: not used.                                238  * a1-3: not used.
239  */                                               239  */
240 #define INTEL_SIP_SMC_FUNCID_REG_WRITE 8          240 #define INTEL_SIP_SMC_FUNCID_REG_WRITE 8
241 #define INTEL_SIP_SMC_REG_WRITE \                 241 #define INTEL_SIP_SMC_REG_WRITE \
242         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    242         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_WRITE)
243                                                   243 
244 /**                                               244 /**
245  * Request INTEL_SIP_SMC_FUNCID_REG_UPDATE        245  * Request INTEL_SIP_SMC_FUNCID_REG_UPDATE
246  *                                                246  *
247  * Update one or more bits in a protected regi    247  * Update one or more bits in a protected register at EL3 using a
248  * read-modify-write operation.                   248  * read-modify-write operation.
249  *                                                249  *
250  * Call register usage:                           250  * Call register usage:
251  * a0: INTEL_SIP_SMC_REG_UPDATE.                  251  * a0: INTEL_SIP_SMC_REG_UPDATE.
252  * a1: register address                           252  * a1: register address
253  * a2: write Mask.                                253  * a2: write Mask.
254  * a3: value to write.                            254  * a3: value to write.
255  * a4-7: not used.                                255  * a4-7: not used.
256  *                                                256  *
257  * Return status:                                 257  * Return status:
258  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SM    258  * a0: INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_REG_ERROR.
259  * a1-3: Not used.                                259  * a1-3: Not used.
260  */                                               260  */
261 #define INTEL_SIP_SMC_FUNCID_REG_UPDATE 9         261 #define INTEL_SIP_SMC_FUNCID_REG_UPDATE 9
262 #define INTEL_SIP_SMC_REG_UPDATE \                262 #define INTEL_SIP_SMC_REG_UPDATE \
263         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    263         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_UPDATE)
264                                                   264 
265 /**                                               265 /**
266  * Request INTEL_SIP_SMC_RSU_STATUS               266  * Request INTEL_SIP_SMC_RSU_STATUS
267  *                                                267  *
268  * Request remote status update boot log, call    268  * Request remote status update boot log, call is synchronous.
269  *                                                269  *
270  * Call register usage:                           270  * Call register usage:
271  * a0 INTEL_SIP_SMC_RSU_STATUS                    271  * a0 INTEL_SIP_SMC_RSU_STATUS
272  * a1-7 not used                                  272  * a1-7 not used
273  *                                                273  *
274  * Return status                                  274  * Return status
275  * a0: Current Image                              275  * a0: Current Image
276  * a1: Last Failing Image                         276  * a1: Last Failing Image
277  * a2: Version | State                            277  * a2: Version | State
278  * a3: Error details | Error location             278  * a3: Error details | Error location
279  *                                                279  *
280  * Or                                             280  * Or
281  *                                                281  *
282  * a0: INTEL_SIP_SMC_RSU_ERROR                    282  * a0: INTEL_SIP_SMC_RSU_ERROR
283  */                                               283  */
284 #define INTEL_SIP_SMC_FUNCID_RSU_STATUS 11        284 #define INTEL_SIP_SMC_FUNCID_RSU_STATUS 11
285 #define INTEL_SIP_SMC_RSU_STATUS \                285 #define INTEL_SIP_SMC_RSU_STATUS \
286         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    286         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_STATUS)
287                                                   287 
288 /**                                               288 /**
289  * Request INTEL_SIP_SMC_RSU_UPDATE               289  * Request INTEL_SIP_SMC_RSU_UPDATE
290  *                                                290  *
291  * Request to set the offset of the bitstream     291  * Request to set the offset of the bitstream to boot after reboot, call
292  * is synchronous.                                292  * is synchronous.
293  *                                                293  *
294  * Call register usage:                           294  * Call register usage:
295  * a0 INTEL_SIP_SMC_RSU_UPDATE                    295  * a0 INTEL_SIP_SMC_RSU_UPDATE
296  * a1 64bit physical address of the configurat    296  * a1 64bit physical address of the configuration data memory in flash
297  * a2-7 not used                                  297  * a2-7 not used
298  *                                                298  *
299  * Return status                                  299  * Return status
300  * a0 INTEL_SIP_SMC_STATUS_OK                     300  * a0 INTEL_SIP_SMC_STATUS_OK
301  */                                               301  */
302 #define INTEL_SIP_SMC_FUNCID_RSU_UPDATE 12        302 #define INTEL_SIP_SMC_FUNCID_RSU_UPDATE 12
303 #define INTEL_SIP_SMC_RSU_UPDATE \                303 #define INTEL_SIP_SMC_RSU_UPDATE \
304         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    304         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_UPDATE)
305                                                   305 
306 /**                                               306 /**
307  * Request INTEL_SIP_SMC_ECC_DBE                  307  * Request INTEL_SIP_SMC_ECC_DBE
308  *                                                308  *
309  * Sync call used by service driver at EL1 to     309  * Sync call used by service driver at EL1 to alert EL3 that a Double
310  * Bit ECC error has occurred.                    310  * Bit ECC error has occurred.
311  *                                                311  *
312  * Call register usage:                           312  * Call register usage:
313  * a0 INTEL_SIP_SMC_ECC_DBE                       313  * a0 INTEL_SIP_SMC_ECC_DBE
314  * a1 SysManager Double Bit Error value           314  * a1 SysManager Double Bit Error value
315  * a2-7 not used                                  315  * a2-7 not used
316  *                                                316  *
317  * Return status                                  317  * Return status
318  * a0 INTEL_SIP_SMC_STATUS_OK                     318  * a0 INTEL_SIP_SMC_STATUS_OK
319  */                                               319  */
320 #define INTEL_SIP_SMC_FUNCID_ECC_DBE 13           320 #define INTEL_SIP_SMC_FUNCID_ECC_DBE 13
321 #define INTEL_SIP_SMC_ECC_DBE \                   321 #define INTEL_SIP_SMC_ECC_DBE \
322         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    322         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_ECC_DBE)
323                                                   323 
324 /**                                               324 /**
325  * Request INTEL_SIP_SMC_RSU_NOTIFY               325  * Request INTEL_SIP_SMC_RSU_NOTIFY
326  *                                                326  *
327  * Sync call used by service driver at EL1 to     327  * Sync call used by service driver at EL1 to report hard processor
328  * system execution stage to firmware             328  * system execution stage to firmware
329  *                                                329  *
330  * Call register usage:                           330  * Call register usage:
331  * a0 INTEL_SIP_SMC_RSU_NOTIFY                    331  * a0 INTEL_SIP_SMC_RSU_NOTIFY
332  * a1 32bit value representing hard processor     332  * a1 32bit value representing hard processor system execution stage
333  * a2-7 not used                                  333  * a2-7 not used
334  *                                                334  *
335  * Return status                                  335  * Return status
336  * a0 INTEL_SIP_SMC_STATUS_OK                     336  * a0 INTEL_SIP_SMC_STATUS_OK
337  */                                               337  */
338 #define INTEL_SIP_SMC_FUNCID_RSU_NOTIFY 14        338 #define INTEL_SIP_SMC_FUNCID_RSU_NOTIFY 14
339 #define INTEL_SIP_SMC_RSU_NOTIFY \                339 #define INTEL_SIP_SMC_RSU_NOTIFY \
340         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    340         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_NOTIFY)
341                                                   341 
342 /**                                               342 /**
343  * Request INTEL_SIP_SMC_RSU_RETRY_COUNTER        343  * Request INTEL_SIP_SMC_RSU_RETRY_COUNTER
344  *                                                344  *
345  * Sync call used by service driver at EL1 to     345  * Sync call used by service driver at EL1 to query RSU retry counter
346  *                                                346  *
347  * Call register usage:                           347  * Call register usage:
348  * a0 INTEL_SIP_SMC_RSU_RETRY_COUNTER             348  * a0 INTEL_SIP_SMC_RSU_RETRY_COUNTER
349  * a1-7 not used                                  349  * a1-7 not used
350  *                                                350  *
351  * Return status                                  351  * Return status
352  * a0 INTEL_SIP_SMC_STATUS_OK                     352  * a0 INTEL_SIP_SMC_STATUS_OK
353  * a1 the retry counter                           353  * a1 the retry counter
354  *                                                354  *
355  * Or                                             355  * Or
356  *                                                356  *
357  * a0 INTEL_SIP_SMC_RSU_ERROR                     357  * a0 INTEL_SIP_SMC_RSU_ERROR
358  */                                               358  */
359 #define INTEL_SIP_SMC_FUNCID_RSU_RETRY_COUNTER    359 #define INTEL_SIP_SMC_FUNCID_RSU_RETRY_COUNTER 15
360 #define INTEL_SIP_SMC_RSU_RETRY_COUNTER \         360 #define INTEL_SIP_SMC_RSU_RETRY_COUNTER \
361         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    361         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_RETRY_COUNTER)
362                                                   362 
363 /**                                               363 /**
364  * Request INTEL_SIP_SMC_RSU_DCMF_VERSION         364  * Request INTEL_SIP_SMC_RSU_DCMF_VERSION
365  *                                                365  *
366  * Sync call used by service driver at EL1 to     366  * Sync call used by service driver at EL1 to query DCMF (Decision
367  * Configuration Management Firmware) version     367  * Configuration Management Firmware) version from FW
368  *                                                368  *
369  * Call register usage:                           369  * Call register usage:
370  * a0 INTEL_SIP_SMC_RSU_DCMF_VERSION              370  * a0 INTEL_SIP_SMC_RSU_DCMF_VERSION
371  * a1-7 not used                                  371  * a1-7 not used
372  *                                                372  *
373  * Return status                                  373  * Return status
374  * a0 INTEL_SIP_SMC_STATUS_OK                     374  * a0 INTEL_SIP_SMC_STATUS_OK
375  * a1 dcmf1 | dcmf0                               375  * a1 dcmf1 | dcmf0
376  * a2 dcmf3 | dcmf2                               376  * a2 dcmf3 | dcmf2
377  *                                                377  *
378  * Or                                             378  * Or
379  *                                                379  *
380  * a0 INTEL_SIP_SMC_RSU_ERROR                     380  * a0 INTEL_SIP_SMC_RSU_ERROR
381  */                                               381  */
382 #define INTEL_SIP_SMC_FUNCID_RSU_DCMF_VERSION     382 #define INTEL_SIP_SMC_FUNCID_RSU_DCMF_VERSION 16
383 #define INTEL_SIP_SMC_RSU_DCMF_VERSION \          383 #define INTEL_SIP_SMC_RSU_DCMF_VERSION \
384         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    384         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_DCMF_VERSION)
385                                                   385 
386 /**                                               386 /**
387  * Request INTEL_SIP_SMC_RSU_MAX_RETRY            387  * Request INTEL_SIP_SMC_RSU_MAX_RETRY
388  *                                                388  *
389  * Sync call used by service driver at EL1 to     389  * Sync call used by service driver at EL1 to query max retry value from FW
390  *                                                390  *
391  * Call register usage:                           391  * Call register usage:
392  * a0 INTEL_SIP_SMC_RSU_MAX_RETRY                 392  * a0 INTEL_SIP_SMC_RSU_MAX_RETRY
393  * a1-7 not used                                  393  * a1-7 not used
394  *                                                394  *
395  * Return status                                  395  * Return status
396  * a0 INTEL_SIP_SMC_STATUS_OK                     396  * a0 INTEL_SIP_SMC_STATUS_OK
397  * a1 max retry value                             397  * a1 max retry value
398  *                                                398  *
399  * Or                                             399  * Or
400  * a0 INTEL_SIP_SMC_RSU_ERROR                     400  * a0 INTEL_SIP_SMC_RSU_ERROR
401  */                                               401  */
402 #define INTEL_SIP_SMC_FUNCID_RSU_MAX_RETRY 18     402 #define INTEL_SIP_SMC_FUNCID_RSU_MAX_RETRY 18
403 #define INTEL_SIP_SMC_RSU_MAX_RETRY \             403 #define INTEL_SIP_SMC_RSU_MAX_RETRY \
404         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    404         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_MAX_RETRY)
405                                                   405 
406 /**                                               406 /**
407  * Request INTEL_SIP_SMC_RSU_DCMF_STATUS          407  * Request INTEL_SIP_SMC_RSU_DCMF_STATUS
408  *                                                408  *
409  * Sync call used by service driver at EL1 to     409  * Sync call used by service driver at EL1 to query DCMF status from FW
410  *                                                410  *
411  * Call register usage:                           411  * Call register usage:
412  * a0 INTEL_SIP_SMC_RSU_DCMF_STATUS               412  * a0 INTEL_SIP_SMC_RSU_DCMF_STATUS
413  * a1-7 not used                                  413  * a1-7 not used
414  *                                                414  *
415  * Return status                                  415  * Return status
416  * a0 INTEL_SIP_SMC_STATUS_OK                     416  * a0 INTEL_SIP_SMC_STATUS_OK
417  * a1 dcmf3 | dcmf2 | dcmf1 | dcmf0               417  * a1 dcmf3 | dcmf2 | dcmf1 | dcmf0
418  *                                                418  *
419  * Or                                             419  * Or
420  *                                                420  *
421  * a0 INTEL_SIP_SMC_RSU_ERROR                     421  * a0 INTEL_SIP_SMC_RSU_ERROR
422  */                                               422  */
423 #define INTEL_SIP_SMC_FUNCID_RSU_DCMF_STATUS 2    423 #define INTEL_SIP_SMC_FUNCID_RSU_DCMF_STATUS 20
424 #define INTEL_SIP_SMC_RSU_DCMF_STATUS \           424 #define INTEL_SIP_SMC_RSU_DCMF_STATUS \
425         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    425         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_DCMF_STATUS)
426                                                   426 
427 /**                                               427 /**
428  * Request INTEL_SIP_SMC_SERVICE_COMPLETED        428  * Request INTEL_SIP_SMC_SERVICE_COMPLETED
429  * Sync call to check if the secure world have    429  * Sync call to check if the secure world have completed service request
430  * or not.                                        430  * or not.
431  *                                                431  *
432  * Call register usage:                           432  * Call register usage:
433  * a0: INTEL_SIP_SMC_SERVICE_COMPLETED            433  * a0: INTEL_SIP_SMC_SERVICE_COMPLETED
434  * a1: this register is optional. If used, it     434  * a1: this register is optional. If used, it is the physical address for
435  *     secure firmware to put output data         435  *     secure firmware to put output data
436  * a2: this register is optional. If used, it     436  * a2: this register is optional. If used, it is the size of output data
437  * a3-a7: not used                                437  * a3-a7: not used
438  *                                                438  *
439  * Return status:                                 439  * Return status:
440  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_    440  * a0: INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_STATUS_ERROR,
441  *     INTEL_SIP_SMC_REJECTED or INTEL_SIP_SMC    441  *     INTEL_SIP_SMC_REJECTED or INTEL_SIP_SMC_STATUS_BUSY
442  * a1: mailbox error if a0 is INTEL_SIP_SMC_ST    442  * a1: mailbox error if a0 is INTEL_SIP_SMC_STATUS_ERROR
443  * a2: physical address containing the process    443  * a2: physical address containing the process info
444  *     for FCS certificate -- the data contain    444  *     for FCS certificate -- the data contains the certificate status
445  *     for FCS cryption -- the data contains t    445  *     for FCS cryption -- the data contains the actual data size FW processes
446  * a3: output data size                           446  * a3: output data size
447  */                                               447  */
448 #define INTEL_SIP_SMC_FUNCID_SERVICE_COMPLETED    448 #define INTEL_SIP_SMC_FUNCID_SERVICE_COMPLETED 30
449 #define INTEL_SIP_SMC_SERVICE_COMPLETED \         449 #define INTEL_SIP_SMC_SERVICE_COMPLETED \
450         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    450         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_SERVICE_COMPLETED)
451                                                   451 
452 /**                                               452 /**
453  * Request INTEL_SIP_SMC_FIRMWARE_VERSION         453  * Request INTEL_SIP_SMC_FIRMWARE_VERSION
454  *                                                454  *
455  * Sync call used to query the version of runn    455  * Sync call used to query the version of running firmware
456  *                                                456  *
457  * Call register usage:                           457  * Call register usage:
458  * a0 INTEL_SIP_SMC_FIRMWARE_VERSION              458  * a0 INTEL_SIP_SMC_FIRMWARE_VERSION
459  * a1-a7 not used                                 459  * a1-a7 not used
460  *                                                460  *
461  * Return status:                                 461  * Return status:
462  * a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC    462  * a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_STATUS_ERROR
463  * a1 running firmware version                    463  * a1 running firmware version
464  */                                               464  */
465 #define INTEL_SIP_SMC_FUNCID_FIRMWARE_VERSION     465 #define INTEL_SIP_SMC_FUNCID_FIRMWARE_VERSION 31
466 #define INTEL_SIP_SMC_FIRMWARE_VERSION \          466 #define INTEL_SIP_SMC_FIRMWARE_VERSION \
467         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    467         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FIRMWARE_VERSION)
468                                                   468 
469 /**                                               469 /**
470  * SMC call protocol for Mailbox, starting FUN    470  * SMC call protocol for Mailbox, starting FUNCID from 60
471  *                                                471  *
472  * Call register usage:                           472  * Call register usage:
473  * a0 INTEL_SIP_SMC_MBOX_SEND_CMD                 473  * a0 INTEL_SIP_SMC_MBOX_SEND_CMD
474  * a1 mailbox command code                        474  * a1 mailbox command code
475  * a2 physical address that contain mailbox co    475  * a2 physical address that contain mailbox command data (not include header)
476  * a3 mailbox command data size in word           476  * a3 mailbox command data size in word
477  * a4 set to 0 for CASUAL, set to 1 for URGENT    477  * a4 set to 0 for CASUAL, set to 1 for URGENT
478  * a5 physical address for secure firmware to     478  * a5 physical address for secure firmware to put response data
479  *    (not include header)                        479  *    (not include header)
480  * a6 maximum size in word of physical address    480  * a6 maximum size in word of physical address to store response data
481  * a7 not used                                    481  * a7 not used
482  *                                                482  *
483  * Return status                                  483  * Return status
484  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_S    484  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_STATUS_REJECTED or
485  *    INTEL_SIP_SMC_STATUS_ERROR                  485  *    INTEL_SIP_SMC_STATUS_ERROR
486  * a1 mailbox error code                          486  * a1 mailbox error code
487  * a2 response data length in word                487  * a2 response data length in word
488  * a3 not used                                    488  * a3 not used
489  */                                               489  */
490 #define INTEL_SIP_SMC_FUNCID_MBOX_SEND_CMD 60     490 #define INTEL_SIP_SMC_FUNCID_MBOX_SEND_CMD 60
491         #define INTEL_SIP_SMC_MBOX_SEND_CMD \     491         #define INTEL_SIP_SMC_MBOX_SEND_CMD \
492         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    492         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_MBOX_SEND_CMD)
493                                                   493 
494 /**                                               494 /**
495  * Request INTEL_SIP_SMC_SVC_VERSION              495  * Request INTEL_SIP_SMC_SVC_VERSION
496  *                                                496  *
497  * Sync call used to query the SIP SMC API Ver    497  * Sync call used to query the SIP SMC API Version
498  *                                                498  *
499  * Call register usage:                           499  * Call register usage:
500  * a0 INTEL_SIP_SMC_SVC_VERSION                   500  * a0 INTEL_SIP_SMC_SVC_VERSION
501  * a1-a7 not used                                 501  * a1-a7 not used
502  *                                                502  *
503  * Return status:                                 503  * Return status:
504  * a0 INTEL_SIP_SMC_STATUS_OK                     504  * a0 INTEL_SIP_SMC_STATUS_OK
505  * a1 Major                                       505  * a1 Major
506  * a2 Minor                                       506  * a2 Minor
507  */                                               507  */
508 #define INTEL_SIP_SMC_SVC_FUNCID_VERSION 512      508 #define INTEL_SIP_SMC_SVC_FUNCID_VERSION 512
509 #define INTEL_SIP_SMC_SVC_VERSION \               509 #define INTEL_SIP_SMC_SVC_VERSION \
510         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    510         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_SVC_FUNCID_VERSION)
511                                                   511 
512 /**                                               512 /**
513  * SMC call protocol for FPGA Crypto Service (    513  * SMC call protocol for FPGA Crypto Service (FCS)
514  * FUNCID starts from 90                          514  * FUNCID starts from 90
515  */                                               515  */
516                                                   516 
517 /**                                               517 /**
518  * Request INTEL_SIP_SMC_FCS_RANDOM_NUMBER        518  * Request INTEL_SIP_SMC_FCS_RANDOM_NUMBER
519  *                                                519  *
520  * Sync call used to query the random number g    520  * Sync call used to query the random number generated by the firmware
521  *                                                521  *
522  * Call register usage:                           522  * Call register usage:
523  * a0 INTEL_SIP_SMC_FCS_RANDOM_NUMBER             523  * a0 INTEL_SIP_SMC_FCS_RANDOM_NUMBER
524  * a1 the physical address for firmware to wri    524  * a1 the physical address for firmware to write generated random data
525  * a2-a7 not used                                 525  * a2-a7 not used
526  *                                                526  *
527  * Return status:                                 527  * Return status:
528  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_F    528  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_FCS_ERROR or
529  *      INTEL_SIP_SMC_FCS_REJECTED                529  *      INTEL_SIP_SMC_FCS_REJECTED
530  * a1 mailbox error                               530  * a1 mailbox error
531  * a2 the physical address of generated random    531  * a2 the physical address of generated random number
532  * a3 size                                        532  * a3 size
533  */                                               533  */
534 #define INTEL_SIP_SMC_FUNCID_FCS_RANDOM_NUMBER    534 #define INTEL_SIP_SMC_FUNCID_FCS_RANDOM_NUMBER 90
535 #define INTEL_SIP_SMC_FCS_RANDOM_NUMBER \         535 #define INTEL_SIP_SMC_FCS_RANDOM_NUMBER \
536         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    536         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_RANDOM_NUMBER)
537                                                   537 
538 /**                                               538 /**
539  * Request INTEL_SIP_SMC_FCS_CRYPTION             539  * Request INTEL_SIP_SMC_FCS_CRYPTION
540  * Async call for data encryption and HMAC sig    540  * Async call for data encryption and HMAC signature generation, or for
541  * data decryption and HMAC verification.         541  * data decryption and HMAC verification.
542  *                                                542  *
543  * Call INTEL_SIP_SMC_SERVICE_COMPLETED to get    543  * Call INTEL_SIP_SMC_SERVICE_COMPLETED to get the output encrypted or
544  * decrypted data                                 544  * decrypted data
545  *                                                545  *
546  * Call register usage:                           546  * Call register usage:
547  * a0 INTEL_SIP_SMC_FCS_CRYPTION                  547  * a0 INTEL_SIP_SMC_FCS_CRYPTION
548  * a1 cryption mode (1 for encryption and 0 fo    548  * a1 cryption mode (1 for encryption and 0 for decryption)
549  * a2 physical address which stores to be encr    549  * a2 physical address which stores to be encrypted or decrypted data
550  * a3 input data size                             550  * a3 input data size
551  * a4 physical address which will hold the enc    551  * a4 physical address which will hold the encrypted or decrypted output data
552  * a5 output data size                            552  * a5 output data size
553  * a6-a7 not used                                 553  * a6-a7 not used
554  *                                                554  *
555  * Return status:                                 555  * Return status:
556  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_S    556  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_STATUS_ERROR or
557  *      INTEL_SIP_SMC_STATUS_REJECTED             557  *      INTEL_SIP_SMC_STATUS_REJECTED
558  * a1-3 not used                                  558  * a1-3 not used
559  */                                               559  */
560 #define INTEL_SIP_SMC_FUNCID_FCS_CRYPTION 91      560 #define INTEL_SIP_SMC_FUNCID_FCS_CRYPTION 91
561 #define INTEL_SIP_SMC_FCS_CRYPTION \              561 #define INTEL_SIP_SMC_FCS_CRYPTION \
562         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_S    562         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_CRYPTION)
563                                                   563 
564 /**                                               564 /**
565  * Request INTEL_SIP_SMC_FCS_SERVICE_REQUEST      565  * Request INTEL_SIP_SMC_FCS_SERVICE_REQUEST
566  * Async call for authentication service of HP    566  * Async call for authentication service of HPS software
567  *                                                567  *
568  * Call register usage:                           568  * Call register usage:
569  * a0 INTEL_SIP_SMC_FCS_SERVICE_REQUEST           569  * a0 INTEL_SIP_SMC_FCS_SERVICE_REQUEST
570  * a1 the physical address of data block          570  * a1 the physical address of data block
571  * a2 size of data block                          571  * a2 size of data block
572  * a3-a7 not used                                 572  * a3-a7 not used
573  *                                                573  *
574  * Return status:                                 574  * Return status:
575  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_E    575  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_ERROR or
576  *      INTEL_SIP_SMC_REJECTED                    576  *      INTEL_SIP_SMC_REJECTED
577  * a1-a3 not used                                 577  * a1-a3 not used
578  */                                               578  */
579 #define INTEL_SIP_SMC_FUNCID_FCS_SERVICE_REQUE    579 #define INTEL_SIP_SMC_FUNCID_FCS_SERVICE_REQUEST 92
580 #define INTEL_SIP_SMC_FCS_SERVICE_REQUEST \       580 #define INTEL_SIP_SMC_FCS_SERVICE_REQUEST \
581         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_S    581         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_SERVICE_REQUEST)
582                                                   582 
583 /**                                               583 /**
584  * Request INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTI    584  * Request INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE
585  * Sync call to send a signed certificate         585  * Sync call to send a signed certificate
586  *                                                586  *
587  * Call register usage:                           587  * Call register usage:
588  * a0 INTEL_SIP_SMC_FCS_SEND_CERTIFICATE          588  * a0 INTEL_SIP_SMC_FCS_SEND_CERTIFICATE
589  * a1 the physical address of CERTIFICATE bloc    589  * a1 the physical address of CERTIFICATE block
590  * a2 size of data block                          590  * a2 size of data block
591  * a3-a7 not used                                 591  * a3-a7 not used
592  *                                                592  *
593  * Return status:                                 593  * Return status:
594  * a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC    594  * a0 INTEL_SIP_SMC_STATUS_OK or INTEL_SIP_SMC_FCS_REJECTED
595  * a1-a3 not used                                 595  * a1-a3 not used
596  */                                               596  */
597 #define INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFIC    597 #define INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE 93
598 #define INTEL_SIP_SMC_FCS_SEND_CERTIFICATE \      598 #define INTEL_SIP_SMC_FCS_SEND_CERTIFICATE \
599         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_S    599         INTEL_SIP_SMC_STD_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_SEND_CERTIFICATE)
600                                                   600 
601 /**                                               601 /**
602  * Request INTEL_SIP_SMC_FCS_GET_PROVISION_DAT    602  * Request INTEL_SIP_SMC_FCS_GET_PROVISION_DATA
603  * Sync call to dump all the fuses and key has    603  * Sync call to dump all the fuses and key hashes
604  *                                                604  *
605  * Call register usage:                           605  * Call register usage:
606  * a0 INTEL_SIP_SMC_FCS_GET_PROVISION_DATA        606  * a0 INTEL_SIP_SMC_FCS_GET_PROVISION_DATA
607  * a1 the physical address for firmware to wri    607  * a1 the physical address for firmware to write structure of fuse and
608  *    key hashes                                  608  *    key hashes
609  * a2-a7 not used                                 609  * a2-a7 not used
610  *                                                610  *
611  * Return status:                                 611  * Return status:
612  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_F    612  * a0 INTEL_SIP_SMC_STATUS_OK, INTEL_SIP_SMC_FCS_ERROR or
613  *      INTEL_SIP_SMC_FCS_REJECTED                613  *      INTEL_SIP_SMC_FCS_REJECTED
614  * a1 mailbox error                               614  * a1 mailbox error
615  * a2 physical address for the structure of fu    615  * a2 physical address for the structure of fuse and key hashes
616  * a3 the size of structure                       616  * a3 the size of structure
617  *                                                617  *
618  */                                               618  */
619 #define INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION    619 #define INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA 94
620 #define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \    620 #define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA \
621         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_    621         INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FCS_GET_PROVISION_DATA)
622                                                   622 
623 #endif                                            623 #endif
624                                                   624 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php