1 #define NVOC_FBSR_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_fbsr_nvoc.h"
9 
10 #ifdef DEBUG
11 char __nvoc_class_id_uniqueness_check_0xa30fe6 = 1;
12 #endif
13 
14 extern const struct NVOC_CLASS_DEF __nvoc_class_def_OBJFBSR;
15 
16 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Object;
17 
18 void __nvoc_init_OBJFBSR(OBJFBSR*, RmHalspecOwner* );
19 void __nvoc_init_funcTable_OBJFBSR(OBJFBSR*, RmHalspecOwner* );
20 NV_STATUS __nvoc_ctor_OBJFBSR(OBJFBSR*, RmHalspecOwner* );
21 void __nvoc_init_dataField_OBJFBSR(OBJFBSR*, RmHalspecOwner* );
22 void __nvoc_dtor_OBJFBSR(OBJFBSR*);
23 extern const struct NVOC_EXPORT_INFO __nvoc_export_info_OBJFBSR;
24 
25 static const struct NVOC_RTTI __nvoc_rtti_OBJFBSR_OBJFBSR = {
26     /*pClassDef=*/          &__nvoc_class_def_OBJFBSR,
27     /*dtor=*/               (NVOC_DYNAMIC_DTOR) &__nvoc_dtor_OBJFBSR,
28     /*offset=*/             0,
29 };
30 
31 static const struct NVOC_RTTI __nvoc_rtti_OBJFBSR_Object = {
32     /*pClassDef=*/          &__nvoc_class_def_Object,
33     /*dtor=*/               &__nvoc_destructFromBase,
34     /*offset=*/             NV_OFFSETOF(OBJFBSR, __nvoc_base_Object),
35 };
36 
37 static const struct NVOC_CASTINFO __nvoc_castinfo_OBJFBSR = {
38     /*numRelatives=*/       2,
39     /*relatives=*/ {
40         &__nvoc_rtti_OBJFBSR_OBJFBSR,
41         &__nvoc_rtti_OBJFBSR_Object,
42     },
43 };
44 
45 const struct NVOC_CLASS_DEF __nvoc_class_def_OBJFBSR =
46 {
47     /*classInfo=*/ {
48         /*size=*/               sizeof(OBJFBSR),
49         /*classId=*/            classId(OBJFBSR),
50         /*providerId=*/         &__nvoc_rtti_provider,
51 #if NV_PRINTF_STRINGS_ALLOWED
52         /*name=*/               "OBJFBSR",
53 #endif
54     },
55     /*objCreatefn=*/        (NVOC_DYNAMIC_OBJ_CREATE) &__nvoc_objCreateDynamic_OBJFBSR,
56     /*pCastInfo=*/          &__nvoc_castinfo_OBJFBSR,
57     /*pExportInfo=*/        &__nvoc_export_info_OBJFBSR
58 };
59 
60 const struct NVOC_EXPORT_INFO __nvoc_export_info_OBJFBSR =
61 {
62     /*numEntries=*/     0,
63     /*pExportEntries=*/  0
64 };
65 
66 void __nvoc_dtor_Object(Object*);
67 void __nvoc_dtor_OBJFBSR(OBJFBSR *pThis) {
68     __nvoc_dtor_Object(&pThis->__nvoc_base_Object);
69     PORT_UNREFERENCED_VARIABLE(pThis);
70 }
71 
72 void __nvoc_init_dataField_OBJFBSR(OBJFBSR *pThis, RmHalspecOwner *pRmhalspecowner) {
73     RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
74     const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
75     ChipHal *chipHal = &pRmhalspecowner->chipHal;
76     const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
77     PORT_UNREFERENCED_VARIABLE(pThis);
78     PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
79     PORT_UNREFERENCED_VARIABLE(rmVariantHal);
80     PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
81     PORT_UNREFERENCED_VARIABLE(chipHal);
82     PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
83 }
84 
85 NV_STATUS __nvoc_ctor_Object(Object* );
86 NV_STATUS __nvoc_ctor_OBJFBSR(OBJFBSR *pThis, RmHalspecOwner *pRmhalspecowner) {
87     NV_STATUS status = NV_OK;
88     status = __nvoc_ctor_Object(&pThis->__nvoc_base_Object);
89     if (status != NV_OK) goto __nvoc_ctor_OBJFBSR_fail_Object;
90     __nvoc_init_dataField_OBJFBSR(pThis, pRmhalspecowner);
91     goto __nvoc_ctor_OBJFBSR_exit; // Success
92 
93 __nvoc_ctor_OBJFBSR_fail_Object:
94 __nvoc_ctor_OBJFBSR_exit:
95 
96     return status;
97 }
98 
99 static void __nvoc_init_funcTable_OBJFBSR_1(OBJFBSR *pThis, RmHalspecOwner *pRmhalspecowner) {
100     RmVariantHal *rmVariantHal = &pRmhalspecowner->rmVariantHal;
101     const unsigned long rmVariantHal_HalVarIdx = (unsigned long)rmVariantHal->__nvoc_HalVarIdx;
102     ChipHal *chipHal = &pRmhalspecowner->chipHal;
103     const unsigned long chipHal_HalVarIdx = (unsigned long)chipHal->__nvoc_HalVarIdx;
104     PORT_UNREFERENCED_VARIABLE(pThis);
105     PORT_UNREFERENCED_VARIABLE(pRmhalspecowner);
106     PORT_UNREFERENCED_VARIABLE(rmVariantHal);
107     PORT_UNREFERENCED_VARIABLE(rmVariantHal_HalVarIdx);
108     PORT_UNREFERENCED_VARIABLE(chipHal);
109     PORT_UNREFERENCED_VARIABLE(chipHal_HalVarIdx);
110 
111     // Hal function -- fbsrBegin
112     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */
113     {
114         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x01f0fc00UL) )) /* ChipHal: GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 */
115         {
116             pThis->__fbsrBegin__ = &fbsrBegin_GA100;
117         }
118         else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x100003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GH100 */
119         {
120             pThis->__fbsrBegin__ = &fbsrBegin_GM107;
121         }
122     }
123 
124     // Hal function -- fbsrEnd
125     if (( ((rmVariantHal_HalVarIdx >> 5) == 0UL) && ((1UL << (rmVariantHal_HalVarIdx & 0x1f)) & 0x00000002UL) )) /* RmVariantHal: PF_KERNEL_ONLY */
126     {
127         if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x01f0fc00UL) )) /* ChipHal: GA100 | GA102 | GA103 | GA104 | GA106 | GA107 | AD102 | AD103 | AD104 | AD106 | AD107 */
128         {
129             pThis->__fbsrEnd__ = &fbsrEnd_GA100;
130         }
131         else if (( ((chipHal_HalVarIdx >> 5) == 1UL) && ((1UL << (chipHal_HalVarIdx & 0x1f)) & 0x100003e0UL) )) /* ChipHal: TU102 | TU104 | TU106 | TU116 | TU117 | GH100 */
132         {
133             pThis->__fbsrEnd__ = &fbsrEnd_GM107;
134         }
135     }
136 }
137 
138 void __nvoc_init_funcTable_OBJFBSR(OBJFBSR *pThis, RmHalspecOwner *pRmhalspecowner) {
139     __nvoc_init_funcTable_OBJFBSR_1(pThis, pRmhalspecowner);
140 }
141 
142 void __nvoc_init_Object(Object*);
143 void __nvoc_init_OBJFBSR(OBJFBSR *pThis, RmHalspecOwner *pRmhalspecowner) {
144     pThis->__nvoc_pbase_OBJFBSR = pThis;
145     pThis->__nvoc_pbase_Object = &pThis->__nvoc_base_Object;
146     __nvoc_init_Object(&pThis->__nvoc_base_Object);
147     __nvoc_init_funcTable_OBJFBSR(pThis, pRmhalspecowner);
148 }
149 
150 NV_STATUS __nvoc_objCreate_OBJFBSR(OBJFBSR **ppThis, Dynamic *pParent, NvU32 createFlags) {
151     NV_STATUS status;
152     Object *pParentObj;
153     OBJFBSR *pThis;
154     RmHalspecOwner *pRmhalspecowner;
155 
156     status = __nvoc_handleObjCreateMemAlloc(createFlags, sizeof(OBJFBSR), (void**)&pThis, (void**)ppThis);
157     if (status != NV_OK)
158         return status;
159 
160     portMemSet(pThis, 0, sizeof(OBJFBSR));
161 
162     __nvoc_initRtti(staticCast(pThis, Dynamic), &__nvoc_class_def_OBJFBSR);
163 
164     pThis->__nvoc_base_Object.createFlags = createFlags;
165 
166     if (pParent != NULL && !(createFlags & NVOC_OBJ_CREATE_FLAGS_PARENT_HALSPEC_ONLY))
167     {
168         pParentObj = dynamicCast(pParent, Object);
169         objAddChild(pParentObj, &pThis->__nvoc_base_Object);
170     }
171     else
172     {
173         pThis->__nvoc_base_Object.pParent = NULL;
174     }
175 
176     if ((pRmhalspecowner = dynamicCast(pParent, RmHalspecOwner)) == NULL)
177         pRmhalspecowner = objFindAncestorOfType(RmHalspecOwner, pParent);
178     NV_ASSERT_OR_RETURN(pRmhalspecowner != NULL, NV_ERR_INVALID_ARGUMENT);
179 
180     __nvoc_init_OBJFBSR(pThis, pRmhalspecowner);
181     status = __nvoc_ctor_OBJFBSR(pThis, pRmhalspecowner);
182     if (status != NV_OK) goto __nvoc_objCreate_OBJFBSR_cleanup;
183 
184     *ppThis = pThis;
185 
186     return NV_OK;
187 
188 __nvoc_objCreate_OBJFBSR_cleanup:
189     // do not call destructors here since the constructor already called them
190     if (createFlags & NVOC_OBJ_CREATE_FLAGS_IN_PLACE_CONSTRUCT)
191         portMemSet(pThis, 0, sizeof(OBJFBSR));
192     else
193         portMemFree(pThis);
194 
195     // coverity[leaked_storage:FALSE]
196     return status;
197 }
198 
199 NV_STATUS __nvoc_objCreateDynamic_OBJFBSR(OBJFBSR **ppThis, Dynamic *pParent, NvU32 createFlags, va_list args) {
200     NV_STATUS status;
201 
202     status = __nvoc_objCreate_OBJFBSR(ppThis, pParent, createFlags);
203 
204     return status;
205 }
206 
207