From 00e54c13c7c9030c4d5f7151467f2d85a3730e29 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Sun, 13 Sep 2026 18:36:21 -0400 Subject: Initial commit: Open-IOV vGPU-IO complete stack - Firmware decompilation: GSP 570.144W (28.5MB ELF, RV64IMAC), 132 decompiled C files - Kernel modules: nvidia.ko (34MB, OpenRM), open-iov-vfio.ko (2.8MB, VFIO mdev), gsp-vgpu.ko (1.8MB, guest driver) - Userspace: libiov.so/libvgpu.so (76KB), example_vgpu (28KB), rpc_emulator.c - PCI config space emulation (256B with PM, MSI, MSI-X, PCIe caps) - 12 RPC types fully mapped from firmware decompilation - BAR trap, WPR, scheduling, notification, migration emulation - Helper scripts: load_vgpu_stack, create_mdev, launch_qemu_vgpu, test_vgpu_stack, setup_guest_driver, unload_vgpu_stack - Architecture documentation - Wiki: 10 technical documents - Git LFS for large binaries (.ko, .bin, .iso, .img, .o, ghidra repos) - nvidia-open-gpu-kernel-modules as submodule --- .../nv570/inc/ctrl/ctrl2080/ctrl2080boardobj.h | 1280 ++++++++++++++++++++ 1 file changed, 1280 insertions(+) create mode 100644 userspace/sdks/nv570/inc/ctrl/ctrl2080/ctrl2080boardobj.h (limited to 'userspace/sdks/nv570/inc/ctrl/ctrl2080/ctrl2080boardobj.h') diff --git a/userspace/sdks/nv570/inc/ctrl/ctrl2080/ctrl2080boardobj.h b/userspace/sdks/nv570/inc/ctrl/ctrl2080/ctrl2080boardobj.h new file mode 100644 index 0000000..43912a6 --- /dev/null +++ b/userspace/sdks/nv570/inc/ctrl/ctrl2080/ctrl2080boardobj.h @@ -0,0 +1,1280 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2013-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#pragma once + +#include + +// +// This file was generated with FINN, an NVIDIA coding tool. +// Source file: ctrl/ctrl2080/ctrl2080boardobj.finn +// + + + +#include "ctrl/ctrl2080/ctrl2080base.h" +#include "ctrl/ctrl2080/ctrl2080boardobjgrpclasses.h" + +/*! + * @brief NV20_SUBDEVICE_XX BOARDOBJ-related control commands and parameters. + * + * Base structures in RMCTRL equivalent to BOARDOBJ/BOARDOBJGRP in RM. NV2080 + * structs in this file carry info w.r.t BOARDOBJ/BOARDOBJGRP. + */ + +/*! + * @brief Type for representing an index of a BOARDOBJ within a + * BOARDOBJGRP. This type can also represent the number of elements + * within a BOARDOBJGRP or the number of bits in a BOARDOBJGRPMASK. + */ +typedef NvU16 NvBoardObjIdx; + +/*! + * @brief Type for representing an index into a mask element within a + * BOARDOBJGRPMASK to a @ref NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE. + */ +typedef NvU16 NvBoardObjMaskIdx; + +/*! + * @brief Primitive type which a BOARDOBJGRPMASK is composed of. + * + * For example, a 32 bit mask will have one of these elements and a 256 bit + * mask will have eight. + */ +typedef NvU32 NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE; + +/*! + * @brief Min value a single BOARDOBJGRPMASK element can hold. + * + * @note Must be kept in sync with @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_ELEMENT_MIN NV_U32_MIN + +/*! + * @brief Max value a single BOARDOBJGRPMASK element can hold. + * + * @note Must be kept in sync with @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_ELEMENT_MAX NV_U32_MAX + +/*! + * @brief Number of bits in a the NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE type. + * + * This exists to eliminate the assumption that 32-bits is the width of + * NV2080_CTRL_BOARDOBJGRP_MASK primitive element. + * + * @note Left shift by 3 (multiply by 8) converts the sizeof in bytes to the + * number of bits in our primitive/essential mask type. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_BIT_SIZE 32 + +/*! + * @brief Value for an invalid Board Object index. + * + * This value should only be used directly for input to and output + * from BOARDOBJ and BOARDOBJGRP code. + * + * @note This define should not be referenced directly in any + * implementing object code. Instead, each object should define it's + * own IDX_INVALID macro and alias it to whatever size fits their + * specific index storage type. + * For example, many objects still store indexes as NvU8 (because the + * GRPs are either _E32 or _E255) while others store as NvBoardObjIdx + * (currently aliased to NvU16), so they should alias to a correct + * type. + */ +#define NV2080_CTRL_BOARDOBJ_IDX_INVALID NV_U16_MAX + +/*! + * @brief Value for an invalid Board Object index. + * + * This value encodes an invalid/unsupported BOARDOBJ index for an + * 8-bit value. This should be used within by any legacy appcode + * implementing BOARDOBJGRP which stores/encodes indexes as 8-bit + * values. + * + * All new groups should use @ref NV2080_CTRL_BOARDOBJ_IDX_INVALID. + * + * @note This define should not be referenced directly in any + * implementing object code. Instead, each object should define it's + * own IDX_INVALID macro and alias it to whatever size fits their + * specific index storage type. + * For example, many objects still store indexes as NvU8 (because the + * GRPs are either _E32 or _E255) while others store as NvU16 (for + * GRPs larger than _E255), so they should alias to a correct type. + */ +#define NV2080_CTRL_BOARDOBJ_IDX_INVALID_8BIT NV_U8_MAX + +/*! + * @brief Computes the array index of a NV2080_CTRL_BOARDOBJGRP_MASK element + * storing requested bit. + * + * @note Designed to be used in conjunction with @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET. + * + * @param[in] _bit Index of a bit within a bit mask. + * + * @return Array index of mask element containing @ref _bit. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(_bit) \ + ((_bit) / NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_BIT_SIZE) + +/*! + * @brief Computes bit-position within NV2080_CTRL_BOARDOBJGRP_MASK element + * corresponding to requested bit. + * + * @note Designed to be used in conjunction with @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX. + * + * @param[in] _bit Index of a bit within a bit mask. + * + * @return Offset (in bits) within a mask element for @ref _bit. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(_bit) \ + ((_bit) % NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_BIT_SIZE) + +/*! + * @brief Computes the size of an array of NV2080_CTRL_BOARDOBJGRP_MASK + * elements that can store all mask's bits. + * + * @param[in] _bits Size of the mask in bits. + * + * @return Number of array elements needed to store @ref _bits number of bits. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_DATA_SIZE(_bits) \ + (NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX((_bits) - 1U) + 1U) + + +/*! + * @brief Number of elements that are in the NV2080_CTRL_BOARDOBJGRP_MASK base + * class. + * + * @note "START_SIZE" is used here to represent the size of the mask that + * derived classes must build up from. See @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_E32, @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_E255, @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_E512, @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_E1024, @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_E2048, @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_E8192. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_ARRAY_START_SIZE 1U + +/*! + * @brief Macro used to determine the number of NV2080_CTRL_BOARDOBJGRP_MASK + * elements required to extend the base number of elements in a mask, + * @ref NV2080_CTRL_BOARDOBJGRP_MASK_ARRAY_START_SIZE. + * + * @note Used in order to avoid dynamic memory allocation and related + * code/data waste as well as two levels of indirection while accessing + * the data bits stored in an array of @ref + * NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_BIT_SIZE sized words. The + * NV2080_CTRL_BOARDOBJGRP_MASK super-class array's size should be + * zero and actual data should be completely stored in child's array. + * Since most compilers reject structures with zero-sized arrays first + * element word was moved to the super-class and remaining array + * elements to child class. + * + * @param[in] _bits Total number of bits to be represented in the + * NV2080_CTRL_BOARDOBJGRP_MASK extending mask class. + * + * @return Number of additional mask elements that must be allocated in order + * to extend the NV2080_CTRL_BOARDOBJGRP_MASK base class. + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_ARRAY_EXTENSION_SIZE(_bits) \ + (NV2080_CTRL_BOARDOBJGRP_MASK_DATA_SIZE(_bits) - \ + (NV2080_CTRL_BOARDOBJGRP_MASK_ARRAY_START_SIZE)) + +/*! + * @deprecated DO NOT USE! Use a sub-class specific + * NV2080_CTRL_BOARDOBJGRP_MASK_E*_BIT_GET variant + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_BIT_GET__DEPRECATED_DO_NOT_USE(_pMask, _bitIdx) \ + (((_pMask)->pData[NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_INDEX(_bitIdx)]\ + & NVBIT_TYPE(NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_OFFSET(_bitIdx), \ + NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE)) != 0U) + +/*! + * @deprecated DO NOT USE!: Use a sub-class specific + * @ref NV2080_CTRL_BOARDOBJGRP_MASK_E*_FOR_EACH_INDEX_TYPED + * variant + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_FOR_EACH_INDEX__DEPRECATED_DO_NOT_USE(_maxObjects,_index,_pMask) \ +{ \ + for ((_index) = 0; (_index) < (_maxObjects); (_index)++) \ + { \ + if(!NV2080_CTRL_BOARDOBJGRP_MASK_BIT_GET__DEPRECATED_DO_NOT_USE((_pMask), (_index))) \ + { \ + continue; \ + } +#define NV2080_CTRL_BOARDOBJGRP_MASK_FOR_EACH_INDEX_END \ + } \ +} + +/*! + * @deprecated DO NOT USE! Use type-safe + * @ref NV2080_CTRL_BOARDOBJGRP_MASK_E32_FOR_EACH_INDEX + * instead + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_E32_FOR_EACH_INDEX__DEPRECATED(_index,_pMask) \ + NV2080_CTRL_BOARDOBJGRP_MASK_FOR_EACH_INDEX__DEPRECATED_DO_NOT_USE( \ + NV2080_CTRL_BOARDOBJGRP_E32_MAX_OBJECTS,_index,_pMask) + +/*! + * @deprecated DO NOT USE! Use type-safe + * @ref NV2080_CTRL_BOARDOBJGRP_MASK_E255_FOR_EACH_INDEX + * instead + */ +#define NV2080_CTRL_BOARDOBJGRP_MASK_E255_FOR_EACH_INDEX__DEPRECATED(_index,_pMask) \ + NV2080_CTRL_BOARDOBJGRP_MASK_FOR_EACH_INDEX__DEPRECATED_DO_NOT_USE( \ + NV2080_CTRL_BOARDOBJGRP_E255_MAX_OBJECTS,_index,_pMask) + +/*! + * @brief Board Object Group Mask base class. + * + * Used to unify access to all NV2080_CTRL_BOARDOBJGRP_MASK_E** child classes. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK { + /*! + * @brief Start with a single element array which is enough to represent + * NV2080_CTRL_BOARDOBJGRP_MASK_MASK_ELEMENT_BIT_SIZE bits. + * + * @note Must be the last member of this structure. + */ + // FINN PORT: The below field is a bit vector! + // In FINN, bit vectors are arrays of bools and each bool becomes 1 bit when used in an array + // FINN generates an array of NvU32's on the back end for these bit vectors + NvU32 pData[1] /* 32 bits */; +} NV2080_CTRL_BOARDOBJGRP_MASK; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK *PNV2080_CTRL_BOARDOBJGRP_MASK; + +/*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK child class capable of storing 32 bits + * indexed between 0..31. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E32 { + /*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK super-class. Must be the first + * member of the structure. + */ + NV2080_CTRL_BOARDOBJGRP_MASK super; +} NV2080_CTRL_BOARDOBJGRP_MASK_E32; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E32 *PNV2080_CTRL_BOARDOBJGRP_MASK_E32; + +/*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK child class capable of storing 255 bits + * indexed between 0..254. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E255 { + /*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK super-class. Must be the first + * member of the structure. + */ + NV2080_CTRL_BOARDOBJGRP_MASK super; + + /*! + * @brief Continuation of the array of + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE elements representing the + * bit-mask. + * + * @note Must be the second member of the structure. + */ + + // FINN PORT: The below field is a bit vector! + // In FINN, bit vectors are arrays of bools and each bool becomes 1 bit when used in an array + // FINN generates an array of NvU32's on the back end for these bit vectors + NvU32 pDataE255[7] /* 223 bits */; +} NV2080_CTRL_BOARDOBJGRP_MASK_E255; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E255 *PNV2080_CTRL_BOARDOBJGRP_MASK_E255; + +/*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK child class capable of storing 512 bits + * indexed between 0..511. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E512 { + /*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK super-class. Must be the first + * member of the structure. + */ + NV2080_CTRL_BOARDOBJGRP_MASK super; + + /*! + * @brief Continuation of the array of + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE elements representing the + * bit-mask. + * + * @note Must be the second member of the structure. + */ + + // FINN PORT: The below field is a bit vector! + // In FINN, bit vectors are arrays of bools and each bool becomes 1 bit when used in an array + // FINN generates an array of NvU32's on the back end for these bit vectors + NvU32 pDataE512[15] /* 480 bits */; +} NV2080_CTRL_BOARDOBJGRP_MASK_E512; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E512 *PNV2080_CTRL_BOARDOBJGRP_MASK_E512; + +/*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK child class capable of storing 1024 bits + * indexed between 0..1023. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E1024 { + /*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK super-class. Must be the first + * member of the structure. + */ + NV2080_CTRL_BOARDOBJGRP_MASK super; + + /*! + * @brief Continuation of the array of + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE elements representing the + * bit-mask. + * + * @note Must be the second member of the structure. + */ + + // FINN PORT: The below field is a bit vector! + // In FINN, bit vectors are arrays of bools and each bool becomes 1 bit when used in an array + // FINN generates an array of NvU32's on the back end for these bit vectors + NvU32 pDataE1024[31] /* 992 bits */; +} NV2080_CTRL_BOARDOBJGRP_MASK_E1024; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E1024 *PNV2080_CTRL_BOARDOBJGRP_MASK_E1024; + +/*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK child class capable of storing 2048 bits + * indexed between 0..2047. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E2048 { + /*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK super-class. Must be the first + * member of the structure. + */ + NV2080_CTRL_BOARDOBJGRP_MASK super; + + /*! + * @brief Continuation of the array of + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE elements representing the + * bit-mask. + * + * @note Must be the second member of the structure. + */ + + // FINN PORT: The below field is a bit vector! + // In FINN, bit vectors are arrays of bools and each bool becomes 1 bit when used in an array + // FINN generates an array of NvU32's on the back end for these bit vectors + NvU32 pDataE2048[63] /* 2016 bits */; +} NV2080_CTRL_BOARDOBJGRP_MASK_E2048; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E2048 *PNV2080_CTRL_BOARDOBJGRP_MASK_E2048; + +/*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK child class capable of storing 8192 bits + * indexed between 0..8191. + */ +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E8192 { + /*! + * @brief NV2080_CTRL_BOARDOBJGRP_MASK super-class. Must be the first + * member of the structure. + */ + NV2080_CTRL_BOARDOBJGRP_MASK super; + + /*! + * @brief Continuation of the array of + * NV2080_CTRL_BOARDOBJGRP_MASK_PRIMITIVE elements representing the + * bit-mask. + * + * @note Must be the second member of the structure. + */ + + // FINN PORT: The below field is a bit vector! + // In FINN, bit vectors are arrays of bools and each bool becomes 1 bit when used in an array + // FINN generates an array of NvU32's on the back end for these bit vectors + NvU32 pDataE8192[255] /* 8160 bits */; +} NV2080_CTRL_BOARDOBJGRP_MASK_E8192; +typedef struct NV2080_CTRL_BOARDOBJGRP_MASK_E8192 *PNV2080_CTRL_BOARDOBJGRP_MASK_E8192; + +/*! + * @brief Macro to provide the BOARDOBJ type for a given (UNIT, CLASS, TYPE) + * combination. + * + * @details For arguments (FOO, BAR, BAZ), this macro will return + * NV2080_CTRL_FOO_BAR_TYPE_BAZ + * + * @param[in] _unit The unit. + * @param[in] _class The class. + * @param[in] _type The type. + * + * @return BOARDOBJ object type identifier. + */ +#define NV2080_CTRL_BOARDOBJ_TYPE(_unit, _class, _type) \ + NV2080_CTRL_##_unit##_##_class##_TYPE_##_type + + + +/*! + * @brief Base structure which describes a BOARDOBJ CLIENT_INFO in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO { + /*! + * @brief BOARDOBJ type. + * + * This should be a unique value within the class that the BOARDOBJ belongs. + */ + NvU8 type; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO; + +/*! + * @brief Base structure which describes a BOARDOBJ CLIENT_STATUS in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS { + /*! + * @brief BOARDOBJ type. + * + * This should be a unique value within the class that the BOARDOBJ belongs. + */ + NvU8 type; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS; + +/*! + * @brief Base structure which describes a BOARDOBJ CLIENT_CONTROL in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL { + /*! + * @brief BOARDOBJ type. + * + * This should be a unique value within the class that the BOARDOBJ belongs. + */ + NvU8 type; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL; + +/*! + * @brief Base structure which describes a BOARDOBJ CLIENT_READINGS in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS { + /*! + * @brief BOARDOBJ type. + * + * This should be a unique value within the class that the BOARDOBJ belongs. + */ + NvU8 type; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS; + +/*! + * @brief Base structure which describes a CLIENT_INFO BOARDOBJ_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_INTERFACE; + +/*! + * @brief Base structure which describes a CLIENT_STATUS BOARDOBJ_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_INTERFACE; + +/*! + * @brief Base structure which describes a CLIENT_CONTROL BOARDOBJ_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_INTERFACE; + +/*! + * @brief Base structure which describes a CLIENT_READINGS BOARDOBJ_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_INTERFACE; + +/*! + * @brief Structure representing CLIENT_INFO for a BOARDOBJ_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL { + /*! + * Super class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_INFO for a BOARDOBJ_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL_20 { + /*! + * Super class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_INFO for a + * BOARDOBJ_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_INFO_IFACE_MODEL_PMU_INIT_1X; + +/*! + * @brief Structure representing CLIENT_STATUS for a BOARDOBJ_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL { + /*! + * Super class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_STATUS for a BOARDOBJ_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL_20 { + /*! + * Super class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_STATUS for a + * BOARDOBJ_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_STATUS_IFACE_MODEL_PMU_INIT_1X; + +/*! + * @brief Structure representing CLIENT_CONTROL for a BOARDOBJ_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL { + /*! + * Super class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_CONTROL for a BOARDOBJ_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL_20 { + /*! + * Super class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_CONTROL for a + * BOARDOBJ_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_CONTROL_IFACE_MODEL_PMU_INIT_1X; + +/*! + * @brief Structure representing CLIENT_READINGS for a BOARDOBJ_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL { + /*! + * Super class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_READINGS for a BOARDOBJ_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL_20 { + /*! + * Super class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_READINGS for a + * BOARDOBJ_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJ_CLIENT_READINGS_IFACE_MODEL_PMU_INIT_1X; + +/*! + * CLIENT_INFO data for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO { + /*! + * @brief Concrete class type of this BOARDOBJGRP + */ + NvU8 classType; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO; + +/*! + * CLIENT_INFO SUPER_ALIAS version for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_SUPER_ALIAS { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + NV2080_CTRL_BOARDOBJGRP_MASK objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_SUPER_ALIAS; + +/*! + * CLIENT_STATUS data for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS { + /*! + * @brief Concrete class type of this BOARDOBJGRP + */ + NvU8 classType; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS; + +/*! + * CLIENT_STATUS SUPER_ALIAS version for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_SUPER_ALIAS { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + NV2080_CTRL_BOARDOBJGRP_MASK objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_SUPER_ALIAS; + +/*! + * CLIENT_CONTROL data for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL { + /*! + * @brief Concrete class type of this BOARDOBJGRP + */ + NvU8 classType; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL; + +/*! + * CLIENT_CONTROL SUPER_ALIAS version for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_SUPER_ALIAS { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + NV2080_CTRL_BOARDOBJGRP_MASK objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_SUPER_ALIAS; + +/*! + * CLIENT_READINGS data for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS { + /*! + * @brief Concrete class type of this BOARDOBJGRP + */ + NvU8 classType; + + /*! + * Whether the CLIENT_READINGS have been initialized. + * This should be set to false on any initial call into the API + */ + NvBool bInitialized; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS; + +/*! + * CLIENT_READINGS SUPER_ALIAS version for @ref BOARDOBJGRP base class + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_SUPER_ALIAS { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + NV2080_CTRL_BOARDOBJGRP_MASK objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_SUPER_ALIAS; + +/*! + * CLIENT_INFO for @ref BOARDOBJGRP_E32 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E32 { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E32 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E32; + +/*! + * CLIENT_STATUS for @ref BOARDOBJGRP_E32 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E32 { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E32 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E32; + +/*! + * CLIENT_CONTROL for @ref BOARDOBJGRP_E32 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E32 { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E32 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E32; + +/*! + * CLIENT_READINGS for @ref BOARDOBJGRP_E32 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E32 { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E32 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E32; + +/*! + * CLIENT_INFO for @ref BOARDOBJGRP_E255 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E255 { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E255 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E255; + +/*! + * CLIENT_STATUS for @ref BOARDOBJGRP_E255 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E255 { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E255 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E255; + +/*! + * CLIENT_CONTROL for @ref BOARDOBJGRP_E255 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E255 { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E255 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E255; + +/*! + * CLIENT_READINGS for @ref BOARDOBJGRP_E255 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E255 { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E255 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E255; + +/*! + * CLIENT_INFO for @ref BOARDOBJGRP_E512 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E512 { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E512 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E512; + +/*! + * CLIENT_STATUS for @ref BOARDOBJGRP_E512 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E512 { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E512 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E512; + +/*! + * CLIENT_CONTROL for @ref BOARDOBJGRP_E512 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E512 { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E512 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E512; + +/*! + * CLIENT_READINGS for @ref BOARDOBJGRP_E512 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E512 { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E512 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E512; + +/*! + * CLIENT_INFO for @ref BOARDOBJGRP_E1024 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E1024 { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E1024 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E1024; + +/*! + * CLIENT_STATUS for @ref BOARDOBJGRP_E1024 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E1024 { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E1024 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E1024; + +/*! + * CLIENT_CONTROL for @ref BOARDOBJGRP_E1024 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E1024 { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E1024 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E1024; + +/*! + * CLIENT_READINGS for @ref BOARDOBJGRP_E1024 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E1024 { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E1024 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E1024; + +/*! + * CLIENT_INFO for @ref BOARDOBJGRP_E2048 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E2048 { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E2048 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E2048; + +/*! + * CLIENT_STATUS for @ref BOARDOBJGRP_E2048 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E2048 { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E2048 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E2048; + +/*! + * CLIENT_CONTROL for @ref BOARDOBJGRP_E2048 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E2048 { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E2048 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E2048; + +/*! + * CLIENT_READINGS for @ref BOARDOBJGRP_E2048 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E2048 { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E2048 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E2048; + + +/*! + * CLIENT_INFO for @ref BOARDOBJGRP_E8192 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E8192 { + /*! + * Base class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E8192 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_E8192; + +/*! + * CLIENT_STATUS for @ref BOARDOBJGRP_E8192 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E8192 { + /*! + * Base class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E8192 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_E8192; + +/*! + * CLIENT_CONTROL for @ref BOARDOBJGRP_E8192 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E8192 { + /*! + * Base class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E8192 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_E8192; + +/*! + * CLIENT_READINGS for @ref BOARDOBJGRP_E8192 + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E8192 { + /*! + * Base class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS super; + + /*! + * Mask of valid @ref BOARDOBJ objects within the payload + */ + NV2080_CTRL_BOARDOBJGRP_MASK_E8192 objMask; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_E8192; + + +/*! + * @brief Structure representing CLIENT_INFO for a BOARDOBJGRP_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_INTERFACE; + +/*! + * @brief Structure representing CLIENT_INFO for a BOARDOBJGRP_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL { + /*! + * Super class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_INFO for a BOARDOBJGRP_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL_20 { + /*! + * Super class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_INFO for a + * BOARDOBJGRP_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_INFO + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_INFO_IFACE_MODEL_PMU_INIT_1X; + +/*! + * @brief Structure representing CLIENT_STATUS for a BOARDOBJGRP_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_INTERFACE; + +/*! + * @brief Structure representing CLIENT_STATUS for a BOARDOBJGRP_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL { + /*! + * Super class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_STATUS for a BOARDOBJGRP_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL_20 { + /*! + * Super class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_STATUS for a + * BOARDOBJGRP_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_STATUS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_STATUS_IFACE_MODEL_PMU_INIT_1X; + +/*! + * @brief Structure representing CLIENT_CONTROL for a BOARDOBJGRP_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_INTERFACE; + +/*! + * @brief Structure representing CLIENT_CONTROL for a BOARDOBJGRP_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL { + /*! + * Super class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_CONTROL for a BOARDOBJGRP_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL_20 { + /*! + * Super class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_CONTROL for a + * BOARDOBJGRP_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_CONTROL + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_CONTROL_IFACE_MODEL_PMU_INIT_1X; + +/*! + * @brief Structure representing CLIENT_READINGS for a BOARDOBJGRP_INTERFACE in RMCTRL. + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_INTERFACE { + /*! + * @brief Reserved for future use cases. + */ + NvU8 rsvd; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_INTERFACE; + +/*! + * @brief Structure representing CLIENT_READINGS for a BOARDOBJGRP_IFACE_MODEL interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL { + /*! + * Super class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_INTERFACE super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL; + +/*! + * @brief Structure representing CLIENT_READINGS for a BOARDOBJGRP_IFACE_MODEL_20 + * interface + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL_20 { + /*! + * Super class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL_20; + +/*! + * @brief Structure representing CLIENT_READINGS for a + * BOARDOBJGRP_IFACE_MODEL_PMU_INIT_1X interface + * + */ +typedef struct NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL_PMU_INIT_1X { + /*! + * Super class CLIENT_READINGS + */ + NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL_20 super; +} NV2080_CTRL_BOARDOBJ_BOARDOBJGRP_CLIENT_READINGS_IFACE_MODEL_PMU_INIT_1X; -- cgit v1.2.3