1 /* 2 * Copyright (c) 2020, The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef _UNIFORM_REO_STATUS_HEADER_H_ 18 #define _UNIFORM_REO_STATUS_HEADER_H_ 19 #if !defined(__ASSEMBLER__) 20 #endif 21 22 23 // ################ START SUMMARY ################# 24 // 25 // Dword Fields 26 // 0 reo_status_number[15:0], cmd_execution_time[25:16], reo_cmd_execution_status[27:26], reserved_0a[31:28] 27 // 1 timestamp[31:0] 28 // 29 // ################ END SUMMARY ################# 30 31 #define NUM_OF_DWORDS_UNIFORM_REO_STATUS_HEADER 2 32 33 struct uniform_reo_status_header { 34 uint32_t reo_status_number : 16, //[15:0] 35 cmd_execution_time : 10, //[25:16] 36 reo_cmd_execution_status : 2, //[27:26] 37 reserved_0a : 4; //[31:28] 38 uint32_t timestamp : 32; //[31:0] 39 }; 40 41 /* 42 43 reo_status_number 44 45 Consumer: SW , DEBUG 46 47 Producer: REO 48 49 50 51 The value in this field is equal to value of the 52 'REO_CMD_Number' field the REO command 53 54 55 56 This field helps to correlate the statuses with the REO 57 commands. 58 59 60 61 <legal all> 62 63 cmd_execution_time 64 65 Consumer: DEBUG 66 67 Producer: REO 68 69 70 71 The amount of time REO took to excecute the command. 72 Note that this time does not include the duration of the 73 command waiting in the command ring, before the execution 74 started. 75 76 77 78 In us. 79 80 81 82 <legal all> 83 84 reo_cmd_execution_status 85 86 Consumer: DEBUG 87 88 Producer: REO 89 90 91 92 Execution status of the command. 93 94 95 96 <enum 0 reo_successful_execution> Command has 97 successfully be executed 98 99 <enum 1 reo_blocked_execution> Command could not be 100 executed as the queue or cache was blocked 101 102 <enum 2 reo_failed_execution> Command has encountered 103 problems when executing, like the queue descriptor not being 104 valid. None of the status fields in the entire STATUS TLV 105 are valid. 106 107 <enum 3 reo_resource_blocked> Command is NOT executed 108 because one or more descriptors were blocked. This is SW 109 programming mistake. 110 111 None of the status fields in the entire STATUS TLV are 112 valid. 113 114 115 116 <legal 0-3> 117 118 reserved_0a 119 120 <legal 0> 121 122 timestamp 123 124 Timestamp at the moment that this status report is 125 written. 126 127 128 129 <legal all> 130 */ 131 132 133 /* Description UNIFORM_REO_STATUS_HEADER_0_REO_STATUS_NUMBER 134 135 Consumer: SW , DEBUG 136 137 Producer: REO 138 139 140 141 The value in this field is equal to value of the 142 'REO_CMD_Number' field the REO command 143 144 145 146 This field helps to correlate the statuses with the REO 147 commands. 148 149 150 151 <legal all> 152 */ 153 #define UNIFORM_REO_STATUS_HEADER_0_REO_STATUS_NUMBER_OFFSET 0x00000000 154 #define UNIFORM_REO_STATUS_HEADER_0_REO_STATUS_NUMBER_LSB 0 155 #define UNIFORM_REO_STATUS_HEADER_0_REO_STATUS_NUMBER_MASK 0x0000ffff 156 157 /* Description UNIFORM_REO_STATUS_HEADER_0_CMD_EXECUTION_TIME 158 159 Consumer: DEBUG 160 161 Producer: REO 162 163 164 165 The amount of time REO took to excecute the command. 166 Note that this time does not include the duration of the 167 command waiting in the command ring, before the execution 168 started. 169 170 171 172 In us. 173 174 175 176 <legal all> 177 */ 178 #define UNIFORM_REO_STATUS_HEADER_0_CMD_EXECUTION_TIME_OFFSET 0x00000000 179 #define UNIFORM_REO_STATUS_HEADER_0_CMD_EXECUTION_TIME_LSB 16 180 #define UNIFORM_REO_STATUS_HEADER_0_CMD_EXECUTION_TIME_MASK 0x03ff0000 181 182 /* Description UNIFORM_REO_STATUS_HEADER_0_REO_CMD_EXECUTION_STATUS 183 184 Consumer: DEBUG 185 186 Producer: REO 187 188 189 190 Execution status of the command. 191 192 193 194 <enum 0 reo_successful_execution> Command has 195 successfully be executed 196 197 <enum 1 reo_blocked_execution> Command could not be 198 executed as the queue or cache was blocked 199 200 <enum 2 reo_failed_execution> Command has encountered 201 problems when executing, like the queue descriptor not being 202 valid. None of the status fields in the entire STATUS TLV 203 are valid. 204 205 <enum 3 reo_resource_blocked> Command is NOT executed 206 because one or more descriptors were blocked. This is SW 207 programming mistake. 208 209 None of the status fields in the entire STATUS TLV are 210 valid. 211 212 213 214 <legal 0-3> 215 */ 216 #define UNIFORM_REO_STATUS_HEADER_0_REO_CMD_EXECUTION_STATUS_OFFSET 0x00000000 217 #define UNIFORM_REO_STATUS_HEADER_0_REO_CMD_EXECUTION_STATUS_LSB 26 218 #define UNIFORM_REO_STATUS_HEADER_0_REO_CMD_EXECUTION_STATUS_MASK 0x0c000000 219 220 /* Description UNIFORM_REO_STATUS_HEADER_0_RESERVED_0A 221 222 <legal 0> 223 */ 224 #define UNIFORM_REO_STATUS_HEADER_0_RESERVED_0A_OFFSET 0x00000000 225 #define UNIFORM_REO_STATUS_HEADER_0_RESERVED_0A_LSB 28 226 #define UNIFORM_REO_STATUS_HEADER_0_RESERVED_0A_MASK 0xf0000000 227 228 /* Description UNIFORM_REO_STATUS_HEADER_1_TIMESTAMP 229 230 Timestamp at the moment that this status report is 231 written. 232 233 234 235 <legal all> 236 */ 237 #define UNIFORM_REO_STATUS_HEADER_1_TIMESTAMP_OFFSET 0x00000004 238 #define UNIFORM_REO_STATUS_HEADER_1_TIMESTAMP_LSB 0 239 #define UNIFORM_REO_STATUS_HEADER_1_TIMESTAMP_MASK 0xffffffff 240 241 242 #endif // _UNIFORM_REO_STATUS_HEADER_H_ 243