1 #define NVOC_KERN_DISP_H_PRIVATE_ACCESS_ALLOWED
2 #include "nvoc/runtime.h"
3 #include "nvoc/rtti.h"
4 #include "nvtypes.h"
5 #include "nvport/nvport.h"
6 #include "nvport/inline/util_valist.h"
7 #include "utils/nvassert.h"
8 #include "g_kern_disp_nvoc.h"
9
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0x55952e = 1;
12 #endif
13
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_KernelDisplay;
15
16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
17
18 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJENGSTATE;
19
20 extern const struct NVOC_CLASS_DEF __nvoc_class_def_IntrService;
21
22 void __nvoc_init_KernelDisplay(KernelDisplay*, RmHalspecOwner* );
23 void __nvoc_init_funcTable_KernelDisplay(KernelDisplay*, RmHalspecOwner* );
24 NV_STATUS __nvoc_ctor_KernelDisplay(KernelDisplay*, RmHalspecOwner* );
25 void __nvoc_init_dataField_KernelDisplay(KernelDisplay*, RmHalspecOwner* );
26 void __nvoc_dtor_KernelDisplay(KernelDisplay*);
27 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelDisplay;
28
29 static const struct NVOC_RTTI __nvoc_rtti_KernelDisplay_KernelDisplay = {
30 /*pClassDef=*/ &__nvoc_class_def_KernelDisplay,
31 /*dtor=*/ (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_KernelDisplay,
32 /*offset=*/ 0,
33 };
34
35 static const struct NVOC_RTTI __nvoc_rtti_KernelDisplay_Object = {
36 /*pClassDef=*/ &__nvoc_class_def_Object,
37 /*dtor=*/ &__nvoc_destructFromBase,
38 /*offset=*/ NV_OFFSETOF(KernelDisplay, __nvoc_base_OBJENGSTATE.__nvoc_base_Object),
39 };
40
41 static const struct NVOC_RTTI __nvoc_rtti_KernelDisplay_OBJENGSTATE = {
42 /*pClassDef=*/ &__nvoc_class_def_OBJENGSTATE,
43 /*dtor=*/ &__nvoc_destructFromBase,
44 /*offset=*/ NV_OFFSETOF(KernelDisplay, __nvoc_base_OBJENGSTATE),
45 };
46
47 static const struct NVOC_RTTI __nvoc_rtti_KernelDisplay_IntrService = {
48 /*pClassDef=*/ &__nvoc_class_def_IntrService,
49 /*dtor=*/ &__nvoc_destructFromBase,
50 /*offset=*/ NV_OFFSETOF(KernelDisplay, __nvoc_base_IntrService),
51 };
52
53 static const struct NVOC_CASTINFO __nvoc_castinfo_KernelDisplay = {
54 /*numRelatives=*/ 4,
55 /*relatives=*/ {
56 &__nvoc_rtti_KernelDisplay_KernelDisplay,
57 &__nvoc_rtti_KernelDisplay_IntrService,
58 &__nvoc_rtti_KernelDisplay_OBJENGSTATE,
59 &__nvoc_rtti_KernelDisplay_Object,
60 },
61 };
62
63 const struct NVOC_CLASS_DEF __nvoc_class_def_KernelDisplay =
64 {
65 /*classInfo=*/ {
66 /*size=*/ sizeof(KernelDisplay),
67 /*classId=*/ classId(KernelDisplay),
68 /*providerId=*/ &__nvoc_rtti_provider,
69 #if NV_PRINTF_STRINGS_ALLOWED
70 /*name=*/ "KernelDisplay",
71 #endif
72 },
73 /*objCreatefn=*/ (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_KernelDisplay,
74 /*pCastInfo=*/ &__nvoc_castinfo_KernelDisplay,
75 /*pExportInfo=*/ &__nvoc_export_info_KernelDisplay
76 };
77
__nvoc_thunk_KernelDisplay_engstateConstructEngine(OBJGPU * pGpu,struct OBJENGSTATE * pKernelDisplay,ENGDESCRIPTOR engDesc)78 static NV_STATUS __nvoc_thunk_KernelDisplay_engstateConstructEngine(OBJGPU *pGpu, struct OBJENGSTATE *pKernelDisplay, ENGDESCRIPTOR engDesc) {
79 return kdispConstructEngine(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), engDesc);
80 }
81
__nvoc_thunk_KernelDisplay_engstateStatePreInitLocked(OBJGPU * pGpu,struct OBJENGSTATE * pKernelDisplay)82 static NV_STATUS __nvoc_thunk_KernelDisplay_engstateStatePreInitLocked(OBJGPU *pGpu, struct OBJENGSTATE *pKernelDisplay) {
83 return kdispStatePreInitLocked(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
84 }
85
__nvoc_thunk_KernelDisplay_engstateStateInitLocked(OBJGPU * pGpu,struct OBJENGSTATE * pKernelDisplay)86 static NV_STATUS __nvoc_thunk_KernelDisplay_engstateStateInitLocked(OBJGPU *pGpu, struct OBJENGSTATE *pKernelDisplay) {
87 return kdispStateInitLocked(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
88 }
89
__nvoc_thunk_KernelDisplay_engstateStateDestroy(OBJGPU * pGpu,struct OBJENGSTATE * pKernelDisplay)90 static void __nvoc_thunk_KernelDisplay_engstateStateDestroy(OBJGPU *pGpu, struct OBJENGSTATE *pKernelDisplay) {
91 kdispStateDestroy(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
92 }
93
__nvoc_thunk_KernelDisplay_engstateStateLoad(OBJGPU * pGpu,struct OBJENGSTATE * pKernelDisplay,NvU32 flags)94 static NV_STATUS __nvoc_thunk_KernelDisplay_engstateStateLoad(OBJGPU *pGpu, struct OBJENGSTATE *pKernelDisplay, NvU32 flags) {
95 return kdispStateLoad(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), flags);
96 }
97
__nvoc_thunk_KernelDisplay_engstateStateUnload(OBJGPU * pGpu,struct OBJENGSTATE * pKernelDisplay,NvU32 flags)98 static NV_STATUS __nvoc_thunk_KernelDisplay_engstateStateUnload(OBJGPU *pGpu, struct OBJENGSTATE *pKernelDisplay, NvU32 flags) {
99 return kdispStateUnload(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), flags);
100 }
101
__nvoc_thunk_KernelDisplay_intrservRegisterIntrService(OBJGPU * pGpu,struct IntrService * pKernelDisplay,IntrServiceRecord pRecords[171])102 static void __nvoc_thunk_KernelDisplay_intrservRegisterIntrService(OBJGPU *pGpu, struct IntrService *pKernelDisplay, IntrServiceRecord pRecords[171]) {
103 kdispRegisterIntrService(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_IntrService.offset), pRecords);
104 }
105
__nvoc_thunk_KernelDisplay_intrservServiceInterrupt(OBJGPU * pGpu,struct IntrService * pKernelDisplay,IntrServiceServiceInterruptArguments * pParams)106 static NvU32 __nvoc_thunk_KernelDisplay_intrservServiceInterrupt(OBJGPU *pGpu, struct IntrService *pKernelDisplay, IntrServiceServiceInterruptArguments *pParams) {
107 return kdispServiceInterrupt(pGpu, (struct KernelDisplay *)(((unsigned char *)pKernelDisplay) - __nvoc_rtti_KernelDisplay_IntrService.offset), pParams);
108 }
109
__nvoc_thunk_IntrService_kdispServiceNotificationInterrupt(OBJGPU * pGpu,struct KernelDisplay * pIntrService,IntrServiceServiceNotificationInterruptArguments * pParams)110 static NV_STATUS __nvoc_thunk_IntrService_kdispServiceNotificationInterrupt(OBJGPU *pGpu, struct KernelDisplay *pIntrService, IntrServiceServiceNotificationInterruptArguments *pParams) {
111 return intrservServiceNotificationInterrupt(pGpu, (struct IntrService *)(((unsigned char *)pIntrService) + __nvoc_rtti_KernelDisplay_IntrService.offset), pParams);
112 }
113
__nvoc_thunk_OBJENGSTATE_kdispStatePreLoad(POBJGPU pGpu,struct KernelDisplay * pEngstate,NvU32 arg0)114 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kdispStatePreLoad(POBJGPU pGpu, struct KernelDisplay *pEngstate, NvU32 arg0) {
115 return engstateStatePreLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), arg0);
116 }
117
__nvoc_thunk_OBJENGSTATE_kdispStatePostUnload(POBJGPU pGpu,struct KernelDisplay * pEngstate,NvU32 arg0)118 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kdispStatePostUnload(POBJGPU pGpu, struct KernelDisplay *pEngstate, NvU32 arg0) {
119 return engstateStatePostUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), arg0);
120 }
121
__nvoc_thunk_OBJENGSTATE_kdispStatePreUnload(POBJGPU pGpu,struct KernelDisplay * pEngstate,NvU32 arg0)122 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kdispStatePreUnload(POBJGPU pGpu, struct KernelDisplay *pEngstate, NvU32 arg0) {
123 return engstateStatePreUnload(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), arg0);
124 }
125
__nvoc_thunk_OBJENGSTATE_kdispStateInitUnlocked(POBJGPU pGpu,struct KernelDisplay * pEngstate)126 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kdispStateInitUnlocked(POBJGPU pGpu, struct KernelDisplay *pEngstate) {
127 return engstateStateInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
128 }
129
__nvoc_thunk_OBJENGSTATE_kdispInitMissing(POBJGPU pGpu,struct KernelDisplay * pEngstate)130 static void __nvoc_thunk_OBJENGSTATE_kdispInitMissing(POBJGPU pGpu, struct KernelDisplay *pEngstate) {
131 engstateInitMissing(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
132 }
133
__nvoc_thunk_OBJENGSTATE_kdispStatePreInitUnlocked(POBJGPU pGpu,struct KernelDisplay * pEngstate)134 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kdispStatePreInitUnlocked(POBJGPU pGpu, struct KernelDisplay *pEngstate) {
135 return engstateStatePreInitUnlocked(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
136 }
137
__nvoc_thunk_IntrService_kdispClearInterrupt(OBJGPU * pGpu,struct KernelDisplay * pIntrService,IntrServiceClearInterruptArguments * pParams)138 static NvBool __nvoc_thunk_IntrService_kdispClearInterrupt(OBJGPU *pGpu, struct KernelDisplay *pIntrService, IntrServiceClearInterruptArguments *pParams) {
139 return intrservClearInterrupt(pGpu, (struct IntrService *)(((unsigned char *)pIntrService) + __nvoc_rtti_KernelDisplay_IntrService.offset), pParams);
140 }
141
__nvoc_thunk_OBJENGSTATE_kdispStatePostLoad(POBJGPU pGpu,struct KernelDisplay * pEngstate,NvU32 arg0)142 static NV_STATUS __nvoc_thunk_OBJENGSTATE_kdispStatePostLoad(POBJGPU pGpu, struct KernelDisplay *pEngstate, NvU32 arg0) {
143 return engstateStatePostLoad(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset), arg0);
144 }
145
__nvoc_thunk_OBJENGSTATE_kdispIsPresent(POBJGPU pGpu,struct KernelDisplay * pEngstate)146 static NvBool __nvoc_thunk_OBJENGSTATE_kdispIsPresent(POBJGPU pGpu, struct KernelDisplay *pEngstate) {
147 return engstateIsPresent(pGpu, (struct OBJENGSTATE *)(((unsigned char *)pEngstate) + __nvoc_rtti_KernelDisplay_OBJENGSTATE.offset));
148 }
149
150 const struct NVOC_EXPORT_INFO __nvoc_export_info_KernelDisplay =
151 {
152 /*numEntries=*/ 0,
153 /*pExportEntries=*/ 0
154 };
155
156 void __nvoc_dtor_OBJENGSTATE(OBJENGSTATE*);
157 void __nvoc_dtor_IntrService(IntrService*);
__nvoc_dtor_KernelDisplay(KernelDisplay * pThis)158 void __nvoc_dtor_KernelDisplay(KernelDisplay *pThis) {
159 __nvoc_kdispDestruct(pThis);
160 __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
161 __nvoc_dtor_IntrService(&pThis->__nvoc_base_IntrService);
162 PORT_UNREFERENCED_VARIABLE(pThis);
163 }
164
__nvoc_init_dataField_KernelDisplay(KernelDisplay * pThis,RmHalspecOwner * pRmhalspecowner)165 void __nvoc_init_dataField_KernelDisplay(KernelDisplay *pThis, RmHalspecOwner *pRmhalspecowner) {
166 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
167 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
168 ChipHal *chipHal = &pRmhalspecowner->chipHal;
169 const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
170 DispIpHal *dispIpHal = &pRmhalspecowner->dispIpHal;
171 const unsigned long dispIpHal_HalVarIdx = (unsigned long)dispIpHal->__nvoc_HalVarIdx;
172 PORT_UNREFERENCED_VARIABLE(pThis);
173 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
174 PORT_UNREFERENCED_VARIABLE(rmVariantHal);
175 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
176 PORT_UNREFERENCED_VARIABLE(chipHal);
177 PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
178 PORT_UNREFERENCED_VARIABLE(dispIpHal);
179 PORT_UNREFERENCED_VARIABLE(dispIpHal_HalVarIdx);
180
181 // NVOC Property Hal field -- PDB_PROP_KDISP_IS_MISSING
182 if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000001UL) )) /* RmVariantHal: VF */
183 {
184 pThis->setProperty(pThis, PDB_PROP_KDISP_IS_MISSING, ((NvBool)(0 == 0)));
185 }
186 else if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */
187 {
188 pThis->setProperty(pThis, PDB_PROP_KDISP_IS_MISSING, ((NvBool)(0 != 0)));
189 }
190
191 // NVOC Property Hal field -- PDB_PROP_KDISP_IMP_ENABLE
192 if (((( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x11f0ffe0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 */ && (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000003UL) )) /* RmVariantHal: VF | PF_KERNEL_ONLY */ ))
193 {
194 pThis->setProperty(pThis, PDB_PROP_KDISP_IMP_ENABLE, ((NvBool)(0 == 0)));
195 }
196
197 // NVOC Property Hal field -- PDB_PROP_KDISP_BUG_2089053_SERIALIZE_AGGRESSIVE_VBLANK_ALWAYS
198 if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x11f0ffe0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 | GH100 */
199 {
200 pThis->setProperty(pThis, PDB_PROP_KDISP_BUG_2089053_SERIALIZE_AGGRESSIVE_VBLANK_ALWAYS, ((NvBool)(0 == 0)));
201 }
202
203 pThis->pStaticInfo = ((void *)0);
204
205 pThis->bWarPurgeSatellitesOnCoreFree = ((NvBool)(0 != 0));
206
207 pThis->bExtdevIntrSupported = ((NvBool)(0 != 0));
208 }
209
210 NV_STATUS __nvoc_ctor_OBJENGSTATE(OBJENGSTATE* );
211 NV_STATUS __nvoc_ctor_IntrService(IntrService* );
__nvoc_ctor_KernelDisplay(KernelDisplay * pThis,RmHalspecOwner * pRmhalspecowner)212 NV_STATUS __nvoc_ctor_KernelDisplay(KernelDisplay *pThis, RmHalspecOwner *pRmhalspecowner) {
213 NV_STATUS status = NV_OK;
214 status = __nvoc_ctor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
215 if (status != NV_OK) goto __nvoc_ctor_KernelDisplay_fail_OBJENGSTATE;
216 status = __nvoc_ctor_IntrService(&pThis->__nvoc_base_IntrService);
217 if (status != NV_OK) goto __nvoc_ctor_KernelDisplay_fail_IntrService;
218 __nvoc_init_dataField_KernelDisplay(pThis, pRmhalspecowner);
219 goto __nvoc_ctor_KernelDisplay_exit; // Success
220
221 __nvoc_ctor_KernelDisplay_fail_IntrService:
222 __nvoc_dtor_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
223 __nvoc_ctor_KernelDisplay_fail_OBJENGSTATE:
224 __nvoc_ctor_KernelDisplay_exit:
225
226 return status;
227 }
228
__nvoc_init_funcTable_KernelDisplay_1(KernelDisplay * pThis,RmHalspecOwner * pRmhalspecowner)229 static void __nvoc_init_funcTable_KernelDisplay_1(KernelDisplay *pThis, RmHalspecOwner *pRmhalspecowner) {
230 RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
231 const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
232 ChipHal *chipHal = &pRmhalspecowner->chipHal;
233 const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
234 DispIpHal *dispIpHal = &pRmhalspecowner->dispIpHal;
235 const unsigned long dispIpHal_HalVarIdx = (unsigned long)dispIpHal->__nvoc_HalVarIdx;
236 PORT_UNREFERENCED_VARIABLE(pThis);
237 PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
238 PORT_UNREFERENCED_VARIABLE(rmVariantHal);
239 PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
240 PORT_UNREFERENCED_VARIABLE(chipHal);
241 PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
242 PORT_UNREFERENCED_VARIABLE(dispIpHal);
243 PORT_UNREFERENCED_VARIABLE(dispIpHal_HalVarIdx);
244
245 pThis->__kdispConstructEngine__ = &kdispConstructEngine_IMPL;
246
247 pThis->__kdispStatePreInitLocked__ = &kdispStatePreInitLocked_IMPL;
248
249 pThis->__kdispStateInitLocked__ = &kdispStateInitLocked_IMPL;
250
251 pThis->__kdispStateDestroy__ = &kdispStateDestroy_IMPL;
252
253 pThis->__kdispStateLoad__ = &kdispStateLoad_IMPL;
254
255 pThis->__kdispStateUnload__ = &kdispStateUnload_IMPL;
256
257 pThis->__kdispRegisterIntrService__ = &kdispRegisterIntrService_IMPL;
258
259 // Hal function -- kdispServiceInterrupt
260 pThis->__kdispServiceInterrupt__ = &kdispServiceInterrupt_acff5e;
261
262 // Hal function -- kdispSelectClass
263 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */
264 {
265 pThis->__kdispSelectClass__ = &kdispSelectClass_46f6a7;
266 }
267 else
268 {
269 pThis->__kdispSelectClass__ = &kdispSelectClass_v03_00_KERNEL;
270 }
271
272 // Hal function -- kdispGetChannelNum
273 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */
274 {
275 pThis->__kdispGetChannelNum__ = &kdispGetChannelNum_46f6a7;
276 }
277 else
278 {
279 pThis->__kdispGetChannelNum__ = &kdispGetChannelNum_v03_00;
280 }
281
282 // Hal function -- kdispGetDisplayCapsBaseAndSize
283 if (((( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000400UL) )) /* ChipHal: GA100 | GH100 */ && (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */ ))
284 {
285 pThis->__kdispGetDisplayCapsBaseAndSize__ = &kdispGetDisplayCapsBaseAndSize_b3696a;
286 }
287 else
288 {
289 pThis->__kdispGetDisplayCapsBaseAndSize__ = &kdispGetDisplayCapsBaseAndSize_v03_00;
290 }
291
292 // Hal function -- kdispGetDisplaySfUserBaseAndSize
293 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */
294 {
295 pThis->__kdispGetDisplaySfUserBaseAndSize__ = &kdispGetDisplaySfUserBaseAndSize_b3696a;
296 }
297 else
298 {
299 pThis->__kdispGetDisplaySfUserBaseAndSize__ = &kdispGetDisplaySfUserBaseAndSize_v03_00;
300 }
301
302 // Hal function -- kdispGetDisplayChannelUserBaseAndSize
303 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */
304 {
305 pThis->__kdispGetDisplayChannelUserBaseAndSize__ = &kdispGetDisplayChannelUserBaseAndSize_46f6a7;
306 }
307 else
308 {
309 pThis->__kdispGetDisplayChannelUserBaseAndSize__ = &kdispGetDisplayChannelUserBaseAndSize_v03_00;
310 }
311
312 // Hal function -- kdispGetVgaWorkspaceBase
313 if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000400UL) )) /* ChipHal: GA100 | GH100 */
314 {
315 pThis->__kdispGetVgaWorkspaceBase__ = &kdispGetVgaWorkspaceBase_491d52;
316 }
317 else
318 {
319 pThis->__kdispGetVgaWorkspaceBase__ = &kdispGetVgaWorkspaceBase_v04_00;
320 }
321
322 // Hal function -- kdispReadRgLineCountAndFrameCount
323 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00004c00UL) )) /* DispIpHal: DISPv0400 | DISPv0401 | DISPv0404 */
324 {
325 pThis->__kdispReadRgLineCountAndFrameCount__ = &kdispReadRgLineCountAndFrameCount_v03_00_KERNEL;
326 }
327 // default
328 else
329 {
330 pThis->__kdispReadRgLineCountAndFrameCount__ = &kdispReadRgLineCountAndFrameCount_46f6a7;
331 }
332
333 // Hal function -- kdispRestoreOriginalLsrMinTime
334 if (((( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000400UL) )) /* ChipHal: GA100 | GH100 */ && (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */ ))
335 {
336 pThis->__kdispRestoreOriginalLsrMinTime__ = &kdispRestoreOriginalLsrMinTime_b3696a;
337 }
338 else
339 {
340 pThis->__kdispRestoreOriginalLsrMinTime__ = &kdispRestoreOriginalLsrMinTime_v03_00;
341 }
342
343 // Hal function -- kdispComputeLsrMinTimeValue
344 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */
345 {
346 pThis->__kdispComputeLsrMinTimeValue__ = &kdispComputeLsrMinTimeValue_56cd7a;
347 }
348 else
349 {
350 pThis->__kdispComputeLsrMinTimeValue__ = &kdispComputeLsrMinTimeValue_v02_07;
351 }
352
353 // Hal function -- kdispSetSwapBarrierLsrMinTime
354 if (((( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000400UL) )) /* ChipHal: GA100 | GH100 */ && (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */ ))
355 {
356 pThis->__kdispSetSwapBarrierLsrMinTime__ = &kdispSetSwapBarrierLsrMinTime_b3696a;
357 }
358 else
359 {
360 pThis->__kdispSetSwapBarrierLsrMinTime__ = &kdispSetSwapBarrierLsrMinTime_v03_00;
361 }
362
363 // Hal function -- kdispGetRgScanLock
364 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00004c00UL) )) /* DispIpHal: DISPv0400 | DISPv0401 | DISPv0404 */
365 {
366 pThis->__kdispGetRgScanLock__ = &kdispGetRgScanLock_v02_01;
367 }
368 // default
369 else
370 {
371 pThis->__kdispGetRgScanLock__ = &kdispGetRgScanLock_92bfc3;
372 }
373
374 // Hal function -- kdispDetectSliLink
375 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00004c00UL) )) /* DispIpHal: DISPv0400 | DISPv0401 | DISPv0404 */
376 {
377 pThis->__kdispDetectSliLink__ = &kdispDetectSliLink_v04_00;
378 }
379 // default
380 else
381 {
382 pThis->__kdispDetectSliLink__ = &kdispDetectSliLink_92bfc3;
383 }
384
385 // Hal function -- kdispInitRegistryOverrides
386 if (((( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x10000400UL) )) /* ChipHal: GA100 | GH100 */ && (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00020000UL) )) /* DispIpHal: DISPv0000 */ ))
387 {
388 pThis->__kdispInitRegistryOverrides__ = &kdispInitRegistryOverrides_b3696a;
389 }
390 // default
391 else
392 {
393 pThis->__kdispInitRegistryOverrides__ = &kdispInitRegistryOverrides_IMPL;
394 }
395
396 // Hal function -- kdispGetPBTargetAperture
397 if (( ((dispIpHal_HalVarIdx >> 5) == 0UL) && ((1UL << (dispIpHal_HalVarIdx & 0x1f)) & 0x00004c00UL) )) /* DispIpHal: DISPv0400 | DISPv0401 | DISPv0404 */
398 {
399 pThis->__kdispGetPBTargetAperture__ = &kdispGetPBTargetAperture_v03_00;
400 }
401 // default
402 else
403 {
404 pThis->__kdispGetPBTargetAperture__ = &kdispGetPBTargetAperture_15a734;
405 }
406
407 pThis->__nvoc_base_OBJENGSTATE.__engstateConstructEngine__ = &__nvoc_thunk_KernelDisplay_engstateConstructEngine;
408
409 pThis->__nvoc_base_OBJENGSTATE.__engstateStatePreInitLocked__ = &__nvoc_thunk_KernelDisplay_engstateStatePreInitLocked;
410
411 pThis->__nvoc_base_OBJENGSTATE.__engstateStateInitLocked__ = &__nvoc_thunk_KernelDisplay_engstateStateInitLocked;
412
413 pThis->__nvoc_base_OBJENGSTATE.__engstateStateDestroy__ = &__nvoc_thunk_KernelDisplay_engstateStateDestroy;
414
415 pThis->__nvoc_base_OBJENGSTATE.__engstateStateLoad__ = &__nvoc_thunk_KernelDisplay_engstateStateLoad;
416
417 pThis->__nvoc_base_OBJENGSTATE.__engstateStateUnload__ = &__nvoc_thunk_KernelDisplay_engstateStateUnload;
418
419 pThis->__nvoc_base_IntrService.__intrservRegisterIntrService__ = &__nvoc_thunk_KernelDisplay_intrservRegisterIntrService;
420
421 pThis->__nvoc_base_IntrService.__intrservServiceInterrupt__ = &__nvoc_thunk_KernelDisplay_intrservServiceInterrupt;
422
423 pThis->__kdispServiceNotificationInterrupt__ = &__nvoc_thunk_IntrService_kdispServiceNotificationInterrupt;
424
425 pThis->__kdispStatePreLoad__ = &__nvoc_thunk_OBJENGSTATE_kdispStatePreLoad;
426
427 pThis->__kdispStatePostUnload__ = &__nvoc_thunk_OBJENGSTATE_kdispStatePostUnload;
428
429 pThis->__kdispStatePreUnload__ = &__nvoc_thunk_OBJENGSTATE_kdispStatePreUnload;
430
431 pThis->__kdispStateInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kdispStateInitUnlocked;
432
433 pThis->__kdispInitMissing__ = &__nvoc_thunk_OBJENGSTATE_kdispInitMissing;
434
435 pThis->__kdispStatePreInitUnlocked__ = &__nvoc_thunk_OBJENGSTATE_kdispStatePreInitUnlocked;
436
437 pThis->__kdispClearInterrupt__ = &__nvoc_thunk_IntrService_kdispClearInterrupt;
438
439 pThis->__kdispStatePostLoad__ = &__nvoc_thunk_OBJENGSTATE_kdispStatePostLoad;
440
441 pThis->__kdispIsPresent__ = &__nvoc_thunk_OBJENGSTATE_kdispIsPresent;
442 }
443
__nvoc_init_funcTable_KernelDisplay(KernelDisplay * pThis,RmHalspecOwner * pRmhalspecowner)444 void __nvoc_init_funcTable_KernelDisplay(KernelDisplay *pThis, RmHalspecOwner *pRmhalspecowner) {
445 __nvoc_init_funcTable_KernelDisplay_1(pThis, pRmhalspecowner);
446 }
447
448 void __nvoc_init_OBJENGSTATE(OBJENGSTATE*);
449 void __nvoc_init_IntrService(IntrService*);
__nvoc_init_KernelDisplay(KernelDisplay * pThis,RmHalspecOwner * pRmhalspecowner)450 void __nvoc_init_KernelDisplay(KernelDisplay *pThis, RmHalspecOwner *pRmhalspecowner) {
451 pThis->__nvoc_pbase_KernelDisplay = pThis;
452 pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object;
453 pThis->__nvoc_pbase_OBJENGSTATE = &pThis->__nvoc_base_OBJENGSTATE;
454 pThis->__nvoc_pbase_IntrService = &pThis->__nvoc_base_IntrService;
455 __nvoc_init_OBJENGSTATE(&pThis->__nvoc_base_OBJENGSTATE);
456 __nvoc_init_IntrService(&pThis->__nvoc_base_IntrService);
457 __nvoc_init_funcTable_KernelDisplay(pThis, pRmhalspecowner);
458 }
459
__nvoc_objCreate_KernelDisplay(KernelDisplay ** ppThis,Dynamic * pParent,NvU32 createFlags)460 NV_STATUS __nvoc_objCreate_KernelDisplay(KernelDisplay **ppThis, Dynamic *pParent, NvU32 createFlags)
461 {
462 NV_STATUS status;
463 Object *pParentObj = NULL;
464 KernelDisplay *pThis;
465 RmHalspecOwner *pRmhalspecowner;
466
467 // Assign `pThis`, allocating memory unless suppressed by flag.
468 status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(KernelDisplay), (void**)&pThis, (void**)ppThis);
469 if (status != NV_OK)
470 return status;
471
472 // Zero is the initial value for everything.
473 portMemSet(pThis, 0, sizeof(KernelDisplay));
474
475 // Initialize runtime type information.
476 __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_KernelDisplay);
477
478 pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.createFlags = createFlags;
479
480 // pParent must be a valid object that derives from a halspec owner class.
481 NV_ASSERT_OR_RETURN(pParent != NULL, NV_ERR_INVALID_ARGUMENT);
482
483 // Link the child into the parent unless flagged not to do so.
484 if (!(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
485 {
486 pParentObj = dynamicCast(pParent, Object);
487 objAddChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
488 }
489 else
490 {
491 pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object.pParent = NULL;
492 }
493
494 if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL)
495 pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent);
496 NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT);
497
498 __nvoc_init_KernelDisplay(pThis, pRmhalspecowner);
499 status = __nvoc_ctor_KernelDisplay(pThis, pRmhalspecowner);
500 if (status != NV_OK) goto __nvoc_objCreate_KernelDisplay_cleanup;
501
502 // Assignment has no effect if NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT is set.
503 *ppThis = pThis;
504
505 return NV_OK;
506
507 __nvoc_objCreate_KernelDisplay_cleanup:
508
509 // Unlink the child from the parent if it was linked above.
510 if (pParentObj != NULL)
511 objRemoveChild(pParentObj, &pThis->__nvoc_base_OBJENGSTATE.__nvoc_base_Object);
512
513 // Do not call destructors here since the constructor already called them.
514 if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
515 portMemSet(pThis, 0, sizeof(KernelDisplay));
516 else
517 {
518 portMemFree(pThis);
519 *ppThis = NULL;
520 }
521
522 // coverity[leaked_storage:FALSE]
523 return status;
524 }
525
__nvoc_objCreateDynamic_KernelDisplay(KernelDisplay ** ppThis,Dynamic * pParent,NvU32 createFlags,va_list args)526 NV_STATUS __nvoc_objCreateDynamic_KernelDisplay(KernelDisplay **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
527 NV_STATUS status;
528
529 status = __nvoc_objCreate_KernelDisplay(ppThis, pParent, createFlags);
530
531 return status;
532 }
533
534