1a189d0aeSWenhui Sheng /* 2a189d0aeSWenhui Sheng * Copyright 2020 Advanced Micro Devices, Inc. 3a189d0aeSWenhui Sheng * 4a189d0aeSWenhui Sheng * Permission is hereby granted, free of charge, to any person obtaining a 5a189d0aeSWenhui Sheng * copy of this software and associated documentation files (the "Software"), 6a189d0aeSWenhui Sheng * to deal in the Software without restriction, including without limitation 7a189d0aeSWenhui Sheng * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8a189d0aeSWenhui Sheng * and/or sell copies of the Software, and to permit persons to whom the 9a189d0aeSWenhui Sheng * Software is furnished to do so, subject to the following conditions: 10a189d0aeSWenhui Sheng * 11a189d0aeSWenhui Sheng * The above copyright notice and this permission notice shall be included in 12a189d0aeSWenhui Sheng * all copies or substantial portions of the Software. 13a189d0aeSWenhui Sheng * 14a189d0aeSWenhui Sheng * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15a189d0aeSWenhui Sheng * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16a189d0aeSWenhui Sheng * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17a189d0aeSWenhui Sheng * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18a189d0aeSWenhui Sheng * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19a189d0aeSWenhui Sheng * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20a189d0aeSWenhui Sheng * OTHER DEALINGS IN THE SOFTWARE. 21a189d0aeSWenhui Sheng * 22a189d0aeSWenhui Sheng */ 23a189d0aeSWenhui Sheng 24a189d0aeSWenhui Sheng #ifndef _TA_RAP_IF_H 25a189d0aeSWenhui Sheng #define _TA_RAP_IF_H 26a189d0aeSWenhui Sheng 27a189d0aeSWenhui Sheng /* Responses have bit 31 set */ 28a189d0aeSWenhui Sheng #define RSP_ID_MASK (1U << 31) 29a189d0aeSWenhui Sheng #define RSP_ID(cmdId) (((uint32_t)(cmdId)) | RSP_ID_MASK) 30a189d0aeSWenhui Sheng 31a189d0aeSWenhui Sheng enum ta_rap_status { 32a189d0aeSWenhui Sheng TA_RAP_STATUS__SUCCESS = 1, 33a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_GENERIC_FAILURE = 2, 34a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_CMD_NOT_SUPPORTED = 3, 35a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_INVALID_VALIDATION_METHOD = 4, 36a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_NULL_POINTER = 5, 37a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_NOT_INITIALIZED = 6, 38a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_VALIDATION_FAILED = 7, 39a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_ASIC_NOT_SUPPORTED = 8, 40a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_OPERATION_NOT_PERMISSABLE = 9, 41a189d0aeSWenhui Sheng TA_RAP_STATUS__ERROR_ALREADY_INIT = 10, 42a189d0aeSWenhui Sheng }; 43a189d0aeSWenhui Sheng 44a189d0aeSWenhui Sheng enum ta_rap_cmd { 45a189d0aeSWenhui Sheng TA_CMD_RAP__INITIALIZE = 1, 46a189d0aeSWenhui Sheng TA_CMD_RAP__VALIDATE_L0 = 2, 47a189d0aeSWenhui Sheng }; 48a189d0aeSWenhui Sheng 49a189d0aeSWenhui Sheng enum ta_rap_validation_method { 50a189d0aeSWenhui Sheng METHOD_A = 1, 51a189d0aeSWenhui Sheng }; 52a189d0aeSWenhui Sheng 53a189d0aeSWenhui Sheng struct ta_rap_cmd_input_data { 54a189d0aeSWenhui Sheng uint8_t reserved[8]; 55a189d0aeSWenhui Sheng }; 56a189d0aeSWenhui Sheng 57a189d0aeSWenhui Sheng struct ta_rap_cmd_output_data { 58a189d0aeSWenhui Sheng uint32_t last_subsection; 59a189d0aeSWenhui Sheng uint32_t num_total_validate; 60a189d0aeSWenhui Sheng uint32_t num_valid; 61a189d0aeSWenhui Sheng uint32_t last_validate_addr; 62a189d0aeSWenhui Sheng uint32_t last_validate_val; 63a189d0aeSWenhui Sheng uint32_t last_validate_val_exptd; 64a189d0aeSWenhui Sheng }; 65a189d0aeSWenhui Sheng 66a189d0aeSWenhui Sheng union ta_rap_cmd_input { 67a189d0aeSWenhui Sheng struct ta_rap_cmd_input_data input; 68a189d0aeSWenhui Sheng }; 69a189d0aeSWenhui Sheng 70a189d0aeSWenhui Sheng union ta_rap_cmd_output { 71a189d0aeSWenhui Sheng struct ta_rap_cmd_output_data output; 72a189d0aeSWenhui Sheng }; 73a189d0aeSWenhui Sheng 74a189d0aeSWenhui Sheng struct ta_rap_shared_memory { 75a189d0aeSWenhui Sheng uint32_t cmd_id; 76a189d0aeSWenhui Sheng uint32_t validation_method_id; 77a189d0aeSWenhui Sheng uint32_t resp_id; 78a189d0aeSWenhui Sheng enum ta_rap_status rap_status; 79a189d0aeSWenhui Sheng union ta_rap_cmd_input rap_in_message; 80a189d0aeSWenhui Sheng union ta_rap_cmd_output rap_out_message; 81a189d0aeSWenhui Sheng uint8_t reserved[64]; 82a189d0aeSWenhui Sheng }; 83a189d0aeSWenhui Sheng 84a189d0aeSWenhui Sheng #endif // #define _TA_RAP_IF_H 85