reo_unblock_cache.h 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. /*
  2. * Copyright (c) 2016-2018 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. #ifndef _REO_UNBLOCK_CACHE_H_
  19. #define _REO_UNBLOCK_CACHE_H_
  20. #if !defined(__ASSEMBLER__)
  21. #endif
  22. #include "uniform_reo_cmd_header.h"
  23. // ################ START SUMMARY #################
  24. //
  25. // Dword Fields
  26. // 0 struct uniform_reo_cmd_header cmd_header;
  27. // 1 unblock_type[0], cache_block_resource_index[2:1], reserved_1a[31:3]
  28. // 2 reserved_2a[31:0]
  29. // 3 reserved_3a[31:0]
  30. // 4 reserved_4a[31:0]
  31. // 5 reserved_5a[31:0]
  32. // 6 reserved_6a[31:0]
  33. // 7 reserved_7a[31:0]
  34. // 8 reserved_8a[31:0]
  35. //
  36. // ################ END SUMMARY #################
  37. #define NUM_OF_DWORDS_REO_UNBLOCK_CACHE 9
  38. struct reo_unblock_cache {
  39. struct uniform_reo_cmd_header cmd_header;
  40. uint32_t unblock_type : 1, //[0]
  41. cache_block_resource_index : 2, //[2:1]
  42. reserved_1a : 29; //[31:3]
  43. uint32_t reserved_2a : 32; //[31:0]
  44. uint32_t reserved_3a : 32; //[31:0]
  45. uint32_t reserved_4a : 32; //[31:0]
  46. uint32_t reserved_5a : 32; //[31:0]
  47. uint32_t reserved_6a : 32; //[31:0]
  48. uint32_t reserved_7a : 32; //[31:0]
  49. uint32_t reserved_8a : 32; //[31:0]
  50. };
  51. /*
  52. struct uniform_reo_cmd_header cmd_header
  53. Consumer: REO
  54. Producer: SW
  55. Details for command execution tracking purposes.
  56. unblock_type
  57. Unblock type
  58. <enum 0 unblock_resource_index> Unblock a block
  59. resource, whose index is given in field
  60. 'cache_block_resource_index'.
  61. If the indicated blocking resource is not in use (=> not
  62. blocking an address at the moment), the command status will
  63. indicate an error.
  64. <enum 1 unblock_cache> The entire cache usage is
  65. unblocked.
  66. If the entire cache is not in a blocked mode at the
  67. moment this command is received, the command status will
  68. indicate an error.
  69. Note that unlocking the entire cache has no changes to
  70. the current settings of the blocking resource settings
  71. <legal all>
  72. cache_block_resource_index
  73. Field not valid when field Unblock_type is set to
  74. unblock_cache.
  75. Indicates which of the four blocking resources in REO
  76. should be released from blocking a (descriptor) address.
  77. <legal all>
  78. reserved_1a
  79. <legal 0>
  80. reserved_2a
  81. <legal 0>
  82. reserved_3a
  83. <legal 0>
  84. reserved_4a
  85. <legal 0>
  86. reserved_5a
  87. <legal 0>
  88. reserved_6a
  89. <legal 0>
  90. reserved_7a
  91. <legal 0>
  92. reserved_8a
  93. <legal 0>
  94. */
  95. #define REO_UNBLOCK_CACHE_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_OFFSET 0x00000000
  96. #define REO_UNBLOCK_CACHE_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_LSB 0
  97. #define REO_UNBLOCK_CACHE_0_UNIFORM_REO_CMD_HEADER_CMD_HEADER_MASK 0xffffffff
  98. /* Description REO_UNBLOCK_CACHE_1_UNBLOCK_TYPE
  99. Unblock type
  100. <enum 0 unblock_resource_index> Unblock a block
  101. resource, whose index is given in field
  102. 'cache_block_resource_index'.
  103. If the indicated blocking resource is not in use (=> not
  104. blocking an address at the moment), the command status will
  105. indicate an error.
  106. <enum 1 unblock_cache> The entire cache usage is
  107. unblocked.
  108. If the entire cache is not in a blocked mode at the
  109. moment this command is received, the command status will
  110. indicate an error.
  111. Note that unlocking the entire cache has no changes to
  112. the current settings of the blocking resource settings
  113. <legal all>
  114. */
  115. #define REO_UNBLOCK_CACHE_1_UNBLOCK_TYPE_OFFSET 0x00000004
  116. #define REO_UNBLOCK_CACHE_1_UNBLOCK_TYPE_LSB 0
  117. #define REO_UNBLOCK_CACHE_1_UNBLOCK_TYPE_MASK 0x00000001
  118. /* Description REO_UNBLOCK_CACHE_1_CACHE_BLOCK_RESOURCE_INDEX
  119. Field not valid when field Unblock_type is set to
  120. unblock_cache.
  121. Indicates which of the four blocking resources in REO
  122. should be released from blocking a (descriptor) address.
  123. <legal all>
  124. */
  125. #define REO_UNBLOCK_CACHE_1_CACHE_BLOCK_RESOURCE_INDEX_OFFSET 0x00000004
  126. #define REO_UNBLOCK_CACHE_1_CACHE_BLOCK_RESOURCE_INDEX_LSB 1
  127. #define REO_UNBLOCK_CACHE_1_CACHE_BLOCK_RESOURCE_INDEX_MASK 0x00000006
  128. /* Description REO_UNBLOCK_CACHE_1_RESERVED_1A
  129. <legal 0>
  130. */
  131. #define REO_UNBLOCK_CACHE_1_RESERVED_1A_OFFSET 0x00000004
  132. #define REO_UNBLOCK_CACHE_1_RESERVED_1A_LSB 3
  133. #define REO_UNBLOCK_CACHE_1_RESERVED_1A_MASK 0xfffffff8
  134. /* Description REO_UNBLOCK_CACHE_2_RESERVED_2A
  135. <legal 0>
  136. */
  137. #define REO_UNBLOCK_CACHE_2_RESERVED_2A_OFFSET 0x00000008
  138. #define REO_UNBLOCK_CACHE_2_RESERVED_2A_LSB 0
  139. #define REO_UNBLOCK_CACHE_2_RESERVED_2A_MASK 0xffffffff
  140. /* Description REO_UNBLOCK_CACHE_3_RESERVED_3A
  141. <legal 0>
  142. */
  143. #define REO_UNBLOCK_CACHE_3_RESERVED_3A_OFFSET 0x0000000c
  144. #define REO_UNBLOCK_CACHE_3_RESERVED_3A_LSB 0
  145. #define REO_UNBLOCK_CACHE_3_RESERVED_3A_MASK 0xffffffff
  146. /* Description REO_UNBLOCK_CACHE_4_RESERVED_4A
  147. <legal 0>
  148. */
  149. #define REO_UNBLOCK_CACHE_4_RESERVED_4A_OFFSET 0x00000010
  150. #define REO_UNBLOCK_CACHE_4_RESERVED_4A_LSB 0
  151. #define REO_UNBLOCK_CACHE_4_RESERVED_4A_MASK 0xffffffff
  152. /* Description REO_UNBLOCK_CACHE_5_RESERVED_5A
  153. <legal 0>
  154. */
  155. #define REO_UNBLOCK_CACHE_5_RESERVED_5A_OFFSET 0x00000014
  156. #define REO_UNBLOCK_CACHE_5_RESERVED_5A_LSB 0
  157. #define REO_UNBLOCK_CACHE_5_RESERVED_5A_MASK 0xffffffff
  158. /* Description REO_UNBLOCK_CACHE_6_RESERVED_6A
  159. <legal 0>
  160. */
  161. #define REO_UNBLOCK_CACHE_6_RESERVED_6A_OFFSET 0x00000018
  162. #define REO_UNBLOCK_CACHE_6_RESERVED_6A_LSB 0
  163. #define REO_UNBLOCK_CACHE_6_RESERVED_6A_MASK 0xffffffff
  164. /* Description REO_UNBLOCK_CACHE_7_RESERVED_7A
  165. <legal 0>
  166. */
  167. #define REO_UNBLOCK_CACHE_7_RESERVED_7A_OFFSET 0x0000001c
  168. #define REO_UNBLOCK_CACHE_7_RESERVED_7A_LSB 0
  169. #define REO_UNBLOCK_CACHE_7_RESERVED_7A_MASK 0xffffffff
  170. /* Description REO_UNBLOCK_CACHE_8_RESERVED_8A
  171. <legal 0>
  172. */
  173. #define REO_UNBLOCK_CACHE_8_RESERVED_8A_OFFSET 0x00000020
  174. #define REO_UNBLOCK_CACHE_8_RESERVED_8A_LSB 0
  175. #define REO_UNBLOCK_CACHE_8_RESERVED_8A_MASK 0xffffffff
  176. #endif // _REO_UNBLOCK_CACHE_H_