xref: /linux/drivers/gpu/drm/i915/display/intel_dmc_regs.h (revision f86ad0ed620cb3c91ec7d5468e93ac68d727539d)
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