1 /* SPDX-License-Identifier: MIT */ 2 /* 3 * Copyright © 2022 Intel Corporation 4 */ 5 6 #ifndef __INTEL_DMC_REGS_H__ 7 #define __INTEL_DMC_REGS_H__ 8 9 #include "intel_display_reg_defs.h" 10 11 enum dmc_event_id { 12 DMC_EVENT_TRUE = 0x0, 13 DMC_EVENT_FALSE = 0x1, 14 }; 15 16 enum maindmc_event_id { 17 MAINDMC_EVENT_CMP_ZERO = 0x8, 18 MAINDMC_EVENT_CMP_ODD = 0x9, 19 MAINDMC_EVENT_CMP_NEG = 0xa, 20 MAINDMC_EVENT_CMP_CARRY = 0xb, 21 22 MAINDMC_EVENT_TMR0_DONE = 0x14, 23 MAINDMC_EVENT_TMR1_DONE = 0x15, 24 MAINDMC_EVENT_TMR2_DONE = 0x16, 25 MAINDMC_EVENT_COUNT0_DONE = 0x17, 26 MAINDMC_EVENT_COUNT1_DONE = 0x18, 27 MAINDMC_EVENT_PERF_CNTR_DARBF = 0x19, 28 29 MAINDMC_EVENT_SCANLINE_INRANGE_FQ_A_TRIGGER = 0x22, 30 MAINDMC_EVENT_SCANLINE_INRANGE_FQ_B_TRIGGER = 0x23, 31 MAINDMC_EVENT_SCANLINE_INRANGE_FQ_C_TRIGGER = 0x24, 32 MAINDMC_EVENT_SCANLINE_INRANGE_FQ_D_TRIGGER = 0x25, 33 MAINDMC_EVENT_1KHZ_FQ_A_TRIGGER = 0x26, 34 MAINDMC_EVENT_1KHZ_FQ_B_TRIGGER = 0x27, 35 MAINDMC_EVENT_1KHZ_FQ_C_TRIGGER = 0x28, 36 MAINDMC_EVENT_1KHZ_FQ_D_TRIGGER = 0x29, 37 MAINDMC_EVENT_SCANLINE_COMP_A = 0x2a, 38 MAINDMC_EVENT_SCANLINE_COMP_B = 0x2b, 39 MAINDMC_EVENT_SCANLINE_COMP_C = 0x2c, 40 MAINDMC_EVENT_SCANLINE_COMP_D = 0x2d, 41 MAINDMC_EVENT_VBLANK_DELAYED_A = 0x2e, 42 MAINDMC_EVENT_VBLANK_DELAYED_B = 0x2f, 43 MAINDMC_EVENT_VBLANK_DELAYED_C = 0x30, 44 MAINDMC_EVENT_VBLANK_DELAYED_D = 0x31, 45 MAINDMC_EVENT_VBLANK_A = 0x32, 46 MAINDMC_EVENT_VBLANK_B = 0x33, 47 MAINDMC_EVENT_VBLANK_C = 0x34, 48 MAINDMC_EVENT_VBLANK_D = 0x35, 49 MAINDMC_EVENT_HBLANK_A = 0x36, 50 MAINDMC_EVENT_HBLANK_B = 0x37, 51 MAINDMC_EVENT_HBLANK_C = 0x38, 52 MAINDMC_EVENT_HBLANK_D = 0x39, 53 MAINDMC_EVENT_VSYNC_A = 0x3a, 54 MAINDMC_EVENT_VSYNC_B = 0x3b, 55 MAINDMC_EVENT_VSYNC_C = 0x3c, 56 MAINDMC_EVENT_VSYNC_D = 0x3d, 57 MAINDMC_EVENT_SCANLINE_A = 0x3e, 58 MAINDMC_EVENT_SCANLINE_B = 0x3f, 59 MAINDMC_EVENT_SCANLINE_C = 0x40, 60 MAINDMC_EVENT_SCANLINE_D = 0x41, 61 62 MAINDMC_EVENT_PLANE1_FLIP_A = 0x42, 63 MAINDMC_EVENT_PLANE2_FLIP_A = 0x43, 64 MAINDMC_EVENT_PLANE3_FLIP_A = 0x44, 65 MAINDMC_EVENT_PLANE4_FLIP_A = 0x45, 66 MAINDMC_EVENT_PLANE5_FLIP_A = 0x46, 67 MAINDMC_EVENT_PLANE6_FLIP_A = 0x47, 68 MAINDMC_EVENT_PLANE7_FLIP_A = 0x48, 69 MAINDMC_EVENT_PLANE1_FLIP_B = 0x49, 70 MAINDMC_EVENT_PLANE2_FLIP_B = 0x4a, 71 MAINDMC_EVENT_PLANE3_FLIP_B = 0x4b, 72 MAINDMC_EVENT_PLANE4_FLIP_B = 0x4c, 73 MAINDMC_EVENT_PLANE5_FLIP_B = 0x4d, 74 MAINDMC_EVENT_PLANE6_FLIP_B = 0x4e, 75 MAINDMC_EVENT_PLANE7_FLIP_B = 0x4f, 76 MAINDMC_EVENT_PLANE1_FLIP_C = 0x50, 77 MAINDMC_EVENT_PLANE2_FLIP_C = 0x51, 78 MAINDMC_EVENT_PLANE3_FLIP_C = 0x52, 79 MAINDMC_EVENT_PLANE4_FLIP_C = 0x53, 80 MAINDMC_EVENT_PLANE5_FLIP_C = 0x54, 81 MAINDMC_EVENT_PLANE6_FLIP_C = 0x55, 82 MAINDMC_EVENT_PLANE7_FLIP_C = 0x56, 83 MAINDMC_EVENT_PLANE1_FLIP_D = 0x57, 84 MAINDMC_EVENT_PLANE2_FLIP_D = 0x58, 85 MAINDMC_EVENT_PLANE3_FLIP_D = 0x59, 86 MAINDMC_EVENT_PLANE4_FLIP_D = 0x5a, 87 MAINDMC_EVENT_PLANE5_FLIP_D = 0x5b, 88 MAINDMC_EVENT_PLANE6_FLIP_D = 0x5c, 89 MAINDMC_EVENT_PLANE7_FLIP_D = 0x5d, 90 MAINDMC_EVENT_PLANE1_FLIP_DONE_A = 0x5e, 91 MAINDMC_EVENT_PLANE2_FLIP_DONE_A = 0x5f, 92 MAINDMC_EVENT_PLANE3_FLIP_DONE_A = 0x60, 93 MAINDMC_EVENT_PLANE4_FLIP_DONE_A = 0x61, 94 MAINDMC_EVENT_PLANE5_FLIP_DONE_A = 0x62, 95 MAINDMC_EVENT_PLANE6_FLIP_DONE_A = 0x63, 96 MAINDMC_EVENT_PLANE7_FLIP_DONE_A = 0x64, 97 MAINDMC_EVENT_PLANE1_FLIP_DONE_B = 0x65, 98 MAINDMC_EVENT_PLANE2_FLIP_DONE_B = 0x66, 99 MAINDMC_EVENT_PLANE3_FLIP_DONE_B = 0x67, 100 MAINDMC_EVENT_PLANE4_FLIP_DONE_B = 0x68, 101 MAINDMC_EVENT_PLANE5_FLIP_DONE_B = 0x69, 102 MAINDMC_EVENT_PLANE6_FLIP_DONE_B = 0x6a, 103 MAINDMC_EVENT_PLANE7_FLIP_DONE_B = 0x6b, 104 MAINDMC_EVENT_PLANE1_FLIP_DONE_C = 0x6c, 105 MAINDMC_EVENT_PLANE2_FLIP_DONE_C = 0x6d, 106 MAINDMC_EVENT_PLANE3_FLIP_DONE_C = 0x6e, 107 MAINDMC_EVENT_PLANE4_FLIP_DONE_C = 0x6f, 108 MAINDMC_EVENT_PLANE5_FLIP_DONE_C = 0x70, 109 MAINDMC_EVENT_PLANE6_FLIP_DONE_C = 0x71, 110 MAINDMC_EVENT_PLANE7_FLIP_DONE_C = 0x72, 111 MAINDMC_EVENT_PLANE1_FLIP_DONE_D = 0x73, 112 MAINDMC_EVENT_PLANE2_FLIP_DONE_D = 0x74, 113 MAINDMC_EVENT_PLANE3_FLIP_DONE_D = 0x75, 114 MAINDMC_EVENT_PLANE4_FLIP_DONE_D = 0x76, 115 MAINDMC_EVENT_PLANE5_FLIP_DONE_D = 0x77, 116 MAINDMC_EVENT_PLANE6_FLIP_DONE_D = 0x78, 117 MAINDMC_EVENT_PLANE7_FLIP_DONE_D = 0x79, 118 119 MAINDMC_EVENT_WIDI_GTT_FAULT_SL1 = 0x7d, 120 MAINDMC_EVENT_WIDI_GTT_FAULT_SL2 = 0x7e, 121 MAINDMC_EVENT_WIDI_CAP_ACTIVE_SL1 = 0x7f, 122 MAINDMC_EVENT_WIDI_CAP_ACTIVE_SL2 = 0x80, 123 124 MAINDMC_EVENT_RENUKE_A = 0x85, 125 MAINDMC_EVENT_RENUKE_B = 0x86, 126 MAINDMC_EVENT_RENUKE_C = 0x87, 127 MAINDMC_EVENT_RENUKE_D = 0x88, 128 MAINDMC_EVENT_DPFC_FIFO_FULL_A = 0x89, 129 MAINDMC_EVENT_DPFC_FIFO_FULL_B = 0x8a, 130 MAINDMC_EVENT_DPFC_FIFO_FULL_C = 0x8b, 131 MAINDMC_EVENT_DPFC_FIFO_FULL_D = 0x8c, 132 MAINDMC_EVENT_DPFC_PIXEL_CNT_MISMATCH_A = 0x8d, 133 MAINDMC_EVENT_DPFC_PIXEL_CNT_MISMATCH_B = 0x8e, 134 MAINDMC_EVENT_DPFC_PIXEL_CNT_MISMATCH_C = 0x8f, 135 MAINDMC_EVENT_DPFC_PIXEL_CNT_MISMATCH_D = 0x90, 136 MAINDMC_EVENT_DPFC_COMPTAG_UNDERRUN_A = 0x91, 137 MAINDMC_EVENT_DPFC_COMPTAG_UNDERRUN_B = 0x92, 138 MAINDMC_EVENT_DPFC_COMPTAG_UNDERRUN_C = 0x93, 139 MAINDMC_EVENT_DPFC_COMPTAG_UNDERRUN_D = 0x94, 140 MAINDMC_EVENT_DPFC_FIFO_NOT_EMPTY_A = 0x95, 141 MAINDMC_EVENT_DPFC_FIFO_NOT_EMPTY_B = 0x96, 142 MAINDMC_EVENT_DPFC_FIFO_NOT_EMPTY_C = 0x97, 143 MAINDMC_EVENT_DPFC_FIFO_NOT_EMPTY_D = 0x98, 144 MAINDMC_EVENT_DPFC_COMPTAG_MISMATCH_A = 0x99, 145 MAINDMC_EVENT_DPFC_COMPTAG_MISMATCH_B = 0x9a, 146 MAINDMC_EVENT_DPFC_COMPTAG_MISMATCH_C = 0x9b, 147 MAINDMC_EVENT_DPFC_COMPTAG_MISMATCH_D = 0x9c, 148 MAINDMC_EVENT_DISP_PCH_INT = 0x9d, 149 MAINDMC_EVENT_GTT_ERR = 0x9e, 150 MAINDMC_EVENT_VTD_ERR = 0x9f, 151 MAINDMC_EVENT_FULL_FQ_WAKE_TRIGGER_A = 0xa0, 152 MAINDMC_EVENT_FULL_FQ_WAKE_TRIGGER_B = 0xa1, 153 MAINDMC_EVENT_FULL_FQ_WAKE_TRIGGER_C = 0xa2, 154 MAINDMC_EVENT_FULL_FQ_WAKE_TRIGGER_D = 0xa3, 155 MAINDMC_EVENT_PIPEDMC_CHICKEN_FW_EVENT_A = 0xa4, 156 MAINDMC_EVENT_PIPEDMC_CHICKEN_FW_EVENT_B = 0xa5, 157 MAINDMC_EVENT_PIPEDMC_CHICKEN_FW_EVENT_C = 0xa6, 158 MAINDMC_EVENT_PIPEDMC_CHICKEN_FW_EVENT_D = 0xa7, 159 160 MAINDMC_EVENT_DC_CLOCK_OFF_START_EDP = 0xb2, 161 MAINDMC_EVENT_DC_CLOCK_OFF_START_DSI = 0xb3, 162 MAINDMC_EVENT_DCPR_DMC_CSR_START = 0xb4, 163 MAINDMC_EVENT_IN_PSR = 0xb5, 164 165 MAINDMC_EVENT_IN_MEMUP = 0xb7, 166 MAINDMC_EVENT_IN_VGA = 0xb8, 167 168 MAINDMC_EVENT_IN_KVM_SESSION = 0xba, 169 MAINDMC_EVENT_DEWAKE = 0xbb, 170 171 MAINDMC_EVENT_TRAP_HIT = 0xbd, 172 MAINDMC_EVENT_CLK_USEC = 0xbe, 173 MAINDMC_EVENT_CLK_MSEC = 0xbf, 174 175 MAINDMC_EVENT_CHICKEN1 = 0xc8, 176 MAINDMC_EVENT_CHICKEN2 = 0xc9, 177 MAINDMC_EVENT_CHICKEN3 = 0xca, 178 MAINDMC_EVENT_DDT_UBP = 0xcb, 179 180 MAINDMC_EVENT_HP_LATENCY = 0xcd, 181 MAINDMC_EVENT_LP_LATENCY = 0xce, 182 MAINDMC_EVENT_WIDI_LP_REQ_SL1 = 0xcf, 183 MAINDMC_EVENT_WIDI_LP_REQ_SL2 = 0xd0, 184 185 MAINDMC_EVENT_DG_DMC_EVT_0 = 0xd3, 186 MAINDMC_EVENT_DG_DMC_EVT_1 = 0xd4, 187 MAINDMC_EVENT_DG_DMC_EVT_2 = 0xd5, 188 MAINDMC_EVENT_DG_DMC_EVT_3 = 0xd6, 189 MAINDMC_EVENT_DG_DMC_EVT_4 = 0xd7, 190 MAINDMC_EVENT_DACFE_CLK_STOP = 0xd8, 191 MAINDMC_EVENT_DACFE_AZILIA_SDI_WAKE = 0xd9, 192 MAINDMC_EVENT_AUDIO_DOUBLE_FUNC_GRP_RST = 0xda, 193 MAINDMC_EVENT_AUDIO_CMD_VALID = 0xdb, 194 MAINDMC_EVENT_AUDIO_FRM_SYNC_BCLK = 0xdc, 195 MAINDMC_EVENT_AUDIO_FRM_SYNC_CDCLK = 0xdd, 196 MAINDMC_EVENT_AUDIO_PRESENCE_DETECT_A = 0xde, 197 MAINDMC_EVENT_AUDIO_PRESENCE_DETECT_B = 0xdf, 198 MAINDMC_EVENT_AUDIO_PRESENCE_DETECT_C = 0xe0, 199 MAINDMC_EVENT_AUDIO_PRESENCE_DETECT_E = 0xe1, 200 MAINDMC_EVENT_CMTG_SCANLINE_IN_GB_DC6v = 0xe2, 201 MAINDMC_EVENT_DCPR_CMTG_SCANLINE_OUTSIDE_GB = 0xe3, 202 MAINDMC_EVENT_DC6v_BACKWARD_COMPAT = 0xe4, 203 MAINDMC_EVENT_DPMA_PM_ABORT = 0xe5, 204 205 MAINDMC_EVENT_STACK_OVF = 0xfc, 206 MAINDMC_EVENT_NO_CLAIM = 0xfd, 207 MAINDMC_EVENT_UNK_CMD = 0xfe, 208 MAINDMC_EVENT_HTP_MOD = 0xff, 209 }; 210 211 enum pipedmc_event_id { 212 PIPEDMC_EVENT_TMR0_DONE = 0x14, 213 PIPEDMC_EVENT_TMR1_DONE = 0x15, 214 PIPEDMC_EVENT_TMR2_DONE = 0x16, 215 PIPEDMC_EVENT_COUNT0_DONE = 0x17, 216 PIPEDMC_EVENT_COUNT1_DONE = 0x18, 217 PIPEDMC_EVENT_PGA_PGB_RESTORE_DONE = 0x19, 218 PIPEDMC_EVENT_PG1_PG2_RESTORE_DONE = 0x1a, 219 PIPEDMC_EVENT_PGA_PGB_SAVE_DONE = 0x1b, 220 PIPEDMC_EVENT_PG1_PG2_SAVE_DONE = 0x1c, 221 222 PIPEDMC_EVENT_FULL_FQ_WAKE_TRIGGER = 0x2b, 223 PIPEDMC_EVENT_1KHZ_FQ_TRIGGER = 0x2c, 224 PIPEDMC_EVENT_SCANLINE_INRANGE_FQ_TRIGGER = 0x2d, 225 PIPEDMC_EVENT_SCANLINE_INRANGE = 0x2e, 226 PIPEDMC_EVENT_SCANLINE_OUTRANGE = 0x2f, 227 PIPEDMC_EVENT_SCANLINE_EQUAL = 0x30, 228 PIPEDMC_EVENT_DELAYED_VBLANK = 0x31, 229 PIPEDMC_EVENT_VBLANK = 0x32, 230 PIPEDMC_EVENT_HBLANK = 0x33, 231 PIPEDMC_EVENT_VSYNC = 0x34, 232 PIPEDMC_EVENT_SCANLINE_FROM_DMUX = 0x35, 233 PIPEDMC_EVENT_PLANE1_FLIP = 0x36, 234 PIPEDMC_EVENT_PLANE2_FLIP = 0x37, 235 PIPEDMC_EVENT_PLANE3_FLIP = 0x38, 236 PIPEDMC_EVENT_PLANE4_FLIP = 0x39, 237 PIPEDMC_EVENT_PLANE5_FLIP = 0x3a, 238 PIPEDMC_EVENT_PLANE6_FLIP = 0x3b, 239 PIPEDMC_EVENT_PLANE7_FLIP = 0x3c, 240 PIPEDMC_EVENT_ADAPTIVE_DCB_TRIGGER = 0x3d, 241 242 PIPEDMC_EVENT_PLANE1_FLIP_DONE = 0x56, 243 PIPEDMC_EVENT_PLANE2_FLIP_DONE = 0x57, 244 PIPEDMC_EVENT_PLANE3_FLIP_DONE = 0x58, 245 PIPEDMC_EVENT_PLANE4_FLIP_DONE = 0x59, 246 PIPEDMC_EVENT_PLANE5_FLIP_DONE = 0x5a, 247 PIPEDMC_EVENT_PLANE6_FLIP_DONE = 0x5b, 248 PIPEDMC_EVENT_PLANE7_FLIP_DONE = 0x5c, 249 250 PIPEDMC_EVENT_GTT_ERR = 0x9b, 251 252 PIPEDMC_EVENT_IN_PSR = 0xb5, 253 PIPEDMC_EVENT_DSI_DMC_IDLE = 0xb6, 254 PIPEDMC_EVENT_PSR2_DMC_IDLE = 0xb7, 255 PIPEDMC_EVENT_IN_VGA = 0xb8, 256 257 PIPEDMC_EVENT_TRAP_HIT = 0xbd, 258 PIPEDMC_EVENT_CLK_USEC = 0xbe, 259 PIPEDMC_EVENT_CLK_MSEC = 0xbf, 260 261 PIPEDMC_EVENT_CHICKEN1 = 0xc8, 262 PIPEDMC_EVENT_CHICKEN2 = 0xc9, 263 PIPEDMC_EVENT_CHICKEN3 = 0xca, 264 PIPEDMC_EVENT_DDT_UBP = 0xcb, 265 266 PIPEDMC_EVENT_LP_LATENCY = 0xce, 267 268 PIPEDMC_EVENT_LACE_PART_A_HIST_TRIGGER = 0xdf, 269 PIPEDMC_EVENT_LACE_PART_B_HIST_TRIGGER = 0xe0, 270 271 PIPEDMC_EVENT_STACK_OVF = 0xfc, 272 PIPEDMC_EVENT_NO_CLAIM = 0xfd, 273 PIPEDMC_EVENT_UNK_CMD = 0xfe, 274 PIPEDMC_EVENT_HTP_MOD = 0xff, 275 }; 276 277 #define DMC_PROGRAM(addr, i) _MMIO((addr) + (i) * 4) 278 #define DMC_SSP_BASE_ADDR_GEN9 0x00002FC0 279 280 #define _PIPEDMC_CONTROL_A 0x45250 281 #define _PIPEDMC_CONTROL_B 0x45254 282 #define PIPEDMC_CONTROL(pipe) _MMIO_PIPE(pipe, \ 283 _PIPEDMC_CONTROL_A, \ 284 _PIPEDMC_CONTROL_B) 285 #define PIPEDMC_ENABLE REG_BIT(0) 286 287 #define MTL_PIPEDMC_CONTROL _MMIO(0x45250) 288 #define PIPEDMC_ENABLE_MTL(pipe) REG_BIT(((pipe) - PIPE_A) * 4) 289 290 #define _PIPEDMC_STATUS_A 0x5f06c 291 #define _PIPEDMC_STATUS_B 0x5f46c 292 #define PIPEDMC_STATUS(pipe) _MMIO_PIPE((pipe), _PIPEDMC_STATUS_A, _PIPEDMC_STATUS_B) 293 #define PIPEDMC_SSP REG_GENMASK(31, 16) 294 #define PIPEDMC_INT_VECTOR_MASK REG_GENMASK(15, 8) 295 /* PIPEDMC_INT_VECTOR values defined by firmware */ 296 #define PIPEDMC_INT_VECTOR_SCANLINE_COMP_ERROR REG_FIELD_PREP(PIPEDMC_INT_VECTOR_MASK, 0x1) 297 #define PIPEDMC_INT_VECTOR_DC6V_FLIPQ_OVERLAP_ERROR REG_FIELD_PREP(PIPEDMC_INT_VECTOR_MASK, 0x2) 298 #define PIPEDMC_INT_VECTOR_FLIPQ_PROG_DONE REG_FIELD_PREP(PIPEDMC_INT_VECTOR_MASK, 0xff) /* Wa_16018781658:lnl[a0] */ 299 #define PIPEDMC_EVT_PENDING REG_GENMASK(7, 0) 300 301 #define _PIPEDMC_INTERRUPT_A 0x5f190 /* lnl+ */ 302 #define _PIPEDMC_INTERRUPT_B 0x5f590 /* lnl+ */ 303 #define PIPEDMC_INTERRUPT(pipe) _MMIO_PIPE((pipe), _PIPEDMC_INTERRUPT_A, _PIPEDMC_INTERRUPT_B) 304 #define _PIPEDMC_INTERRUPT_MASK_A 0x5f194 /* lnl+ */ 305 #define _PIPEDMC_INTERRUPT_MASK_B 0x5f594 /* lnl+ */ 306 #define PIPEDMC_INTERRUPT_MASK(pipe) _MMIO_PIPE((pipe), _PIPEDMC_INTERRUPT_MASK_A, _PIPEDMC_INTERRUPT_MASK_B) 307 #define PIPEDMC_FLIPQ_PROG_DONE REG_BIT(3) 308 #define PIPEDMC_ERROR REG_BIT(2) 309 #define PIPEDMC_GTT_FAULT REG_BIT(1) 310 #define PIPEDMC_ATS_FAULT REG_BIT(0) 311 312 #define PIPEDMC_BLOCK_PKGC_SW_A 0x5f1d0 313 #define PIPEDMC_BLOCK_PKGC_SW_B 0x5F5d0 314 #define PIPEDMC_BLOCK_PKGC_SW(pipe) _MMIO_PIPE(pipe, \ 315 PIPEDMC_BLOCK_PKGC_SW_A, \ 316 PIPEDMC_BLOCK_PKGC_SW_B) 317 #define PIPEDMC_BLOCK_PKGC_SW_BLOCK_PKGC_ALWAYS BIT(31) 318 #define PIPEDMC_BLOCK_PKGC_SW_BLOCK_PKGC_UNTIL_NEXT_FRAMESTART BIT(15) 319 320 #define _ADLP_PIPEDMC_REG_MMIO_BASE_A 0x5f000 321 #define _TGL_PIPEDMC_REG_MMIO_BASE_A 0x92000 322 323 #define __PIPEDMC_REG_MMIO_BASE(i915, dmc_id) \ 324 ((DISPLAY_VER(i915) >= 13 ? _ADLP_PIPEDMC_REG_MMIO_BASE_A : \ 325 _TGL_PIPEDMC_REG_MMIO_BASE_A) + \ 326 0x400 * ((dmc_id) - 1)) 327 328 #define __DMC_REG_MMIO_BASE 0x8f000 329 330 #define _DMC_REG_MMIO_BASE(i915, dmc_id) \ 331 ((dmc_id) == DMC_FW_MAIN ? __DMC_REG_MMIO_BASE : \ 332 __PIPEDMC_REG_MMIO_BASE(i915, dmc_id)) 333 334 #define _DMC_REG(i915, dmc_id, reg) \ 335 ((reg) - __DMC_REG_MMIO_BASE + _DMC_REG_MMIO_BASE(i915, dmc_id)) 336 337 #define DMC_EVENT_HANDLER_COUNT_GEN12 8 338 339 #define _DMC_EVT_HTP_0 0x8f004 340 341 #define DMC_EVT_HTP(i915, dmc_id, handler) \ 342 _MMIO(_DMC_REG(i915, dmc_id, _DMC_EVT_HTP_0) + 4 * (handler)) 343 344 #define _DMC_EVT_CTL_0 0x8f034 345 346 #define DMC_EVT_CTL(i915, dmc_id, handler) \ 347 _MMIO(_DMC_REG(i915, dmc_id, _DMC_EVT_CTL_0) + 4 * (handler)) 348 349 #define DMC_EVT_CTL_ENABLE REG_BIT(31) 350 #define DMC_EVT_CTL_RECURRING REG_BIT(30) 351 #define DMC_EVT_CTL_TYPE_MASK REG_GENMASK(17, 16) 352 #define DMC_EVT_CTL_TYPE_LEVEL_0 0 353 #define DMC_EVT_CTL_TYPE_LEVEL_1 1 354 #define DMC_EVT_CTL_TYPE_EDGE_1_0 2 355 #define DMC_EVT_CTL_TYPE_EDGE_0_1 3 356 #define DMC_EVT_CTL_EVENT_ID_MASK REG_GENMASK(15, 8) 357 358 #define DMC_HTP_ADDR_SKL 0x00500034 359 #define DMC_SSP_BASE _MMIO(0x8F074) 360 #define DMC_HTP_SKL _MMIO(0x8F004) 361 #define DMC_LAST_WRITE _MMIO(0x8F034) 362 #define DMC_LAST_WRITE_VALUE 0xc003b400 363 #define DMC_MMIO_START_RANGE 0x80000 364 #define DMC_MMIO_END_RANGE 0x8FFFF 365 #define DMC_V1_MMIO_START_RANGE 0x80000 366 #define TGL_MAIN_MMIO_START 0x8F000 367 #define TGL_MAIN_MMIO_END 0x8FFFF 368 #define _TGL_PIPEA_MMIO_START 0x92000 369 #define _TGL_PIPEA_MMIO_END 0x93FFF 370 #define _TGL_PIPEB_MMIO_START 0x96000 371 #define _TGL_PIPEB_MMIO_END 0x97FFF 372 #define ADLP_PIPE_MMIO_START 0x5F000 373 #define ADLP_PIPE_MMIO_END 0x5FFFF 374 375 #define TGL_PIPE_MMIO_START(dmc_id) _PICK_EVEN(((dmc_id) - 1), _TGL_PIPEA_MMIO_START,\ 376 _TGL_PIPEB_MMIO_START) 377 378 #define TGL_PIPE_MMIO_END(dmc_id) _PICK_EVEN(((dmc_id) - 1), _TGL_PIPEA_MMIO_END,\ 379 _TGL_PIPEB_MMIO_END) 380 381 #define SKL_DMC_DC3_DC5_COUNT _MMIO(0x80030) 382 #define SKL_DMC_DC5_DC6_COUNT _MMIO(0x8002C) 383 #define BXT_DMC_DC3_DC5_COUNT _MMIO(0x80038) 384 #define TGL_DMC_DEBUG_DC5_COUNT _MMIO(0x101084) 385 #define TGL_DMC_DEBUG_DC6_COUNT _MMIO(0x101088) 386 #define DG1_DMC_DEBUG_DC5_COUNT _MMIO(0x134154) 387 388 #define TGL_DMC_DEBUG3 _MMIO(0x101090) 389 #define DG1_DMC_DEBUG3 _MMIO(0x13415c) 390 391 #define DMC_WAKELOCK_CFG _MMIO(0x8F1B0) 392 #define DMC_WAKELOCK_CFG_ENABLE REG_BIT(31) 393 #define DMC_WAKELOCK1_CTL _MMIO(0x8F140) 394 #define DMC_WAKELOCK_CTL_REQ REG_BIT(31) 395 #define DMC_WAKELOCK_CTL_ACK REG_BIT(15) 396 397 #endif /* __INTEL_DMC_REGS_H__ */ 398