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