1 /* $NetBSD: dcn10_hubbub.h,v 1.2 2021/12/18 23:45:03 riastradh Exp $ */ 2 3 /* 4 * Copyright 2016 Advanced Micro Devices, Inc. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a 7 * copy of this software and associated documentation files (the "Software"), 8 * to deal in the Software without restriction, including without limitation 9 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10 * and/or sell copies of the Software, and to permit persons to whom the 11 * Software is furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in 14 * all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 * OTHER DEALINGS IN THE SOFTWARE. 23 * 24 * Authors: AMD 25 * 26 */ 27 28 #ifndef __DC_HUBBUB_DCN10_H__ 29 #define __DC_HUBBUB_DCN10_H__ 30 31 #include "core_types.h" 32 #include "dchubbub.h" 33 34 #define TO_DCN10_HUBBUB(hubbub)\ 35 container_of(hubbub, struct dcn10_hubbub, base) 36 37 #define HUBBUB_REG_LIST_DCN_COMMON()\ 38 SR(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A),\ 39 SR(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A),\ 40 SR(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B),\ 41 SR(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B),\ 42 SR(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C),\ 43 SR(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C),\ 44 SR(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D),\ 45 SR(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D),\ 46 SR(DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL),\ 47 SR(DCHUBBUB_ARB_DRAM_STATE_CNTL),\ 48 SR(DCHUBBUB_ARB_SAT_LEVEL),\ 49 SR(DCHUBBUB_ARB_DF_REQ_OUTSTAND),\ 50 SR(DCHUBBUB_GLOBAL_TIMER_CNTL), \ 51 SR(DCHUBBUB_TEST_DEBUG_INDEX), \ 52 SR(DCHUBBUB_TEST_DEBUG_DATA),\ 53 SR(DCHUBBUB_SOFT_RESET) 54 55 #define HUBBUB_VM_REG_LIST() \ 56 SR(DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_A),\ 57 SR(DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_B),\ 58 SR(DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_C),\ 59 SR(DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_D) 60 61 #define HUBBUB_SR_WATERMARK_REG_LIST()\ 62 SR(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A),\ 63 SR(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A),\ 64 SR(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B),\ 65 SR(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B),\ 66 SR(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C),\ 67 SR(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C),\ 68 SR(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D),\ 69 SR(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D) 70 71 #define HUBBUB_REG_LIST_DCN10(id)\ 72 HUBBUB_REG_LIST_DCN_COMMON(), \ 73 HUBBUB_VM_REG_LIST(), \ 74 HUBBUB_SR_WATERMARK_REG_LIST(), \ 75 SR(DCHUBBUB_SDPIF_FB_TOP),\ 76 SR(DCHUBBUB_SDPIF_FB_BASE),\ 77 SR(DCHUBBUB_SDPIF_FB_OFFSET),\ 78 SR(DCHUBBUB_SDPIF_AGP_BASE),\ 79 SR(DCHUBBUB_SDPIF_AGP_BOT),\ 80 SR(DCHUBBUB_SDPIF_AGP_TOP) 81 82 struct dcn_hubbub_registers { 83 uint32_t DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A; 84 uint32_t DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_A; 85 uint32_t DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A; 86 uint32_t DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A; 87 uint32_t DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A; 88 uint32_t DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B; 89 uint32_t DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_B; 90 uint32_t DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B; 91 uint32_t DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B; 92 uint32_t DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B; 93 uint32_t DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C; 94 uint32_t DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_C; 95 uint32_t DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C; 96 uint32_t DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C; 97 uint32_t DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C; 98 uint32_t DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D; 99 uint32_t DCHUBBUB_ARB_PTE_META_URGENCY_WATERMARK_D; 100 uint32_t DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D; 101 uint32_t DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D; 102 uint32_t DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D; 103 uint32_t DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL; 104 uint32_t DCHUBBUB_ARB_SAT_LEVEL; 105 uint32_t DCHUBBUB_ARB_DF_REQ_OUTSTAND; 106 uint32_t DCHUBBUB_GLOBAL_TIMER_CNTL; 107 uint32_t DCHUBBUB_ARB_DRAM_STATE_CNTL; 108 uint32_t DCHUBBUB_TEST_DEBUG_INDEX; 109 uint32_t DCHUBBUB_TEST_DEBUG_DATA; 110 uint32_t DCHUBBUB_SDPIF_FB_TOP; 111 uint32_t DCHUBBUB_SDPIF_FB_BASE; 112 uint32_t DCHUBBUB_SDPIF_FB_OFFSET; 113 uint32_t DCHUBBUB_SDPIF_AGP_BASE; 114 uint32_t DCHUBBUB_SDPIF_AGP_BOT; 115 uint32_t DCHUBBUB_SDPIF_AGP_TOP; 116 uint32_t DCHUBBUB_CRC_CTRL; 117 uint32_t DCHUBBUB_SOFT_RESET; 118 uint32_t DCN_VM_FB_LOCATION_BASE; 119 uint32_t DCN_VM_FB_LOCATION_TOP; 120 uint32_t DCN_VM_FB_OFFSET; 121 uint32_t DCN_VM_AGP_BOT; 122 uint32_t DCN_VM_AGP_TOP; 123 uint32_t DCN_VM_AGP_BASE; 124 uint32_t DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB; 125 uint32_t DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB; 126 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_NOM_A; 127 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_NOM_B; 128 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_NOM_C; 129 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_NOM_D; 130 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_FLIP_A; 131 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_FLIP_B; 132 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_FLIP_C; 133 uint32_t DCHUBBUB_ARB_FRAC_URG_BW_FLIP_D; 134 uint32_t DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_A; 135 uint32_t DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_B; 136 uint32_t DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_C; 137 uint32_t DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_D; 138 uint32_t DCHUBBUB_ARB_HOSTVM_CNTL; 139 uint32_t DCHVM_CTRL0; 140 uint32_t DCHVM_MEM_CTRL; 141 uint32_t DCHVM_CLK_CTRL; 142 uint32_t DCHVM_RIOMMU_CTRL0; 143 uint32_t DCHVM_RIOMMU_STAT0; 144 }; 145 146 /* set field name */ 147 #define HUBBUB_SF(reg_name, field_name, post_fix)\ 148 .field_name = reg_name ## __ ## field_name ## post_fix 149 150 #define HUBBUB_MASK_SH_LIST_DCN_COMMON(mask_sh)\ 151 HUBBUB_SF(DCHUBBUB_GLOBAL_TIMER_CNTL, DCHUBBUB_GLOBAL_TIMER_ENABLE, mask_sh), \ 152 HUBBUB_SF(DCHUBBUB_SOFT_RESET, DCHUBBUB_GLOBAL_SOFT_RESET, mask_sh), \ 153 HUBBUB_SF(DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL, DCHUBBUB_ARB_WATERMARK_CHANGE_REQUEST, mask_sh), \ 154 HUBBUB_SF(DCHUBBUB_ARB_WATERMARK_CHANGE_CNTL, DCHUBBUB_ARB_WATERMARK_CHANGE_DONE_INTERRUPT_DISABLE, mask_sh), \ 155 HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_SELF_REFRESH_FORCE_VALUE, mask_sh), \ 156 HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_SELF_REFRESH_FORCE_ENABLE, mask_sh), \ 157 HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_VALUE, mask_sh), \ 158 HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_ENABLE, mask_sh), \ 159 HUBBUB_SF(DCHUBBUB_ARB_SAT_LEVEL, DCHUBBUB_ARB_SAT_LEVEL, mask_sh), \ 160 HUBBUB_SF(DCHUBBUB_ARB_DF_REQ_OUTSTAND, DCHUBBUB_ARB_MIN_REQ_OUTSTAND, mask_sh), \ 161 HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A, DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A, mask_sh), \ 162 HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B, DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B, mask_sh), \ 163 HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C, DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C, mask_sh), \ 164 HUBBUB_SF(DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D, DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D, mask_sh), \ 165 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A, DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A, mask_sh), \ 166 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B, DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B, mask_sh), \ 167 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C, DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C, mask_sh), \ 168 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D, DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D, mask_sh) 169 170 #define HUBBUB_MASK_SH_LIST_STUTTER(mask_sh) \ 171 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A, DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A, mask_sh), \ 172 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B, DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B, mask_sh), \ 173 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C, DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C, mask_sh), \ 174 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D, DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D, mask_sh), \ 175 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A, DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A, mask_sh), \ 176 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B, DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B, mask_sh), \ 177 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C, DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C, mask_sh), \ 178 HUBBUB_SF(DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D, DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D, mask_sh) 179 180 #define HUBBUB_MASK_SH_LIST_DCN10(mask_sh)\ 181 HUBBUB_MASK_SH_LIST_DCN_COMMON(mask_sh), \ 182 HUBBUB_MASK_SH_LIST_STUTTER(mask_sh), \ 183 HUBBUB_SF(DCHUBBUB_SDPIF_FB_TOP, SDPIF_FB_TOP, mask_sh), \ 184 HUBBUB_SF(DCHUBBUB_SDPIF_FB_BASE, SDPIF_FB_BASE, mask_sh), \ 185 HUBBUB_SF(DCHUBBUB_SDPIF_FB_OFFSET, SDPIF_FB_OFFSET, mask_sh), \ 186 HUBBUB_SF(DCHUBBUB_SDPIF_AGP_BASE, SDPIF_AGP_BASE, mask_sh), \ 187 HUBBUB_SF(DCHUBBUB_SDPIF_AGP_BOT, SDPIF_AGP_BOT, mask_sh), \ 188 HUBBUB_SF(DCHUBBUB_SDPIF_AGP_TOP, SDPIF_AGP_TOP, mask_sh) 189 190 #define DCN_HUBBUB_REG_FIELD_LIST(type) \ 191 type DCHUBBUB_GLOBAL_TIMER_ENABLE; \ 192 type DCHUBBUB_ARB_WATERMARK_CHANGE_REQUEST;\ 193 type DCHUBBUB_ARB_WATERMARK_CHANGE_DONE_INTERRUPT_DISABLE;\ 194 type DCHUBBUB_ARB_ALLOW_SELF_REFRESH_FORCE_VALUE;\ 195 type DCHUBBUB_ARB_ALLOW_SELF_REFRESH_FORCE_ENABLE;\ 196 type DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_VALUE;\ 197 type DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_ENABLE;\ 198 type DCHUBBUB_ARB_SAT_LEVEL;\ 199 type DCHUBBUB_ARB_MIN_REQ_OUTSTAND;\ 200 type DCHUBBUB_GLOBAL_TIMER_REFDIV;\ 201 type DCHUBBUB_GLOBAL_SOFT_RESET; \ 202 type SDPIF_FB_TOP;\ 203 type SDPIF_FB_BASE;\ 204 type SDPIF_FB_OFFSET;\ 205 type SDPIF_AGP_BASE;\ 206 type SDPIF_AGP_BOT;\ 207 type SDPIF_AGP_TOP;\ 208 type FB_BASE;\ 209 type FB_TOP;\ 210 type FB_OFFSET;\ 211 type AGP_BOT;\ 212 type AGP_TOP;\ 213 type AGP_BASE;\ 214 type DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_A;\ 215 type DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_B;\ 216 type DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_C;\ 217 type DCHUBBUB_ARB_DATA_URGENCY_WATERMARK_D;\ 218 type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A;\ 219 type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B;\ 220 type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C;\ 221 type DCHUBBUB_ARB_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D;\ 222 type DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_MSB;\ 223 type DCN_VM_PROTECTION_FAULT_DEFAULT_ADDR_LSB 224 225 #define HUBBUB_STUTTER_REG_FIELD_LIST(type) \ 226 type DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A;\ 227 type DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_B;\ 228 type DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_C;\ 229 type DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_D;\ 230 type DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_A;\ 231 type DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_B;\ 232 type DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_C;\ 233 type DCHUBBUB_ARB_ALLOW_SR_EXIT_WATERMARK_D 234 235 #define HUBBUB_HVM_REG_FIELD_LIST(type) \ 236 type DCHUBBUB_ARB_MIN_REQ_OUTSTAND_COMMIT_THRESHOLD;\ 237 type DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_A;\ 238 type DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_B;\ 239 type DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_C;\ 240 type DCHUBBUB_ARB_VM_ROW_URGENCY_WATERMARK_D;\ 241 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_A;\ 242 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_B;\ 243 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_C;\ 244 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_ENTER_WATERMARK_D;\ 245 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_A;\ 246 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_B;\ 247 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_C;\ 248 type DCHUBBUB_ARB_VM_ROW_ALLOW_SR_EXIT_WATERMARK_D;\ 249 type DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_A;\ 250 type DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_B;\ 251 type DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_C;\ 252 type DCHUBBUB_ARB_VM_ROW_ALLOW_DRAM_CLK_CHANGE_WATERMARK_D;\ 253 type DCHUBBUB_ARB_FRAC_URG_BW_NOM_A;\ 254 type DCHUBBUB_ARB_FRAC_URG_BW_NOM_B;\ 255 type DCHUBBUB_ARB_FRAC_URG_BW_NOM_C;\ 256 type DCHUBBUB_ARB_FRAC_URG_BW_NOM_D;\ 257 type DCHUBBUB_ARB_FRAC_URG_BW_FLIP_A;\ 258 type DCHUBBUB_ARB_FRAC_URG_BW_FLIP_B;\ 259 type DCHUBBUB_ARB_FRAC_URG_BW_FLIP_C;\ 260 type DCHUBBUB_ARB_FRAC_URG_BW_FLIP_D;\ 261 type DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_A;\ 262 type DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_B;\ 263 type DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_C;\ 264 type DCHUBBUB_ARB_REFCYC_PER_TRIP_TO_MEMORY_D;\ 265 type DCHUBBUB_ARB_MAX_QOS_COMMIT_THRESHOLD;\ 266 type HOSTVM_INIT_REQ; \ 267 type HVM_GPUVMRET_PWR_REQ_DIS; \ 268 type HVM_GPUVMRET_FORCE_REQ; \ 269 type HVM_GPUVMRET_POWER_STATUS; \ 270 type HVM_DISPCLK_R_GATE_DIS; \ 271 type HVM_DISPCLK_G_GATE_DIS; \ 272 type HVM_DCFCLK_R_GATE_DIS; \ 273 type HVM_DCFCLK_G_GATE_DIS; \ 274 type TR_REQ_REQCLKREQ_MODE; \ 275 type TW_RSP_COMPCLKREQ_MODE; \ 276 type HOSTVM_PREFETCH_REQ; \ 277 type HOSTVM_POWERSTATUS; \ 278 type RIOMMU_ACTIVE; \ 279 type HOSTVM_PREFETCH_DONE 280 281 struct dcn_hubbub_shift { 282 DCN_HUBBUB_REG_FIELD_LIST(uint8_t); 283 HUBBUB_STUTTER_REG_FIELD_LIST(uint8_t); 284 HUBBUB_HVM_REG_FIELD_LIST(uint8_t); 285 }; 286 287 struct dcn_hubbub_mask { 288 DCN_HUBBUB_REG_FIELD_LIST(uint32_t); 289 HUBBUB_STUTTER_REG_FIELD_LIST(uint32_t); 290 HUBBUB_HVM_REG_FIELD_LIST(uint32_t); 291 }; 292 293 struct dc; 294 295 struct dcn10_hubbub { 296 struct hubbub base; 297 const struct dcn_hubbub_registers *regs; 298 const struct dcn_hubbub_shift *shifts; 299 const struct dcn_hubbub_mask *masks; 300 unsigned int debug_test_index_pstate; 301 struct dcn_watermark_set watermarks; 302 }; 303 304 void hubbub1_update_dchub( 305 struct hubbub *hubbub, 306 struct dchub_init_data *dh_data); 307 308 bool hubbub1_verify_allow_pstate_change_high( 309 struct hubbub *hubbub); 310 311 void hubbub1_wm_change_req_wa(struct hubbub *hubbub); 312 313 void hubbub1_program_watermarks( 314 struct hubbub *hubbub, 315 struct dcn_watermark_set *watermarks, 316 unsigned int refclk_mhz, 317 bool safe_to_lower); 318 319 void hubbub1_allow_self_refresh_control(struct hubbub *hubbub, bool allow); 320 321 bool hubbub1_is_allow_self_refresh_enabled(struct hubbub *hubub); 322 323 void hubbub1_toggle_watermark_change_req( 324 struct hubbub *hubbub); 325 326 void hubbub1_wm_read_state(struct hubbub *hubbub, 327 struct dcn_hubbub_wm *wm); 328 329 void hubbub1_soft_reset(struct hubbub *hubbub, bool reset); 330 void hubbub1_construct(struct hubbub *hubbub, 331 struct dc_context *ctx, 332 const struct dcn_hubbub_registers *hubbub_regs, 333 const struct dcn_hubbub_shift *hubbub_shift, 334 const struct dcn_hubbub_mask *hubbub_mask); 335 336 void hubbub1_program_urgent_watermarks( 337 struct hubbub *hubbub, 338 struct dcn_watermark_set *watermarks, 339 unsigned int refclk_mhz, 340 bool safe_to_lower); 341 void hubbub1_program_stutter_watermarks( 342 struct hubbub *hubbub, 343 struct dcn_watermark_set *watermarks, 344 unsigned int refclk_mhz, 345 bool safe_to_lower); 346 void hubbub1_program_pstate_watermarks( 347 struct hubbub *hubbub, 348 struct dcn_watermark_set *watermarks, 349 unsigned int refclk_mhz, 350 bool safe_to_lower); 351 352 #endif 353