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