dcn10_hubp.h 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. /* Copyright 2012-15 Advanced Micro Devices, Inc.
  2. *
  3. * Permission is hereby granted, free of charge, to any person obtaining a
  4. * copy of this software and associated documentation files (the "Software"),
  5. * to deal in the Software without restriction, including without limitation
  6. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  7. * and/or sell copies of the Software, and to permit persons to whom the
  8. * Software is furnished to do so, subject to the following conditions:
  9. *
  10. * The above copyright notice and this permission notice shall be included in
  11. * all copies or substantial portions of the Software.
  12. *
  13. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  15. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  16. * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  17. * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  18. * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  19. * OTHER DEALINGS IN THE SOFTWARE.
  20. *
  21. * Authors: AMD
  22. *
  23. */
  24. #ifndef __DC_MEM_INPUT_DCN10_H__
  25. #define __DC_MEM_INPUT_DCN10_H__
  26. #include "hubp.h"
  27. #define TO_DCN10_HUBP(hubp)\
  28. container_of(hubp, struct dcn10_hubp, base)
  29. #define HUBP_REG_LIST_DCN(id)\
  30. SRI(DCHUBP_CNTL, HUBP, id),\
  31. SRI(HUBPREQ_DEBUG_DB, HUBP, id),\
  32. SRI(DCSURF_ADDR_CONFIG, HUBP, id),\
  33. SRI(DCSURF_TILING_CONFIG, HUBP, id),\
  34. SRI(DCSURF_SURFACE_PITCH, HUBPREQ, id),\
  35. SRI(DCSURF_SURFACE_PITCH_C, HUBPREQ, id),\
  36. SRI(DCSURF_SURFACE_CONFIG, HUBP, id),\
  37. SRI(DCSURF_FLIP_CONTROL, HUBPREQ, id),\
  38. SRI(DCSURF_PRI_VIEWPORT_DIMENSION, HUBP, id), \
  39. SRI(DCSURF_PRI_VIEWPORT_START, HUBP, id), \
  40. SRI(DCSURF_SEC_VIEWPORT_DIMENSION, HUBP, id), \
  41. SRI(DCSURF_SEC_VIEWPORT_START, HUBP, id), \
  42. SRI(DCSURF_PRI_VIEWPORT_DIMENSION_C, HUBP, id), \
  43. SRI(DCSURF_PRI_VIEWPORT_START_C, HUBP, id), \
  44. SRI(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, HUBPREQ, id),\
  45. SRI(DCSURF_PRIMARY_SURFACE_ADDRESS, HUBPREQ, id),\
  46. SRI(DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH, HUBPREQ, id),\
  47. SRI(DCSURF_SECONDARY_SURFACE_ADDRESS, HUBPREQ, id),\
  48. SRI(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, HUBPREQ, id),\
  49. SRI(DCSURF_PRIMARY_META_SURFACE_ADDRESS, HUBPREQ, id),\
  50. SRI(DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH, HUBPREQ, id),\
  51. SRI(DCSURF_SECONDARY_META_SURFACE_ADDRESS, HUBPREQ, id),\
  52. SRI(DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C, HUBPREQ, id),\
  53. SRI(DCSURF_PRIMARY_SURFACE_ADDRESS_C, HUBPREQ, id),\
  54. SRI(DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C, HUBPREQ, id),\
  55. SRI(DCSURF_PRIMARY_META_SURFACE_ADDRESS_C, HUBPREQ, id),\
  56. SRI(DCSURF_SURFACE_INUSE, HUBPREQ, id),\
  57. SRI(DCSURF_SURFACE_INUSE_HIGH, HUBPREQ, id),\
  58. SRI(DCSURF_SURFACE_INUSE_C, HUBPREQ, id),\
  59. SRI(DCSURF_SURFACE_INUSE_HIGH_C, HUBPREQ, id),\
  60. SRI(DCSURF_SURFACE_EARLIEST_INUSE, HUBPREQ, id),\
  61. SRI(DCSURF_SURFACE_EARLIEST_INUSE_HIGH, HUBPREQ, id),\
  62. SRI(DCSURF_SURFACE_EARLIEST_INUSE_C, HUBPREQ, id),\
  63. SRI(DCSURF_SURFACE_EARLIEST_INUSE_HIGH_C, HUBPREQ, id),\
  64. SRI(DCSURF_SURFACE_CONTROL, HUBPREQ, id),\
  65. SRI(HUBPRET_CONTROL, HUBPRET, id),\
  66. SRI(DCN_EXPANSION_MODE, HUBPREQ, id),\
  67. SRI(DCHUBP_REQ_SIZE_CONFIG, HUBP, id),\
  68. SRI(DCHUBP_REQ_SIZE_CONFIG_C, HUBP, id),\
  69. SRI(BLANK_OFFSET_0, HUBPREQ, id),\
  70. SRI(BLANK_OFFSET_1, HUBPREQ, id),\
  71. SRI(DST_DIMENSIONS, HUBPREQ, id),\
  72. SRI(DST_AFTER_SCALER, HUBPREQ, id),\
  73. SRI(VBLANK_PARAMETERS_0, HUBPREQ, id),\
  74. SRI(REF_FREQ_TO_PIX_FREQ, HUBPREQ, id),\
  75. SRI(VBLANK_PARAMETERS_1, HUBPREQ, id),\
  76. SRI(VBLANK_PARAMETERS_3, HUBPREQ, id),\
  77. SRI(NOM_PARAMETERS_0, HUBPREQ, id),\
  78. SRI(NOM_PARAMETERS_1, HUBPREQ, id),\
  79. SRI(NOM_PARAMETERS_4, HUBPREQ, id),\
  80. SRI(NOM_PARAMETERS_5, HUBPREQ, id),\
  81. SRI(PER_LINE_DELIVERY_PRE, HUBPREQ, id),\
  82. SRI(PER_LINE_DELIVERY, HUBPREQ, id),\
  83. SRI(VBLANK_PARAMETERS_2, HUBPREQ, id),\
  84. SRI(VBLANK_PARAMETERS_4, HUBPREQ, id),\
  85. SRI(NOM_PARAMETERS_2, HUBPREQ, id),\
  86. SRI(NOM_PARAMETERS_3, HUBPREQ, id),\
  87. SRI(NOM_PARAMETERS_6, HUBPREQ, id),\
  88. SRI(NOM_PARAMETERS_7, HUBPREQ, id),\
  89. SRI(DCN_TTU_QOS_WM, HUBPREQ, id),\
  90. SRI(DCN_GLOBAL_TTU_CNTL, HUBPREQ, id),\
  91. SRI(DCN_SURF0_TTU_CNTL0, HUBPREQ, id),\
  92. SRI(DCN_SURF0_TTU_CNTL1, HUBPREQ, id),\
  93. SRI(DCN_SURF1_TTU_CNTL0, HUBPREQ, id),\
  94. SRI(DCN_SURF1_TTU_CNTL1, HUBPREQ, id),\
  95. SRI(DCN_VM_MX_L1_TLB_CNTL, HUBPREQ, id),\
  96. SRI(HUBP_CLK_CNTL, HUBP, id)
  97. #define HUBP_REG_LIST_DCN10(id)\
  98. HUBP_REG_LIST_DCN(id),\
  99. SRI(PREFETCH_SETTINS, HUBPREQ, id),\
  100. SRI(PREFETCH_SETTINS_C, HUBPREQ, id),\
  101. SRI(DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB, HUBPREQ, id),\
  102. SRI(DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB, HUBPREQ, id),\
  103. SRI(DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB, HUBPREQ, id),\
  104. SRI(DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB, HUBPREQ, id),\
  105. SRI(DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB, HUBPREQ, id),\
  106. SRI(DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB, HUBPREQ, id),\
  107. SRI(DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB, HUBPREQ, id),\
  108. SRI(DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB, HUBPREQ, id),\
  109. SRI(DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB, HUBPREQ, id),\
  110. SRI(DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB, HUBPREQ, id),\
  111. SRI(DCN_VM_SYSTEM_APERTURE_LOW_ADDR_MSB, HUBPREQ, id),\
  112. SRI(DCN_VM_SYSTEM_APERTURE_LOW_ADDR_LSB, HUBPREQ, id),\
  113. SRI(DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB, HUBPREQ, id),\
  114. SRI(DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB, HUBPREQ, id),\
  115. SR(DCHUBBUB_SDPIF_FB_BASE),\
  116. SR(DCHUBBUB_SDPIF_FB_OFFSET),\
  117. SRI(CURSOR_SETTINS, HUBPREQ, id), \
  118. SRI(CURSOR_SURFACE_ADDRESS_HIGH, CURSOR, id), \
  119. SRI(CURSOR_SURFACE_ADDRESS, CURSOR, id), \
  120. SRI(CURSOR_SIZE, CURSOR, id), \
  121. SRI(CURSOR_CONTROL, CURSOR, id), \
  122. SRI(CURSOR_POSITION, CURSOR, id), \
  123. SRI(CURSOR_HOT_SPOT, CURSOR, id), \
  124. SRI(CURSOR_DST_OFFSET, CURSOR, id)
  125. #define HUBP_COMMON_REG_VARIABLE_LIST \
  126. uint32_t DCHUBP_CNTL; \
  127. uint32_t HUBPREQ_DEBUG_DB; \
  128. uint32_t DCSURF_ADDR_CONFIG; \
  129. uint32_t DCSURF_TILING_CONFIG; \
  130. uint32_t DCSURF_SURFACE_PITCH; \
  131. uint32_t DCSURF_SURFACE_PITCH_C; \
  132. uint32_t DCSURF_SURFACE_CONFIG; \
  133. uint32_t DCSURF_FLIP_CONTROL; \
  134. uint32_t DCSURF_PRI_VIEWPORT_DIMENSION; \
  135. uint32_t DCSURF_PRI_VIEWPORT_START; \
  136. uint32_t DCSURF_SEC_VIEWPORT_DIMENSION; \
  137. uint32_t DCSURF_SEC_VIEWPORT_START; \
  138. uint32_t DCSURF_PRI_VIEWPORT_DIMENSION_C; \
  139. uint32_t DCSURF_PRI_VIEWPORT_START_C; \
  140. uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH; \
  141. uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS; \
  142. uint32_t DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH; \
  143. uint32_t DCSURF_SECONDARY_SURFACE_ADDRESS; \
  144. uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH; \
  145. uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS; \
  146. uint32_t DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH; \
  147. uint32_t DCSURF_SECONDARY_META_SURFACE_ADDRESS; \
  148. uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C; \
  149. uint32_t DCSURF_PRIMARY_SURFACE_ADDRESS_C; \
  150. uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C; \
  151. uint32_t DCSURF_PRIMARY_META_SURFACE_ADDRESS_C; \
  152. uint32_t DCSURF_SURFACE_INUSE; \
  153. uint32_t DCSURF_SURFACE_INUSE_HIGH; \
  154. uint32_t DCSURF_SURFACE_INUSE_C; \
  155. uint32_t DCSURF_SURFACE_INUSE_HIGH_C; \
  156. uint32_t DCSURF_SURFACE_EARLIEST_INUSE; \
  157. uint32_t DCSURF_SURFACE_EARLIEST_INUSE_HIGH; \
  158. uint32_t DCSURF_SURFACE_EARLIEST_INUSE_C; \
  159. uint32_t DCSURF_SURFACE_EARLIEST_INUSE_HIGH_C; \
  160. uint32_t DCSURF_SURFACE_CONTROL; \
  161. uint32_t HUBPRET_CONTROL; \
  162. uint32_t DCN_EXPANSION_MODE; \
  163. uint32_t DCHUBP_REQ_SIZE_CONFIG; \
  164. uint32_t DCHUBP_REQ_SIZE_CONFIG_C; \
  165. uint32_t BLANK_OFFSET_0; \
  166. uint32_t BLANK_OFFSET_1; \
  167. uint32_t DST_DIMENSIONS; \
  168. uint32_t DST_AFTER_SCALER; \
  169. uint32_t PREFETCH_SETTINS; \
  170. uint32_t PREFETCH_SETTINGS; \
  171. uint32_t VBLANK_PARAMETERS_0; \
  172. uint32_t REF_FREQ_TO_PIX_FREQ; \
  173. uint32_t VBLANK_PARAMETERS_1; \
  174. uint32_t VBLANK_PARAMETERS_3; \
  175. uint32_t NOM_PARAMETERS_0; \
  176. uint32_t NOM_PARAMETERS_1; \
  177. uint32_t NOM_PARAMETERS_4; \
  178. uint32_t NOM_PARAMETERS_5; \
  179. uint32_t PER_LINE_DELIVERY_PRE; \
  180. uint32_t PER_LINE_DELIVERY; \
  181. uint32_t PREFETCH_SETTINS_C; \
  182. uint32_t PREFETCH_SETTINGS_C; \
  183. uint32_t VBLANK_PARAMETERS_2; \
  184. uint32_t VBLANK_PARAMETERS_4; \
  185. uint32_t NOM_PARAMETERS_2; \
  186. uint32_t NOM_PARAMETERS_3; \
  187. uint32_t NOM_PARAMETERS_6; \
  188. uint32_t NOM_PARAMETERS_7; \
  189. uint32_t DCN_TTU_QOS_WM; \
  190. uint32_t DCN_GLOBAL_TTU_CNTL; \
  191. uint32_t DCN_SURF0_TTU_CNTL0; \
  192. uint32_t DCN_SURF0_TTU_CNTL1; \
  193. uint32_t DCN_SURF1_TTU_CNTL0; \
  194. uint32_t DCN_SURF1_TTU_CNTL1; \
  195. uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB; \
  196. uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB; \
  197. uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB; \
  198. uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB; \
  199. uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB; \
  200. uint32_t DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB; \
  201. uint32_t DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB; \
  202. uint32_t DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB; \
  203. uint32_t DCN_VM_MX_L1_TLB_CNTL; \
  204. uint32_t DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB; \
  205. uint32_t DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB; \
  206. uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR_MSB; \
  207. uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR_LSB; \
  208. uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB; \
  209. uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB; \
  210. uint32_t DCN_VM_SYSTEM_APERTURE_LOW_ADDR; \
  211. uint32_t DCN_VM_SYSTEM_APERTURE_HIGH_ADDR; \
  212. uint32_t DCHUBBUB_SDPIF_FB_BASE; \
  213. uint32_t DCHUBBUB_SDPIF_FB_OFFSET; \
  214. uint32_t DCN_VM_FB_LOCATION_TOP; \
  215. uint32_t DCN_VM_FB_LOCATION_BASE; \
  216. uint32_t DCN_VM_FB_OFFSET; \
  217. uint32_t DCN_VM_AGP_BASE; \
  218. uint32_t DCN_VM_AGP_BOT; \
  219. uint32_t DCN_VM_AGP_TOP; \
  220. uint32_t CURSOR_SETTINS; \
  221. uint32_t CURSOR_SETTINGS; \
  222. uint32_t CURSOR_SURFACE_ADDRESS_HIGH; \
  223. uint32_t CURSOR_SURFACE_ADDRESS; \
  224. uint32_t CURSOR_SIZE; \
  225. uint32_t CURSOR_CONTROL; \
  226. uint32_t CURSOR_POSITION; \
  227. uint32_t CURSOR_HOT_SPOT; \
  228. uint32_t CURSOR_DST_OFFSET; \
  229. uint32_t HUBP_CLK_CNTL
  230. #define HUBP_SF(reg_name, field_name, post_fix)\
  231. .field_name = reg_name ## __ ## field_name ## post_fix
  232. #define HUBP_MASK_SH_LIST_DCN(mask_sh)\
  233. HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_BLANK_EN, mask_sh),\
  234. HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_TTU_DISABLE, mask_sh),\
  235. HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_UNDERFLOW_STATUS, mask_sh),\
  236. HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_NO_OUTSTANDING_REQ, mask_sh),\
  237. HUBP_SF(HUBP0_DCHUBP_CNTL, HUBP_VTG_SEL, mask_sh),\
  238. HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_PIPES, mask_sh),\
  239. HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_BANKS, mask_sh),\
  240. HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, PIPE_INTERLEAVE, mask_sh),\
  241. HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_SE, mask_sh),\
  242. HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, NUM_RB_PER_SE, mask_sh),\
  243. HUBP_SF(HUBP0_DCSURF_ADDR_CONFIG, MAX_COMPRESSED_FRAGS, mask_sh),\
  244. HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, SW_MODE, mask_sh),\
  245. HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, META_LINEAR, mask_sh),\
  246. HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, RB_ALIGNED, mask_sh),\
  247. HUBP_SF(HUBP0_DCSURF_TILING_CONFIG, PIPE_ALIGNED, mask_sh),\
  248. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH, PITCH, mask_sh),\
  249. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH, META_PITCH, mask_sh),\
  250. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH_C, PITCH_C, mask_sh),\
  251. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_PITCH_C, META_PITCH_C, mask_sh),\
  252. HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, ROTATION_ANGLE, mask_sh),\
  253. HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, H_MIRROR_EN, mask_sh),\
  254. HUBP_SF(HUBP0_DCSURF_SURFACE_CONFIG, SURFACE_PIXEL_FORMAT, mask_sh),\
  255. HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_FLIP_TYPE, mask_sh),\
  256. HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_FLIP_PENDING, mask_sh),\
  257. HUBP_SF(HUBPREQ0_DCSURF_FLIP_CONTROL, SURFACE_UPDATE_LOCK, mask_sh),\
  258. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION, PRI_VIEWPORT_WIDTH, mask_sh),\
  259. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION, PRI_VIEWPORT_HEIGHT, mask_sh),\
  260. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START, PRI_VIEWPORT_X_START, mask_sh),\
  261. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START, PRI_VIEWPORT_Y_START, mask_sh),\
  262. HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_DIMENSION, SEC_VIEWPORT_WIDTH, mask_sh),\
  263. HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_DIMENSION, SEC_VIEWPORT_HEIGHT, mask_sh),\
  264. HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_START, SEC_VIEWPORT_X_START, mask_sh),\
  265. HUBP_SF(HUBP0_DCSURF_SEC_VIEWPORT_START, SEC_VIEWPORT_Y_START, mask_sh),\
  266. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION_C, PRI_VIEWPORT_WIDTH_C, mask_sh),\
  267. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_DIMENSION_C, PRI_VIEWPORT_HEIGHT_C, mask_sh),\
  268. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START_C, PRI_VIEWPORT_X_START_C, mask_sh),\
  269. HUBP_SF(HUBP0_DCSURF_PRI_VIEWPORT_START_C, PRI_VIEWPORT_Y_START_C, mask_sh),\
  270. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH, PRIMARY_SURFACE_ADDRESS_HIGH, mask_sh),\
  271. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS, PRIMARY_SURFACE_ADDRESS, mask_sh),\
  272. HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_SURFACE_ADDRESS_HIGH, SECONDARY_SURFACE_ADDRESS_HIGH, mask_sh),\
  273. HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_SURFACE_ADDRESS, SECONDARY_SURFACE_ADDRESS, mask_sh),\
  274. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH, PRIMARY_META_SURFACE_ADDRESS_HIGH, mask_sh),\
  275. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS, PRIMARY_META_SURFACE_ADDRESS, mask_sh),\
  276. HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_META_SURFACE_ADDRESS_HIGH, SECONDARY_META_SURFACE_ADDRESS_HIGH, mask_sh),\
  277. HUBP_SF(HUBPREQ0_DCSURF_SECONDARY_META_SURFACE_ADDRESS, SECONDARY_META_SURFACE_ADDRESS, mask_sh),\
  278. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS_HIGH_C, PRIMARY_SURFACE_ADDRESS_HIGH_C, mask_sh),\
  279. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_SURFACE_ADDRESS_C, PRIMARY_SURFACE_ADDRESS_C, mask_sh),\
  280. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS_HIGH_C, PRIMARY_META_SURFACE_ADDRESS_HIGH_C, mask_sh),\
  281. HUBP_SF(HUBPREQ0_DCSURF_PRIMARY_META_SURFACE_ADDRESS_C, PRIMARY_META_SURFACE_ADDRESS_C, mask_sh),\
  282. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE, SURFACE_INUSE_ADDRESS, mask_sh),\
  283. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE_HIGH, SURFACE_INUSE_ADDRESS_HIGH, mask_sh),\
  284. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE_C, SURFACE_INUSE_ADDRESS_C, mask_sh),\
  285. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_INUSE_HIGH_C, SURFACE_INUSE_ADDRESS_HIGH_C, mask_sh),\
  286. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE, SURFACE_EARLIEST_INUSE_ADDRESS, mask_sh),\
  287. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE_HIGH, SURFACE_EARLIEST_INUSE_ADDRESS_HIGH, mask_sh),\
  288. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE_C, SURFACE_EARLIEST_INUSE_ADDRESS_C, mask_sh),\
  289. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_EARLIEST_INUSE_HIGH_C, SURFACE_EARLIEST_INUSE_ADDRESS_HIGH_C, mask_sh),\
  290. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_TMZ, mask_sh),\
  291. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_TMZ_C, mask_sh),\
  292. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_META_SURFACE_TMZ, mask_sh),\
  293. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_META_SURFACE_TMZ_C, mask_sh),\
  294. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_DCC_EN, mask_sh),\
  295. HUBP_SF(HUBPREQ0_DCSURF_SURFACE_CONTROL, PRIMARY_SURFACE_DCC_IND_64B_BLK, mask_sh),\
  296. HUBP_SF(HUBPRET0_HUBPRET_CONTROL, DET_BUF_PLANE1_BASE_ADDRESS, mask_sh),\
  297. HUBP_SF(HUBPRET0_HUBPRET_CONTROL, CROSSBAR_SRC_CB_B, mask_sh),\
  298. HUBP_SF(HUBPRET0_HUBPRET_CONTROL, CROSSBAR_SRC_CR_R, mask_sh),\
  299. HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, DRQ_EXPANSION_MODE, mask_sh),\
  300. HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, PRQ_EXPANSION_MODE, mask_sh),\
  301. HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, MRQ_EXPANSION_MODE, mask_sh),\
  302. HUBP_SF(HUBPREQ0_DCN_EXPANSION_MODE, CRQ_EXPANSION_MODE, mask_sh),\
  303. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, CHUNK_SIZE, mask_sh),\
  304. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, MIN_CHUNK_SIZE, mask_sh),\
  305. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, META_CHUNK_SIZE, mask_sh),\
  306. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, MIN_META_CHUNK_SIZE, mask_sh),\
  307. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, DPTE_GROUP_SIZE, mask_sh),\
  308. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, MPTE_GROUP_SIZE, mask_sh),\
  309. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, SWATH_HEIGHT, mask_sh),\
  310. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG, PTE_ROW_HEIGHT_LINEAR, mask_sh),\
  311. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, CHUNK_SIZE_C, mask_sh),\
  312. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, MIN_CHUNK_SIZE_C, mask_sh),\
  313. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, META_CHUNK_SIZE_C, mask_sh),\
  314. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, MIN_META_CHUNK_SIZE_C, mask_sh),\
  315. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, DPTE_GROUP_SIZE_C, mask_sh),\
  316. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, MPTE_GROUP_SIZE_C, mask_sh),\
  317. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, SWATH_HEIGHT_C, mask_sh),\
  318. HUBP_SF(HUBP0_DCHUBP_REQ_SIZE_CONFIG_C, PTE_ROW_HEIGHT_LINEAR_C, mask_sh),\
  319. HUBP_SF(HUBPREQ0_BLANK_OFFSET_0, REFCYC_H_BLANK_END, mask_sh),\
  320. HUBP_SF(HUBPREQ0_BLANK_OFFSET_0, DLG_V_BLANK_END, mask_sh),\
  321. HUBP_SF(HUBPREQ0_BLANK_OFFSET_1, MIN_DST_Y_NEXT_START, mask_sh),\
  322. HUBP_SF(HUBPREQ0_DST_DIMENSIONS, REFCYC_PER_HTOTAL, mask_sh),\
  323. HUBP_SF(HUBPREQ0_DST_AFTER_SCALER, REFCYC_X_AFTER_SCALER, mask_sh),\
  324. HUBP_SF(HUBPREQ0_DST_AFTER_SCALER, DST_Y_AFTER_SCALER, mask_sh),\
  325. HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_0, DST_Y_PER_VM_VBLANK, mask_sh),\
  326. HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_0, DST_Y_PER_ROW_VBLANK, mask_sh),\
  327. HUBP_SF(HUBPREQ0_REF_FREQ_TO_PIX_FREQ, REF_FREQ_TO_PIX_FREQ, mask_sh),\
  328. HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_1, REFCYC_PER_PTE_GROUP_VBLANK_L, mask_sh),\
  329. HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_3, REFCYC_PER_META_CHUNK_VBLANK_L, mask_sh),\
  330. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_0, DST_Y_PER_PTE_ROW_NOM_L, mask_sh),\
  331. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_1, REFCYC_PER_PTE_GROUP_NOM_L, mask_sh),\
  332. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_4, DST_Y_PER_META_ROW_NOM_L, mask_sh),\
  333. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_5, REFCYC_PER_META_CHUNK_NOM_L, mask_sh),\
  334. HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY_PRE, REFCYC_PER_LINE_DELIVERY_PRE_L, mask_sh),\
  335. HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY_PRE, REFCYC_PER_LINE_DELIVERY_PRE_C, mask_sh),\
  336. HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY, REFCYC_PER_LINE_DELIVERY_L, mask_sh),\
  337. HUBP_SF(HUBPREQ0_PER_LINE_DELIVERY, REFCYC_PER_LINE_DELIVERY_C, mask_sh),\
  338. HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_2, REFCYC_PER_PTE_GROUP_VBLANK_C, mask_sh),\
  339. HUBP_SF(HUBPREQ0_VBLANK_PARAMETERS_4, REFCYC_PER_META_CHUNK_VBLANK_C, mask_sh),\
  340. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_2, DST_Y_PER_PTE_ROW_NOM_C, mask_sh),\
  341. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_3, REFCYC_PER_PTE_GROUP_NOM_C, mask_sh),\
  342. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_6, DST_Y_PER_META_ROW_NOM_C, mask_sh),\
  343. HUBP_SF(HUBPREQ0_NOM_PARAMETERS_7, REFCYC_PER_META_CHUNK_NOM_C, mask_sh),\
  344. HUBP_SF(HUBPREQ0_DCN_TTU_QOS_WM, QoS_LEVEL_LOW_WM, mask_sh),\
  345. HUBP_SF(HUBPREQ0_DCN_TTU_QOS_WM, QoS_LEVEL_HIGH_WM, mask_sh),\
  346. HUBP_SF(HUBPREQ0_DCN_GLOBAL_TTU_CNTL, MIN_TTU_VBLANK, mask_sh),\
  347. HUBP_SF(HUBPREQ0_DCN_GLOBAL_TTU_CNTL, QoS_LEVEL_FLIP, mask_sh),\
  348. HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL0, REFCYC_PER_REQ_DELIVERY, mask_sh),\
  349. HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL0, QoS_LEVEL_FIXED, mask_sh),\
  350. HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL0, QoS_RAMP_DISABLE, mask_sh),\
  351. HUBP_SF(HUBPREQ0_DCN_SURF0_TTU_CNTL1, REFCYC_PER_REQ_DELIVERY_PRE, mask_sh),\
  352. HUBP_SF(HUBPREQ0_DCN_VM_MX_L1_TLB_CNTL, ENABLE_L1_TLB, mask_sh),\
  353. HUBP_SF(HUBPREQ0_DCN_VM_MX_L1_TLB_CNTL, SYSTEM_ACCESS_MODE, mask_sh),\
  354. HUBP_SF(HUBP0_HUBP_CLK_CNTL, HUBP_CLOCK_ENABLE, mask_sh)
  355. #define HUBP_MASK_SH_LIST_DCN10(mask_sh)\
  356. HUBP_MASK_SH_LIST_DCN(mask_sh),\
  357. HUBP_SF(HUBPREQ0_PREFETCH_SETTINS, DST_Y_PREFETCH, mask_sh),\
  358. HUBP_SF(HUBPREQ0_PREFETCH_SETTINS, VRATIO_PREFETCH, mask_sh),\
  359. HUBP_SF(HUBPREQ0_PREFETCH_SETTINS_C, VRATIO_PREFETCH_C, mask_sh),\
  360. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB, VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB, mask_sh),\
  361. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB, VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB, mask_sh),\
  362. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB, VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB, mask_sh),\
  363. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB, VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB, mask_sh),\
  364. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB, VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB, mask_sh),\
  365. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB, VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB, mask_sh),\
  366. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB, VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB, mask_sh),\
  367. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB, VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_SYSTEM, mask_sh),\
  368. HUBP_SF(HUBPREQ0_DCN_VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB, VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB, mask_sh),\
  369. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_LOW_ADDR_MSB, MC_VM_SYSTEM_APERTURE_LOW_ADDR_MSB, mask_sh),\
  370. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_LOW_ADDR_LSB, MC_VM_SYSTEM_APERTURE_LOW_ADDR_LSB, mask_sh),\
  371. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB, MC_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB, mask_sh),\
  372. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB, MC_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB, mask_sh),\
  373. HUBP_SF(DCHUBBUB_SDPIF_FB_BASE, SDPIF_FB_BASE, mask_sh),\
  374. HUBP_SF(DCHUBBUB_SDPIF_FB_OFFSET, SDPIF_FB_OFFSET, mask_sh),\
  375. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB, MC_VM_SYSTEM_APERTURE_DEFAULT_SYSTEM, mask_sh),\
  376. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB, MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB, mask_sh),\
  377. HUBP_SF(HUBPREQ0_DCN_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB, MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB, mask_sh),\
  378. HUBP_SF(HUBPREQ0_CURSOR_SETTINS, CURSOR0_DST_Y_OFFSET, mask_sh), \
  379. HUBP_SF(HUBPREQ0_CURSOR_SETTINS, CURSOR0_CHUNK_HDL_ADJUST, mask_sh), \
  380. HUBP_SF(CURSOR0_CURSOR_SURFACE_ADDRESS_HIGH, CURSOR_SURFACE_ADDRESS_HIGH, mask_sh), \
  381. HUBP_SF(CURSOR0_CURSOR_SURFACE_ADDRESS, CURSOR_SURFACE_ADDRESS, mask_sh), \
  382. HUBP_SF(CURSOR0_CURSOR_SIZE, CURSOR_WIDTH, mask_sh), \
  383. HUBP_SF(CURSOR0_CURSOR_SIZE, CURSOR_HEIGHT, mask_sh), \
  384. HUBP_SF(CURSOR0_CURSOR_CONTROL, CURSOR_MODE, mask_sh), \
  385. HUBP_SF(CURSOR0_CURSOR_CONTROL, CURSOR_2X_MAGNIFY, mask_sh), \
  386. HUBP_SF(CURSOR0_CURSOR_CONTROL, CURSOR_PITCH, mask_sh), \
  387. HUBP_SF(CURSOR0_CURSOR_CONTROL, CURSOR_LINES_PER_CHUNK, mask_sh), \
  388. HUBP_SF(CURSOR0_CURSOR_CONTROL, CURSOR_ENABLE, mask_sh), \
  389. HUBP_SF(CURSOR0_CURSOR_POSITION, CURSOR_X_POSITION, mask_sh), \
  390. HUBP_SF(CURSOR0_CURSOR_POSITION, CURSOR_Y_POSITION, mask_sh), \
  391. HUBP_SF(CURSOR0_CURSOR_HOT_SPOT, CURSOR_HOT_SPOT_X, mask_sh), \
  392. HUBP_SF(CURSOR0_CURSOR_HOT_SPOT, CURSOR_HOT_SPOT_Y, mask_sh), \
  393. HUBP_SF(CURSOR0_CURSOR_DST_OFFSET, CURSOR_DST_X_OFFSET, mask_sh)
  394. #define DCN_HUBP_REG_FIELD_LIST(type) \
  395. type HUBP_BLANK_EN;\
  396. type HUBP_TTU_DISABLE;\
  397. type HUBP_NO_OUTSTANDING_REQ;\
  398. type HUBP_VTG_SEL;\
  399. type HUBP_UNDERFLOW_STATUS;\
  400. type NUM_PIPES;\
  401. type NUM_BANKS;\
  402. type PIPE_INTERLEAVE;\
  403. type NUM_SE;\
  404. type NUM_RB_PER_SE;\
  405. type MAX_COMPRESSED_FRAGS;\
  406. type SW_MODE;\
  407. type META_LINEAR;\
  408. type RB_ALIGNED;\
  409. type PIPE_ALIGNED;\
  410. type PITCH;\
  411. type META_PITCH;\
  412. type PITCH_C;\
  413. type META_PITCH_C;\
  414. type ROTATION_ANGLE;\
  415. type H_MIRROR_EN;\
  416. type SURFACE_PIXEL_FORMAT;\
  417. type SURFACE_FLIP_TYPE;\
  418. type SURFACE_UPDATE_LOCK;\
  419. type SURFACE_FLIP_PENDING;\
  420. type PRI_VIEWPORT_WIDTH; \
  421. type PRI_VIEWPORT_HEIGHT; \
  422. type PRI_VIEWPORT_X_START; \
  423. type PRI_VIEWPORT_Y_START; \
  424. type SEC_VIEWPORT_WIDTH; \
  425. type SEC_VIEWPORT_HEIGHT; \
  426. type SEC_VIEWPORT_X_START; \
  427. type SEC_VIEWPORT_Y_START; \
  428. type PRI_VIEWPORT_WIDTH_C; \
  429. type PRI_VIEWPORT_HEIGHT_C; \
  430. type PRI_VIEWPORT_X_START_C; \
  431. type PRI_VIEWPORT_Y_START_C; \
  432. type PRIMARY_SURFACE_ADDRESS_HIGH;\
  433. type PRIMARY_SURFACE_ADDRESS;\
  434. type SECONDARY_SURFACE_ADDRESS_HIGH;\
  435. type SECONDARY_SURFACE_ADDRESS;\
  436. type PRIMARY_META_SURFACE_ADDRESS_HIGH;\
  437. type PRIMARY_META_SURFACE_ADDRESS;\
  438. type SECONDARY_META_SURFACE_ADDRESS_HIGH;\
  439. type SECONDARY_META_SURFACE_ADDRESS;\
  440. type PRIMARY_SURFACE_ADDRESS_HIGH_C;\
  441. type PRIMARY_SURFACE_ADDRESS_C;\
  442. type PRIMARY_META_SURFACE_ADDRESS_HIGH_C;\
  443. type PRIMARY_META_SURFACE_ADDRESS_C;\
  444. type SURFACE_INUSE_ADDRESS;\
  445. type SURFACE_INUSE_ADDRESS_HIGH;\
  446. type SURFACE_INUSE_ADDRESS_C;\
  447. type SURFACE_INUSE_ADDRESS_HIGH_C;\
  448. type SURFACE_EARLIEST_INUSE_ADDRESS;\
  449. type SURFACE_EARLIEST_INUSE_ADDRESS_HIGH;\
  450. type SURFACE_EARLIEST_INUSE_ADDRESS_C;\
  451. type SURFACE_EARLIEST_INUSE_ADDRESS_HIGH_C;\
  452. type PRIMARY_SURFACE_TMZ;\
  453. type PRIMARY_SURFACE_TMZ_C;\
  454. type SECONDARY_SURFACE_TMZ;\
  455. type SECONDARY_SURFACE_TMZ_C;\
  456. type PRIMARY_META_SURFACE_TMZ;\
  457. type PRIMARY_META_SURFACE_TMZ_C;\
  458. type SECONDARY_META_SURFACE_TMZ;\
  459. type SECONDARY_META_SURFACE_TMZ_C;\
  460. type PRIMARY_SURFACE_DCC_EN;\
  461. type PRIMARY_SURFACE_DCC_IND_64B_BLK;\
  462. type DET_BUF_PLANE1_BASE_ADDRESS;\
  463. type CROSSBAR_SRC_CB_B;\
  464. type CROSSBAR_SRC_CR_R;\
  465. type DRQ_EXPANSION_MODE;\
  466. type PRQ_EXPANSION_MODE;\
  467. type MRQ_EXPANSION_MODE;\
  468. type CRQ_EXPANSION_MODE;\
  469. type CHUNK_SIZE;\
  470. type MIN_CHUNK_SIZE;\
  471. type META_CHUNK_SIZE;\
  472. type MIN_META_CHUNK_SIZE;\
  473. type DPTE_GROUP_SIZE;\
  474. type MPTE_GROUP_SIZE;\
  475. type SWATH_HEIGHT;\
  476. type PTE_ROW_HEIGHT_LINEAR;\
  477. type CHUNK_SIZE_C;\
  478. type MIN_CHUNK_SIZE_C;\
  479. type META_CHUNK_SIZE_C;\
  480. type MIN_META_CHUNK_SIZE_C;\
  481. type DPTE_GROUP_SIZE_C;\
  482. type MPTE_GROUP_SIZE_C;\
  483. type SWATH_HEIGHT_C;\
  484. type PTE_ROW_HEIGHT_LINEAR_C;\
  485. type REFCYC_H_BLANK_END;\
  486. type DLG_V_BLANK_END;\
  487. type MIN_DST_Y_NEXT_START;\
  488. type REFCYC_PER_HTOTAL;\
  489. type REFCYC_X_AFTER_SCALER;\
  490. type DST_Y_AFTER_SCALER;\
  491. type DST_Y_PREFETCH;\
  492. type VRATIO_PREFETCH;\
  493. type DST_Y_PER_VM_VBLANK;\
  494. type DST_Y_PER_ROW_VBLANK;\
  495. type REF_FREQ_TO_PIX_FREQ;\
  496. type REFCYC_PER_PTE_GROUP_VBLANK_L;\
  497. type REFCYC_PER_META_CHUNK_VBLANK_L;\
  498. type DST_Y_PER_PTE_ROW_NOM_L;\
  499. type REFCYC_PER_PTE_GROUP_NOM_L;\
  500. type DST_Y_PER_META_ROW_NOM_L;\
  501. type REFCYC_PER_META_CHUNK_NOM_L;\
  502. type REFCYC_PER_LINE_DELIVERY_PRE_L;\
  503. type REFCYC_PER_LINE_DELIVERY_PRE_C;\
  504. type REFCYC_PER_LINE_DELIVERY_L;\
  505. type REFCYC_PER_LINE_DELIVERY_C;\
  506. type VRATIO_PREFETCH_C;\
  507. type REFCYC_PER_PTE_GROUP_VBLANK_C;\
  508. type REFCYC_PER_META_CHUNK_VBLANK_C;\
  509. type DST_Y_PER_PTE_ROW_NOM_C;\
  510. type REFCYC_PER_PTE_GROUP_NOM_C;\
  511. type DST_Y_PER_META_ROW_NOM_C;\
  512. type REFCYC_PER_META_CHUNK_NOM_C;\
  513. type QoS_LEVEL_LOW_WM;\
  514. type QoS_LEVEL_HIGH_WM;\
  515. type MIN_TTU_VBLANK;\
  516. type QoS_LEVEL_FLIP;\
  517. type REFCYC_PER_REQ_DELIVERY;\
  518. type QoS_LEVEL_FIXED;\
  519. type QoS_RAMP_DISABLE;\
  520. type REFCYC_PER_REQ_DELIVERY_PRE;\
  521. type VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_MSB;\
  522. type VM_CONTEXT0_PAGE_TABLE_BASE_ADDR_LSB;\
  523. type VM_CONTEXT0_PAGE_TABLE_START_ADDR_MSB;\
  524. type VM_CONTEXT0_PAGE_TABLE_START_ADDR_LSB;\
  525. type VM_CONTEXT0_PAGE_TABLE_END_ADDR_MSB;\
  526. type VM_CONTEXT0_PAGE_TABLE_END_ADDR_LSB;\
  527. type VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_MSB;\
  528. type VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_SYSTEM;\
  529. type VM_CONTEXT0_PROTECTION_FAULT_DEFAULT_ADDR_LSB;\
  530. type ENABLE_L1_TLB;\
  531. type SYSTEM_ACCESS_MODE;\
  532. type HUBP_CLOCK_ENABLE;\
  533. type MC_VM_SYSTEM_APERTURE_DEFAULT_SYSTEM;\
  534. type MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_MSB;\
  535. type MC_VM_SYSTEM_APERTURE_DEFAULT_ADDR_LSB;\
  536. type MC_VM_SYSTEM_APERTURE_LOW_ADDR_MSB;\
  537. type MC_VM_SYSTEM_APERTURE_LOW_ADDR_LSB;\
  538. type MC_VM_SYSTEM_APERTURE_HIGH_ADDR_MSB;\
  539. type MC_VM_SYSTEM_APERTURE_HIGH_ADDR_LSB;\
  540. type MC_VM_SYSTEM_APERTURE_LOW_ADDR;\
  541. type MC_VM_SYSTEM_APERTURE_HIGH_ADDR;\
  542. type SDPIF_FB_TOP;\
  543. type SDPIF_FB_BASE;\
  544. type SDPIF_FB_OFFSET;\
  545. type SDPIF_AGP_BASE;\
  546. type SDPIF_AGP_BOT;\
  547. type SDPIF_AGP_TOP;\
  548. type FB_TOP;\
  549. type FB_BASE;\
  550. type FB_OFFSET;\
  551. type AGP_BASE;\
  552. type AGP_BOT;\
  553. type AGP_TOP;\
  554. /* todo: get these from GVM instead of reading registers ourselves */\
  555. type PAGE_DIRECTORY_ENTRY_HI32;\
  556. type PAGE_DIRECTORY_ENTRY_LO32;\
  557. type LOGICAL_PAGE_NUMBER_HI4;\
  558. type LOGICAL_PAGE_NUMBER_LO32;\
  559. type PHYSICAL_PAGE_ADDR_HI4;\
  560. type PHYSICAL_PAGE_ADDR_LO32;\
  561. type PHYSICAL_PAGE_NUMBER_MSB;\
  562. type PHYSICAL_PAGE_NUMBER_LSB;\
  563. type LOGICAL_ADDR;\
  564. type CURSOR0_DST_Y_OFFSET; \
  565. type CURSOR0_CHUNK_HDL_ADJUST; \
  566. type CURSOR_SURFACE_ADDRESS_HIGH; \
  567. type CURSOR_SURFACE_ADDRESS; \
  568. type CURSOR_WIDTH; \
  569. type CURSOR_HEIGHT; \
  570. type CURSOR_MODE; \
  571. type CURSOR_2X_MAGNIFY; \
  572. type CURSOR_PITCH; \
  573. type CURSOR_LINES_PER_CHUNK; \
  574. type CURSOR_ENABLE; \
  575. type CURSOR_X_POSITION; \
  576. type CURSOR_Y_POSITION; \
  577. type CURSOR_HOT_SPOT_X; \
  578. type CURSOR_HOT_SPOT_Y; \
  579. type CURSOR_DST_X_OFFSET; \
  580. type OUTPUT_FP
  581. struct dcn_mi_registers {
  582. HUBP_COMMON_REG_VARIABLE_LIST;
  583. };
  584. struct dcn_mi_shift {
  585. DCN_HUBP_REG_FIELD_LIST(uint8_t);
  586. };
  587. struct dcn_mi_mask {
  588. DCN_HUBP_REG_FIELD_LIST(uint32_t);
  589. };
  590. struct dcn10_hubp {
  591. struct hubp base;
  592. const struct dcn_mi_registers *hubp_regs;
  593. const struct dcn_mi_shift *hubp_shift;
  594. const struct dcn_mi_mask *hubp_mask;
  595. };
  596. void hubp1_program_surface_config(
  597. struct hubp *hubp,
  598. enum surface_pixel_format format,
  599. union dc_tiling_info *tiling_info,
  600. union plane_size *plane_size,
  601. enum dc_rotation_angle rotation,
  602. struct dc_plane_dcc_param *dcc,
  603. bool horizontal_mirror);
  604. void hubp1_program_deadline(
  605. struct hubp *hubp,
  606. struct _vcs_dpi_display_dlg_regs_st *dlg_attr,
  607. struct _vcs_dpi_display_ttu_regs_st *ttu_attr);
  608. void hubp1_program_requestor(
  609. struct hubp *hubp,
  610. struct _vcs_dpi_display_rq_regs_st *rq_regs);
  611. void hubp1_program_pixel_format(
  612. struct hubp *hubp,
  613. enum surface_pixel_format format);
  614. void hubp1_program_size_and_rotation(
  615. struct hubp *hubp,
  616. enum dc_rotation_angle rotation,
  617. enum surface_pixel_format format,
  618. const union plane_size *plane_size,
  619. struct dc_plane_dcc_param *dcc,
  620. bool horizontal_mirror);
  621. void hubp1_program_tiling(
  622. struct hubp *hubp,
  623. const union dc_tiling_info *info,
  624. const enum surface_pixel_format pixel_format);
  625. void hubp1_dcc_control(struct hubp *hubp,
  626. bool enable,
  627. bool independent_64b_blks);
  628. bool hubp1_program_surface_flip_and_addr(
  629. struct hubp *hubp,
  630. const struct dc_plane_address *address,
  631. bool flip_immediate);
  632. bool hubp1_is_flip_pending(struct hubp *hubp);
  633. void hubp1_cursor_set_attributes(
  634. struct hubp *hubp,
  635. const struct dc_cursor_attributes *attr);
  636. void hubp1_cursor_set_position(
  637. struct hubp *hubp,
  638. const struct dc_cursor_position *pos,
  639. const struct dc_cursor_mi_param *param);
  640. void hubp1_set_blank(struct hubp *hubp, bool blank);
  641. void min_set_viewport(struct hubp *hubp,
  642. const struct rect *viewport,
  643. const struct rect *viewport_c);
  644. void hubp1_clk_cntl(struct hubp *hubp, bool enable);
  645. void hubp1_vtg_sel(struct hubp *hubp, uint32_t otg_inst);
  646. void dcn10_hubp_construct(
  647. struct dcn10_hubp *hubp1,
  648. struct dc_context *ctx,
  649. uint32_t inst,
  650. const struct dcn_mi_registers *hubp_regs,
  651. const struct dcn_mi_shift *hubp_shift,
  652. const struct dcn_mi_mask *hubp_mask);
  653. struct dcn_hubp_state {
  654. uint32_t pixel_format;
  655. uint32_t inuse_addr_hi;
  656. uint32_t viewport_width;
  657. uint32_t viewport_height;
  658. uint32_t rotation_angle;
  659. uint32_t h_mirror_en;
  660. uint32_t sw_mode;
  661. uint32_t dcc_en;
  662. uint32_t blank_en;
  663. uint32_t underflow_status;
  664. uint32_t ttu_disable;
  665. uint32_t min_ttu_vblank;
  666. uint32_t qos_level_low_wm;
  667. uint32_t qos_level_high_wm;
  668. };
  669. void hubp1_read_state(struct dcn10_hubp *hubp1,
  670. struct dcn_hubp_state *s);
  671. enum cursor_pitch hubp1_get_cursor_pitch(unsigned int pitch);
  672. #endif