1 /* 2 * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 // DO NOT EDIT! This file is automatically generated 20 // These definitions are tied to a particular hardware layout 21 22 23 #ifndef _REO_UNBLOCK_CACHE_STATUS_H_ 24 #define _REO_UNBLOCK_CACHE_STATUS_H_ 25 #if !defined(__ASSEMBLER__) 26 #endif 27 28 #include "uniform_reo_status_header.h" 29 30 // ################ START SUMMARY ################# 31 // 32 // Dword Fields 33 // 0-1 struct uniform_reo_status_header status_header; 34 // 2 error_detected[0], unblock_type[1], reserved_2a[31:2] 35 // 3 reserved_3a[31:0] 36 // 4 reserved_4a[31:0] 37 // 5 reserved_5a[31:0] 38 // 6 reserved_6a[31:0] 39 // 7 reserved_7a[31:0] 40 // 8 reserved_8a[31:0] 41 // 9 reserved_9a[31:0] 42 // 10 reserved_10a[31:0] 43 // 11 reserved_11a[31:0] 44 // 12 reserved_12a[31:0] 45 // 13 reserved_13a[31:0] 46 // 14 reserved_14a[31:0] 47 // 15 reserved_15a[31:0] 48 // 16 reserved_16a[31:0] 49 // 17 reserved_17a[31:0] 50 // 18 reserved_18a[31:0] 51 // 19 reserved_19a[31:0] 52 // 20 reserved_20a[31:0] 53 // 21 reserved_21a[31:0] 54 // 22 reserved_22a[31:0] 55 // 23 reserved_23a[31:0] 56 // 24 reserved_24a[27:0], looping_count[31:28] 57 // 58 // ################ END SUMMARY ################# 59 60 #define NUM_OF_DWORDS_REO_UNBLOCK_CACHE_STATUS 25 61 62 struct reo_unblock_cache_status { 63 struct uniform_reo_status_header status_header; 64 uint32_t error_detected : 1, //[0] 65 unblock_type : 1, //[1] 66 reserved_2a : 30; //[31:2] 67 uint32_t reserved_3a : 32; //[31:0] 68 uint32_t reserved_4a : 32; //[31:0] 69 uint32_t reserved_5a : 32; //[31:0] 70 uint32_t reserved_6a : 32; //[31:0] 71 uint32_t reserved_7a : 32; //[31:0] 72 uint32_t reserved_8a : 32; //[31:0] 73 uint32_t reserved_9a : 32; //[31:0] 74 uint32_t reserved_10a : 32; //[31:0] 75 uint32_t reserved_11a : 32; //[31:0] 76 uint32_t reserved_12a : 32; //[31:0] 77 uint32_t reserved_13a : 32; //[31:0] 78 uint32_t reserved_14a : 32; //[31:0] 79 uint32_t reserved_15a : 32; //[31:0] 80 uint32_t reserved_16a : 32; //[31:0] 81 uint32_t reserved_17a : 32; //[31:0] 82 uint32_t reserved_18a : 32; //[31:0] 83 uint32_t reserved_19a : 32; //[31:0] 84 uint32_t reserved_20a : 32; //[31:0] 85 uint32_t reserved_21a : 32; //[31:0] 86 uint32_t reserved_22a : 32; //[31:0] 87 uint32_t reserved_23a : 32; //[31:0] 88 uint32_t reserved_24a : 28, //[27:0] 89 looping_count : 4; //[31:28] 90 }; 91 92 /* 93 94 struct uniform_reo_status_header status_header 95 96 Consumer: SW 97 98 Producer: REO 99 100 101 102 Details that can link this status with the original 103 command. It also contains info on how long REO took to 104 execute this command. 105 106 error_detected 107 108 Status for blocking resource handling 109 110 111 112 0: No error has been detected while executing this 113 command 114 115 1: The blocking resource was not in use, and therefor it 116 could not be 'unblocked' 117 118 unblock_type 119 120 Reference to the type of Unblock command type... 121 122 123 124 <enum 0 unblock_resource_index> Unblock a blocking 125 resource 126 127 128 129 <enum 1 unblock_cache> The entire cache usage is 130 unblock. 131 132 133 134 <legal all> 135 136 reserved_2a 137 138 <legal 0> 139 140 reserved_3a 141 142 <legal 0> 143 144 reserved_4a 145 146 <legal 0> 147 148 reserved_5a 149 150 <legal 0> 151 152 reserved_6a 153 154 <legal 0> 155 156 reserved_7a 157 158 <legal 0> 159 160 reserved_8a 161 162 <legal 0> 163 164 reserved_9a 165 166 <legal 0> 167 168 reserved_10a 169 170 <legal 0> 171 172 reserved_11a 173 174 <legal 0> 175 176 reserved_12a 177 178 <legal 0> 179 180 reserved_13a 181 182 <legal 0> 183 184 reserved_14a 185 186 <legal 0> 187 188 reserved_15a 189 190 <legal 0> 191 192 reserved_16a 193 194 <legal 0> 195 196 reserved_17a 197 198 <legal 0> 199 200 reserved_18a 201 202 <legal 0> 203 204 reserved_19a 205 206 <legal 0> 207 208 reserved_20a 209 210 <legal 0> 211 212 reserved_21a 213 214 <legal 0> 215 216 reserved_22a 217 218 <legal 0> 219 220 reserved_23a 221 222 <legal 0> 223 224 reserved_24a 225 226 <legal 0> 227 228 looping_count 229 230 A count value that indicates the number of times the 231 producer of entries into this Ring has looped around the 232 ring. 233 234 At initialization time, this value is set to 0. On the 235 first loop, this value is set to 1. After the max value is 236 reached allowed by the number of bits for this field, the 237 count value continues with 0 again. 238 239 240 241 In case SW is the consumer of the ring entries, it can 242 use this field to figure out up to where the producer of 243 entries has created new entries. This eliminates the need to 244 check where the head pointer' of the ring is located once 245 the SW starts processing an interrupt indicating that new 246 entries have been put into this ring... 247 248 249 250 Also note that SW if it wants only needs to look at the 251 LSB bit of this count value. 252 253 <legal all> 254 */ 255 256 #define REO_UNBLOCK_CACHE_STATUS_0_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_OFFSET 0x00000000 257 #define REO_UNBLOCK_CACHE_STATUS_0_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_LSB 28 258 #define REO_UNBLOCK_CACHE_STATUS_0_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_MASK 0xffffffff 259 #define REO_UNBLOCK_CACHE_STATUS_1_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_OFFSET 0x00000004 260 #define REO_UNBLOCK_CACHE_STATUS_1_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_LSB 28 261 #define REO_UNBLOCK_CACHE_STATUS_1_UNIFORM_REO_STATUS_HEADER_STATUS_HEADER_MASK 0xffffffff 262 263 /* Description REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED 264 265 Status for blocking resource handling 266 267 268 269 0: No error has been detected while executing this 270 command 271 272 1: The blocking resource was not in use, and therefor it 273 could not be 'unblocked' 274 */ 275 #define REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED_OFFSET 0x00000008 276 #define REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED_LSB 0 277 #define REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED_MASK 0x00000001 278 279 /* Description REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE 280 281 Reference to the type of Unblock command type... 282 283 284 285 <enum 0 unblock_resource_index> Unblock a blocking 286 resource 287 288 289 290 <enum 1 unblock_cache> The entire cache usage is 291 unblock. 292 293 294 295 <legal all> 296 */ 297 #define REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE_OFFSET 0x00000008 298 #define REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE_LSB 1 299 #define REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE_MASK 0x00000002 300 301 /* Description REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A 302 303 <legal 0> 304 */ 305 #define REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A_OFFSET 0x00000008 306 #define REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A_LSB 2 307 #define REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A_MASK 0xfffffffc 308 309 /* Description REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A 310 311 <legal 0> 312 */ 313 #define REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A_OFFSET 0x0000000c 314 #define REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A_LSB 0 315 #define REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A_MASK 0xffffffff 316 317 /* Description REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A 318 319 <legal 0> 320 */ 321 #define REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A_OFFSET 0x00000010 322 #define REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A_LSB 0 323 #define REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A_MASK 0xffffffff 324 325 /* Description REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A 326 327 <legal 0> 328 */ 329 #define REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A_OFFSET 0x00000014 330 #define REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A_LSB 0 331 #define REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A_MASK 0xffffffff 332 333 /* Description REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A 334 335 <legal 0> 336 */ 337 #define REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A_OFFSET 0x00000018 338 #define REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A_LSB 0 339 #define REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A_MASK 0xffffffff 340 341 /* Description REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A 342 343 <legal 0> 344 */ 345 #define REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A_OFFSET 0x0000001c 346 #define REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A_LSB 0 347 #define REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A_MASK 0xffffffff 348 349 /* Description REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A 350 351 <legal 0> 352 */ 353 #define REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A_OFFSET 0x00000020 354 #define REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A_LSB 0 355 #define REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A_MASK 0xffffffff 356 357 /* Description REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A 358 359 <legal 0> 360 */ 361 #define REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A_OFFSET 0x00000024 362 #define REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A_LSB 0 363 #define REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A_MASK 0xffffffff 364 365 /* Description REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A 366 367 <legal 0> 368 */ 369 #define REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A_OFFSET 0x00000028 370 #define REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A_LSB 0 371 #define REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A_MASK 0xffffffff 372 373 /* Description REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A 374 375 <legal 0> 376 */ 377 #define REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A_OFFSET 0x0000002c 378 #define REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A_LSB 0 379 #define REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A_MASK 0xffffffff 380 381 /* Description REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A 382 383 <legal 0> 384 */ 385 #define REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A_OFFSET 0x00000030 386 #define REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A_LSB 0 387 #define REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A_MASK 0xffffffff 388 389 /* Description REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A 390 391 <legal 0> 392 */ 393 #define REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A_OFFSET 0x00000034 394 #define REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A_LSB 0 395 #define REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A_MASK 0xffffffff 396 397 /* Description REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A 398 399 <legal 0> 400 */ 401 #define REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A_OFFSET 0x00000038 402 #define REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A_LSB 0 403 #define REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A_MASK 0xffffffff 404 405 /* Description REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A 406 407 <legal 0> 408 */ 409 #define REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A_OFFSET 0x0000003c 410 #define REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A_LSB 0 411 #define REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A_MASK 0xffffffff 412 413 /* Description REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A 414 415 <legal 0> 416 */ 417 #define REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A_OFFSET 0x00000040 418 #define REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A_LSB 0 419 #define REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A_MASK 0xffffffff 420 421 /* Description REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A 422 423 <legal 0> 424 */ 425 #define REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A_OFFSET 0x00000044 426 #define REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A_LSB 0 427 #define REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A_MASK 0xffffffff 428 429 /* Description REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A 430 431 <legal 0> 432 */ 433 #define REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A_OFFSET 0x00000048 434 #define REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A_LSB 0 435 #define REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A_MASK 0xffffffff 436 437 /* Description REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A 438 439 <legal 0> 440 */ 441 #define REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A_OFFSET 0x0000004c 442 #define REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A_LSB 0 443 #define REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A_MASK 0xffffffff 444 445 /* Description REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A 446 447 <legal 0> 448 */ 449 #define REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A_OFFSET 0x00000050 450 #define REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A_LSB 0 451 #define REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A_MASK 0xffffffff 452 453 /* Description REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A 454 455 <legal 0> 456 */ 457 #define REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A_OFFSET 0x00000054 458 #define REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A_LSB 0 459 #define REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A_MASK 0xffffffff 460 461 /* Description REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A 462 463 <legal 0> 464 */ 465 #define REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A_OFFSET 0x00000058 466 #define REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A_LSB 0 467 #define REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A_MASK 0xffffffff 468 469 /* Description REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A 470 471 <legal 0> 472 */ 473 #define REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A_OFFSET 0x0000005c 474 #define REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A_LSB 0 475 #define REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A_MASK 0xffffffff 476 477 /* Description REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A 478 479 <legal 0> 480 */ 481 #define REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A_OFFSET 0x00000060 482 #define REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A_LSB 0 483 #define REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A_MASK 0x0fffffff 484 485 /* Description REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT 486 487 A count value that indicates the number of times the 488 producer of entries into this Ring has looped around the 489 ring. 490 491 At initialization time, this value is set to 0. On the 492 first loop, this value is set to 1. After the max value is 493 reached allowed by the number of bits for this field, the 494 count value continues with 0 again. 495 496 497 498 In case SW is the consumer of the ring entries, it can 499 use this field to figure out up to where the producer of 500 entries has created new entries. This eliminates the need to 501 check where the head pointer' of the ring is located once 502 the SW starts processing an interrupt indicating that new 503 entries have been put into this ring... 504 505 506 507 Also note that SW if it wants only needs to look at the 508 LSB bit of this count value. 509 510 <legal all> 511 */ 512 #define REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT_OFFSET 0x00000060 513 #define REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT_LSB 28 514 #define REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT_MASK 0xf0000000 515 516 517 #endif // _REO_UNBLOCK_CACHE_STATUS_H_ 518