diff options
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/firmware/intel/stratix10-smc.h | 47 | ||||
| -rw-r--r-- | include/linux/firmware/intel/stratix10-svc-client.h | 20 |
2 files changed, 65 insertions, 2 deletions
diff --git a/include/linux/firmware/intel/stratix10-smc.h b/include/linux/firmware/intel/stratix10-smc.h index a109e4ccbc7e..5be5dab50b13 100644 --- a/include/linux/firmware/intel/stratix10-smc.h +++ b/include/linux/firmware/intel/stratix10-smc.h | |||
| @@ -67,6 +67,12 @@ | |||
| 67 | * | 67 | * |
| 68 | * INTEL_SIP_SMC_FPGA_CONFIG_STATUS_ERROR: | 68 | * INTEL_SIP_SMC_FPGA_CONFIG_STATUS_ERROR: |
| 69 | * There is error during the FPGA configuration process. | 69 | * There is error during the FPGA configuration process. |
| 70 | * | ||
| 71 | * INTEL_SIP_SMC_REG_ERROR: | ||
| 72 | * There is error during a read or write operation of the protected registers. | ||
| 73 | * | ||
| 74 | * INTEL_SIP_SMC_RSU_ERROR: | ||
| 75 | * There is error during a remote status update. | ||
| 70 | */ | 76 | */ |
| 71 | #define INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION 0xFFFFFFFF | 77 | #define INTEL_SIP_SMC_RETURN_UNKNOWN_FUNCTION 0xFFFFFFFF |
| 72 | #define INTEL_SIP_SMC_STATUS_OK 0x0 | 78 | #define INTEL_SIP_SMC_STATUS_OK 0x0 |
| @@ -74,6 +80,7 @@ | |||
| 74 | #define INTEL_SIP_SMC_FPGA_CONFIG_STATUS_REJECTED 0x2 | 80 | #define INTEL_SIP_SMC_FPGA_CONFIG_STATUS_REJECTED 0x2 |
| 75 | #define INTEL_SIP_SMC_FPGA_CONFIG_STATUS_ERROR 0x4 | 81 | #define INTEL_SIP_SMC_FPGA_CONFIG_STATUS_ERROR 0x4 |
| 76 | #define INTEL_SIP_SMC_REG_ERROR 0x5 | 82 | #define INTEL_SIP_SMC_REG_ERROR 0x5 |
| 83 | #define INTEL_SIP_SMC_RSU_ERROR 0x7 | ||
| 77 | 84 | ||
| 78 | /** | 85 | /** |
| 79 | * Request INTEL_SIP_SMC_FPGA_CONFIG_START | 86 | * Request INTEL_SIP_SMC_FPGA_CONFIG_START |
| @@ -262,4 +269,44 @@ INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_FPGA_CONFIG_COMPLETED_WRITE) | |||
| 262 | #define INTEL_SIP_SMC_REG_UPDATE \ | 269 | #define INTEL_SIP_SMC_REG_UPDATE \ |
| 263 | INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_UPDATE) | 270 | INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_REG_UPDATE) |
| 264 | 271 | ||
| 272 | /* | ||
| 273 | * Request INTEL_SIP_SMC_RSU_STATUS | ||
| 274 | * | ||
| 275 | * Request remote status update boot log, call is synchronous. | ||
| 276 | * | ||
| 277 | * Call register usage: | ||
| 278 | * a0 INTEL_SIP_SMC_RSU_STATUS | ||
| 279 | * a1-7 not used | ||
| 280 | * | ||
| 281 | * Return status | ||
| 282 | * a0: Current Image | ||
| 283 | * a1: Last Failing Image | ||
| 284 | * a2: Version | State | ||
| 285 | * a3: Error details | Error location | ||
| 286 | * | ||
| 287 | * Or | ||
| 288 | * | ||
| 289 | * a0: INTEL_SIP_SMC_RSU_ERROR | ||
| 290 | */ | ||
| 291 | #define INTEL_SIP_SMC_FUNCID_RSU_STATUS 11 | ||
| 292 | #define INTEL_SIP_SMC_RSU_STATUS \ | ||
| 293 | INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_STATUS) | ||
| 294 | |||
| 295 | /* | ||
| 296 | * Request INTEL_SIP_SMC_RSU_UPDATE | ||
| 297 | * | ||
| 298 | * Request to set the offset of the bitstream to boot after reboot, call | ||
| 299 | * is synchronous. | ||
| 300 | * | ||
| 301 | * Call register usage: | ||
| 302 | * a0 INTEL_SIP_SMC_RSU_UPDATE | ||
| 303 | * a1 64bit physical address of the configuration data memory in flash | ||
| 304 | * a2-7 not used | ||
| 305 | * | ||
| 306 | * Return status | ||
| 307 | * a0 INTEL_SIP_SMC_STATUS_OK | ||
| 308 | */ | ||
| 309 | #define INTEL_SIP_SMC_FUNCID_RSU_UPDATE 12 | ||
| 310 | #define INTEL_SIP_SMC_RSU_UPDATE \ | ||
| 311 | INTEL_SIP_SMC_FAST_CALL_VAL(INTEL_SIP_SMC_FUNCID_RSU_UPDATE) | ||
| 265 | #endif | 312 | #endif |
diff --git a/include/linux/firmware/intel/stratix10-svc-client.h b/include/linux/firmware/intel/stratix10-svc-client.h index f2fda7e1ca52..e521f172a47a 100644 --- a/include/linux/firmware/intel/stratix10-svc-client.h +++ b/include/linux/firmware/intel/stratix10-svc-client.h | |||
| @@ -10,8 +10,10 @@ | |||
| 10 | * Service layer driver supports client names | 10 | * Service layer driver supports client names |
| 11 | * | 11 | * |
| 12 | * fpga: for FPGA configuration | 12 | * fpga: for FPGA configuration |
| 13 | * rsu: for remote status update | ||
| 13 | */ | 14 | */ |
| 14 | #define SVC_CLIENT_FPGA "fpga" | 15 | #define SVC_CLIENT_FPGA "fpga" |
| 16 | #define SVC_CLIENT_RSU "rsu" | ||
| 15 | 17 | ||
| 16 | /** | 18 | /** |
| 17 | * Status of the sent command, in bit number | 19 | * Status of the sent command, in bit number |
| @@ -36,6 +38,9 @@ | |||
| 36 | * | 38 | * |
| 37 | * SVC_COMMAND_STATUS_RECONFIG_ERROR: | 39 | * SVC_COMMAND_STATUS_RECONFIG_ERROR: |
| 38 | * Error encountered during FPGA configuration. | 40 | * Error encountered during FPGA configuration. |
| 41 | * | ||
| 42 | * SVC_STATUS_RSU_OK: | ||
| 43 | * Secure firmware accepts the request of remote status update (RSU). | ||
| 39 | */ | 44 | */ |
| 40 | #define SVC_STATUS_RECONFIG_REQUEST_OK 0 | 45 | #define SVC_STATUS_RECONFIG_REQUEST_OK 0 |
| 41 | #define SVC_STATUS_RECONFIG_BUFFER_SUBMITTED 1 | 46 | #define SVC_STATUS_RECONFIG_BUFFER_SUBMITTED 1 |
| @@ -43,7 +48,8 @@ | |||
| 43 | #define SVC_STATUS_RECONFIG_COMPLETED 3 | 48 | #define SVC_STATUS_RECONFIG_COMPLETED 3 |
| 44 | #define SVC_STATUS_RECONFIG_BUSY 4 | 49 | #define SVC_STATUS_RECONFIG_BUSY 4 |
| 45 | #define SVC_STATUS_RECONFIG_ERROR 5 | 50 | #define SVC_STATUS_RECONFIG_ERROR 5 |
| 46 | 51 | #define SVC_STATUS_RSU_OK 6 | |
| 52 | #define SVC_STATUS_RSU_ERROR 7 | ||
| 47 | /** | 53 | /** |
| 48 | * Flag bit for COMMAND_RECONFIG | 54 | * Flag bit for COMMAND_RECONFIG |
| 49 | * | 55 | * |
| @@ -56,9 +62,11 @@ | |||
| 56 | /** | 62 | /** |
| 57 | * Timeout settings for service clients: | 63 | * Timeout settings for service clients: |
| 58 | * timeout value used in Stratix10 FPGA manager driver. | 64 | * timeout value used in Stratix10 FPGA manager driver. |
| 65 | * timeout value used in RSU driver | ||
| 59 | */ | 66 | */ |
| 60 | #define SVC_RECONFIG_REQUEST_TIMEOUT_MS 100 | 67 | #define SVC_RECONFIG_REQUEST_TIMEOUT_MS 100 |
| 61 | #define SVC_RECONFIG_BUFFER_TIMEOUT_MS 240 | 68 | #define SVC_RECONFIG_BUFFER_TIMEOUT_MS 240 |
| 69 | #define SVC_RSU_REQUEST_TIMEOUT_MS 300 | ||
| 62 | 70 | ||
| 63 | struct stratix10_svc_chan; | 71 | struct stratix10_svc_chan; |
| 64 | 72 | ||
| @@ -81,13 +89,21 @@ struct stratix10_svc_chan; | |||
| 81 | * @COMMAND_RECONFIG_STATUS: check the status of the configuration, return | 89 | * @COMMAND_RECONFIG_STATUS: check the status of the configuration, return |
| 82 | * status is SVC_STATUS_RECONFIG_COMPLETED, or SVC_STATUS_RECONFIG_BUSY, or | 90 | * status is SVC_STATUS_RECONFIG_COMPLETED, or SVC_STATUS_RECONFIG_BUSY, or |
| 83 | * SVC_STATUS_RECONFIG_ERROR | 91 | * SVC_STATUS_RECONFIG_ERROR |
| 92 | * | ||
| 93 | * @COMMAND_RSU_STATUS: request remote system update boot log, return status | ||
| 94 | * is log data or SVC_STATUS_RSU_ERROR | ||
| 95 | * | ||
| 96 | * @COMMAND_RSU_UPDATE: set the offset of the bitstream to boot after reboot, | ||
| 97 | * return status is SVC_STATUS_RSU_OK or SVC_STATUS_RSU_ERROR | ||
| 84 | */ | 98 | */ |
| 85 | enum stratix10_svc_command_code { | 99 | enum stratix10_svc_command_code { |
| 86 | COMMAND_NOOP = 0, | 100 | COMMAND_NOOP = 0, |
| 87 | COMMAND_RECONFIG, | 101 | COMMAND_RECONFIG, |
| 88 | COMMAND_RECONFIG_DATA_SUBMIT, | 102 | COMMAND_RECONFIG_DATA_SUBMIT, |
| 89 | COMMAND_RECONFIG_DATA_CLAIM, | 103 | COMMAND_RECONFIG_DATA_CLAIM, |
| 90 | COMMAND_RECONFIG_STATUS | 104 | COMMAND_RECONFIG_STATUS, |
| 105 | COMMAND_RSU_STATUS, | ||
| 106 | COMMAND_RSU_UPDATE | ||
| 91 | }; | 107 | }; |
| 92 | 108 | ||
| 93 | /** | 109 | /** |
