/* automatically generated by rust-bindgen 0.70.1 */

// Copyright (C) 2024 Advanced Micro Devices. All rights reserved.
//
// 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.

#![allow(non_upper_case_globals)]

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage> {
    storage: Storage,
}
impl<Storage> __BindgenBitfieldUnit<Storage> {
    #[inline]
    pub const fn new(storage: Storage) -> Self {
        Self { storage }
    }
}
impl<Storage> __BindgenBitfieldUnit<Storage>
where
    Storage: AsRef<[u8]> + AsMut<[u8]>,
{
    #[inline]
    pub fn get_bit(&self, index: usize) -> bool {
        debug_assert!(index / 8 < self.storage.as_ref().len());
        let byte_index = index / 8;
        let byte = self.storage.as_ref()[byte_index];
        let bit_index = if cfg!(target_endian = "big") {
            7 - (index % 8)
        } else {
            index % 8
        };
        let mask = 1 << bit_index;
        byte & mask == mask
    }
    #[inline]
    pub fn set_bit(&mut self, index: usize, val: bool) {
        debug_assert!(index / 8 < self.storage.as_ref().len());
        let byte_index = index / 8;
        let byte = &mut self.storage.as_mut()[byte_index];
        let bit_index = if cfg!(target_endian = "big") {
            7 - (index % 8)
        } else {
            index % 8
        };
        let mask = 1 << bit_index;
        if val {
            *byte |= mask;
        } else {
            *byte &= !mask;
        }
    }
    #[inline]
    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
        debug_assert!(bit_width <= 64);
        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
        let mut val = 0;
        for i in 0..(bit_width as usize) {
            if self.get_bit(i + bit_offset) {
                let index = if cfg!(target_endian = "big") {
                    bit_width as usize - 1 - i
                } else {
                    i
                };
                val |= 1 << index;
            }
        }
        val
    }
    #[inline]
    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
        debug_assert!(bit_width <= 64);
        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
        for i in 0..(bit_width as usize) {
            let mask = 1 << i;
            let val_bit_is_set = val & mask == mask;
            let index = if cfg!(target_endian = "big") {
                bit_width as usize - 1 - i
            } else {
                i
            };
            self.set_bit(index + bit_offset, val_bit_is_set);
        }
    }
}
pub const AMDSMI_MAX_MM_IP_COUNT: u32 = 8;
pub const AMDSMI_MAX_DATE_LENGTH: u32 = 32;
pub const AMDSMI_MAX_STRING_LENGTH: u32 = 256;
pub const AMDSMI_256_LENGTH: u32 = 256;
pub const AMDSMI_MAX_DEVICES: u32 = 32;
pub const AMDSMI_MAX_NAME: u32 = 32;
pub const AMDSMI_MAX_DRIVER_VERSION_LENGTH: u32 = 80;
pub const AMDSMI_MAX_CONTAINER_TYPE: u32 = 2;
pub const AMDSMI_MAX_CACHE_TYPES: u32 = 10;
pub const AMDSMI_MAX_NUM_XGMI_PHYSICAL_LINK: u32 = 64;
pub const AMDSMI_MAX_ACCELERATOR_PROFILE: u32 = 32;
pub const AMDSMI_MAX_CP_PROFILE_RESOURCES: u32 = 32;
pub const AMDSMI_MAX_ACCELERATOR_PARTITIONS: u32 = 8;
pub const AMDSMI_GPU_UUID_SIZE: u32 = 38;
pub const AMDSMI_NUM_HBM_INSTANCES: u32 = 4;
pub const AMDSMI_MAX_NUM_VCN: u32 = 4;
pub const AMDSMI_MAX_NUM_CLKS: u32 = 4;
pub const AMDSMI_MAX_NUM_XGMI_LINKS: u32 = 8;
pub const AMDSMI_MAX_NUM_GFX_CLKS: u32 = 8;
pub const AMDSMI_MAX_AID: u32 = 4;
pub const AMDSMI_MAX_ENGINES: u32 = 8;
pub const AMDSMI_MAX_NUM_JPEG: u32 = 32;
pub const AMDSMI_MAX_NUM_XCC: u32 = 8;
pub const AMDSMI_MAX_NUM_XCP: u32 = 8;
pub const AMDSMI_TIME_FORMAT: &[u8; 20] = b"%02d:%02d:%02d.%03d\0";
pub const AMDSMI_DATE_FORMAT: &[u8; 35] = b"%04d-%02d-%02d:%02d:%02d:%02d.%03d\0";
pub const AMDSMI_LIB_VERSION_YEAR: u32 = 25;
pub const AMDSMI_LIB_VERSION_MAJOR: u32 = 25;
pub const AMDSMI_LIB_VERSION_MINOR: u32 = 5;
pub const AMDSMI_LIB_VERSION_RELEASE: u32 = 1;
pub const AMDSMI_MAX_NUM_FREQUENCIES: u32 = 33;
pub const AMDSMI_MAX_FAN_SPEED: u32 = 255;
pub const AMDSMI_NUM_VOLTAGE_CURVE_POINTS: u32 = 3;
pub const AMDSMI_MAX_UTILIZATION_VALUES: u32 = 4;
pub const AMDSMI_MAX_NUM_PM_POLICIES: u32 = 32;
pub const AMDSMI_DEFAULT_VARIANT: i32 = -1;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiInitFlagsT {
    AmdsmiInitAllProcessors = 4294967295,
    AmdsmiInitAmdCpus = 1,
    AmdsmiInitAmdGpus = 2,
    AmdsmiInitNonAmdCpus = 4,
    AmdsmiInitNonAmdGpus = 8,
    AmdsmiInitAmdApus = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMmIpT {
    AmdsmiMmUvd = 0,
    AmdsmiMmVce = 1,
    AmdsmiMmVcn = 2,
    AmdsmiMmMax = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiContainerTypesT {
    AmdsmiContainerLxc = 0,
    AmdsmiContainerDocker = 1,
}
pub type AmdsmiProcessorHandle = *mut ::std::os::raw::c_void;
pub type AmdsmiSocketHandle = *mut ::std::os::raw::c_void;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum ProcessorTypeT {
    AmdsmiProcessorTypeUnknown = 0,
    AmdsmiProcessorTypeAmdGpu = 1,
    AmdsmiProcessorTypeAmdCpu = 2,
    AmdsmiProcessorTypeNonAmdGpu = 3,
    AmdsmiProcessorTypeNonAmdCpu = 4,
    AmdsmiProcessorTypeAmdCpuCore = 5,
    AmdsmiProcessorTypeAmdApu = 6,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiStatusT {
    AmdsmiStatusSuccess = 0,
    AmdsmiStatusInval = 1,
    AmdsmiStatusNotSupported = 2,
    AmdsmiStatusNotYetImplemented = 3,
    AmdsmiStatusFailLoadModule = 4,
    AmdsmiStatusFailLoadSymbol = 5,
    AmdsmiStatusDrmError = 6,
    AmdsmiStatusApiFailed = 7,
    AmdsmiStatusTimeout = 8,
    AmdsmiStatusRetry = 9,
    AmdsmiStatusNoPerm = 10,
    AmdsmiStatusInterrupt = 11,
    AmdsmiStatusIo = 12,
    AmdsmiStatusAddressFault = 13,
    AmdsmiStatusFileError = 14,
    AmdsmiStatusOutOfResources = 15,
    AmdsmiStatusInternalException = 16,
    AmdsmiStatusInputOutOfBounds = 17,
    AmdsmiStatusInitError = 18,
    AmdsmiStatusRefcountOverflow = 19,
    AmdsmiStatusBusy = 30,
    AmdsmiStatusNotFound = 31,
    AmdsmiStatusNotInit = 32,
    AmdsmiStatusNoSlot = 33,
    AmdsmiStatusDriverNotLoaded = 34,
    AmdsmiStatusNoData = 40,
    AmdsmiStatusInsufficientSize = 41,
    AmdsmiStatusUnexpectedSize = 42,
    AmdsmiStatusUnexpectedData = 43,
    AmdsmiStatusNonAmdCpu = 44,
    AmdsmiStatusNoEnergyDrv = 45,
    AmdsmiStatusNoMsrDrv = 46,
    AmdsmiStatusNoHsmpDrv = 47,
    AmdsmiStatusNoHsmpSup = 48,
    AmdsmiStatusNoHsmpMsgSup = 49,
    AmdsmiStatusHsmpTimeout = 50,
    AmdsmiStatusNoDrv = 51,
    AmdsmiStatusFileNotFound = 52,
    AmdsmiStatusArgPtrNull = 53,
    AmdsmiStatusAmdgpuRestartErr = 54,
    AmdsmiStatusSettingUnavailable = 55,
    AmdsmiStatusMapError = 4294967294,
    AmdsmiStatusUnknownError = 4294967295,
}
impl AmdsmiClkTypeT {
    pub const AmdsmiClkTypeFirst: AmdsmiClkTypeT = AmdsmiClkTypeT::AmdsmiClkTypeSys;
}
impl AmdsmiClkTypeT {
    pub const AmdsmiClkTypeGfx: AmdsmiClkTypeT = AmdsmiClkTypeT::AmdsmiClkTypeSys;
}
impl AmdsmiClkTypeT {
    pub const AmdsmiClkTypeMax: AmdsmiClkTypeT = AmdsmiClkTypeT::AmdsmiClkTypeDclk1;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiClkTypeT {
    AmdsmiClkTypeSys = 0,
    AmdsmiClkTypeDf = 1,
    AmdsmiClkTypeDcef = 2,
    AmdsmiClkTypeSoc = 3,
    AmdsmiClkTypeMem = 4,
    AmdsmiClkTypePcie = 5,
    AmdsmiClkTypeVclk0 = 6,
    AmdsmiClkTypeVclk1 = 7,
    AmdsmiClkTypeDclk0 = 8,
    AmdsmiClkTypeDclk1 = 9,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiAcceleratorPartitionTypeT {
    AmdsmiAcceleratorPartitionInvalid = 0,
    AmdsmiAcceleratorPartitionSpx = 1,
    AmdsmiAcceleratorPartitionDpx = 2,
    AmdsmiAcceleratorPartitionTpx = 3,
    AmdsmiAcceleratorPartitionQpx = 4,
    AmdsmiAcceleratorPartitionCpx = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiComputePartitionTypeT {
    AmdsmiComputePartitionInvalid = 0,
    AmdsmiComputePartitionSpx = 1,
    AmdsmiComputePartitionDpx = 2,
    AmdsmiComputePartitionTpx = 3,
    AmdsmiComputePartitionQpx = 4,
    AmdsmiComputePartitionCpx = 5,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMemoryPartitionTypeT {
    AmdsmiMemoryPartitionUnknown = 0,
    AmdsmiMemoryPartitionNps1 = 1,
    AmdsmiMemoryPartitionNps2 = 2,
    AmdsmiMemoryPartitionNps4 = 3,
    AmdsmiMemoryPartitionNps8 = 4,
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeFirst: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeEdge;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeJunction: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypeHotspot;
}
impl AmdsmiTemperatureTypeT {
    pub const AmdsmiTemperatureTypeMax: AmdsmiTemperatureTypeT =
        AmdsmiTemperatureTypeT::AmdsmiTemperatureTypePlx;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiTemperatureTypeT {
    AmdsmiTemperatureTypeEdge = 0,
    AmdsmiTemperatureTypeHotspot = 1,
    AmdsmiTemperatureTypeVram = 2,
    AmdsmiTemperatureTypeHbm0 = 3,
    AmdsmiTemperatureTypeHbm1 = 4,
    AmdsmiTemperatureTypeHbm2 = 5,
    AmdsmiTemperatureTypeHbm3 = 6,
    AmdsmiTemperatureTypePlx = 7,
}
impl AmdsmiFwBlockT {
    pub const AmdsmiFwIdFirst: AmdsmiFwBlockT = AmdsmiFwBlockT::AmdsmiFwIdSmu;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFwBlockT {
    AmdsmiFwIdSmu = 1,
    AmdsmiFwIdCpCe = 2,
    AmdsmiFwIdCpPfp = 3,
    AmdsmiFwIdCpMe = 4,
    AmdsmiFwIdCpMecJt1 = 5,
    AmdsmiFwIdCpMecJt2 = 6,
    AmdsmiFwIdCpMec1 = 7,
    AmdsmiFwIdCpMec2 = 8,
    AmdsmiFwIdRlc = 9,
    AmdsmiFwIdSdma0 = 10,
    AmdsmiFwIdSdma1 = 11,
    AmdsmiFwIdSdma2 = 12,
    AmdsmiFwIdSdma3 = 13,
    AmdsmiFwIdSdma4 = 14,
    AmdsmiFwIdSdma5 = 15,
    AmdsmiFwIdSdma6 = 16,
    AmdsmiFwIdSdma7 = 17,
    AmdsmiFwIdVcn = 18,
    AmdsmiFwIdUvd = 19,
    AmdsmiFwIdVce = 20,
    AmdsmiFwIdIsp = 21,
    AmdsmiFwIdDmcuEram = 22,
    AmdsmiFwIdDmcuIsr = 23,
    AmdsmiFwIdRlcRestoreListGpmMem = 24,
    AmdsmiFwIdRlcRestoreListSrmMem = 25,
    AmdsmiFwIdRlcRestoreListCntl = 26,
    AmdsmiFwIdRlcV = 27,
    AmdsmiFwIdMmsch = 28,
    AmdsmiFwIdPspSysdrv = 29,
    AmdsmiFwIdPspSosdrv = 30,
    AmdsmiFwIdPspToc = 31,
    AmdsmiFwIdPspKeydb = 32,
    AmdsmiFwIdDfc = 33,
    AmdsmiFwIdPspSpl = 34,
    AmdsmiFwIdDrvCap = 35,
    AmdsmiFwIdMc = 36,
    AmdsmiFwIdPspBl = 37,
    AmdsmiFwIdCpPm4 = 38,
    AmdsmiFwIdRlcP = 39,
    AmdsmiFwIdSecPolicyStage2 = 40,
    AmdsmiFwIdRegAccessWhitelist = 41,
    AmdsmiFwIdImuDram = 42,
    AmdsmiFwIdImuIram = 43,
    AmdsmiFwIdSdmaTh0 = 44,
    AmdsmiFwIdSdmaTh1 = 45,
    AmdsmiFwIdCpMes = 46,
    AmdsmiFwIdMesKiq = 47,
    AmdsmiFwIdMesStack = 48,
    AmdsmiFwIdMesThread1 = 49,
    AmdsmiFwIdMesThread1Stack = 50,
    AmdsmiFwIdRlx6 = 51,
    AmdsmiFwIdRlx6DramBoot = 52,
    AmdsmiFwIdRs64Me = 53,
    AmdsmiFwIdRs64MeP0Data = 54,
    AmdsmiFwIdRs64MeP1Data = 55,
    AmdsmiFwIdRs64Pfp = 56,
    AmdsmiFwIdRs64PfpP0Data = 57,
    AmdsmiFwIdRs64PfpP1Data = 58,
    AmdsmiFwIdRs64Mec = 59,
    AmdsmiFwIdRs64MecP0Data = 60,
    AmdsmiFwIdRs64MecP1Data = 61,
    AmdsmiFwIdRs64MecP2Data = 62,
    AmdsmiFwIdRs64MecP3Data = 63,
    AmdsmiFwIdPptable = 64,
    AmdsmiFwIdPspSoc = 65,
    AmdsmiFwIdPspDbg = 66,
    AmdsmiFwIdPspIntf = 67,
    AmdsmiFwIdRlx6Core1 = 68,
    AmdsmiFwIdRlx6DramBootCore1 = 69,
    AmdsmiFwIdRlcvLx7 = 70,
    AmdsmiFwIdRlcSaveRestoreList = 71,
    AmdsmiFwIdAsd = 72,
    AmdsmiFwIdTaRas = 73,
    AmdsmiFwIdTaXgmi = 74,
    AmdsmiFwIdRlcSrlg = 75,
    AmdsmiFwIdRlcSrls = 76,
    AmdsmiFwIdPm = 77,
    AmdsmiFwIdDmcu = 78,
    AmdsmiFwIdMax = 79,
}
impl AmdsmiVramTypeT {
    pub const AmdsmiVramTypeMax: AmdsmiVramTypeT = AmdsmiVramTypeT::AmdsmiVramTypeGddr7;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVramTypeT {
    AmdsmiVramTypeUnknown = 0,
    AmdsmiVramTypeHbm = 1,
    AmdsmiVramTypeHbm2 = 2,
    AmdsmiVramTypeHbm2e = 3,
    AmdsmiVramTypeHbm3 = 4,
    AmdsmiVramTypeDdr2 = 10,
    AmdsmiVramTypeDdr3 = 11,
    AmdsmiVramTypeDdr4 = 12,
    AmdsmiVramTypeGddr1 = 17,
    AmdsmiVramTypeGddr2 = 18,
    AmdsmiVramTypeGddr3 = 19,
    AmdsmiVramTypeGddr4 = 20,
    AmdsmiVramTypeGddr5 = 21,
    AmdsmiVramTypeGddr6 = 22,
    AmdsmiVramTypeGddr7 = 23,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVramVendorTypeT {
    AmdsmiVramVendorPlaceholder0 = 0,
    AmdsmiVramVendorSamsung = 1,
    AmdsmiVramVendorInfineon = 2,
    AmdsmiVramVendorElpida = 3,
    AmdsmiVramVendorEtron = 4,
    AmdsmiVramVendorNanya = 5,
    AmdsmiVramVendorHynix = 6,
    AmdsmiVramVendorMosel = 7,
    AmdsmiVramVendorWinbond = 8,
    AmdsmiVramVendorEsmt = 9,
    AmdsmiVramVendorPlaceholder1 = 10,
    AmdsmiVramVendorPlaceholder2 = 11,
    AmdsmiVramVendorPlaceholder3 = 12,
    AmdsmiVramVendorPlaceholder4 = 13,
    AmdsmiVramVendorPlaceholder5 = 14,
    AmdsmiVramVendorMicron = 15,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRangeT {
    pub lower_bound: u64,
    pub upper_bound: u64,
    pub reserved: [u64; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRangeT"][::std::mem::size_of::<AmdsmiRangeT>() - 32usize];
    ["Alignment of AmdsmiRangeT"][::std::mem::align_of::<AmdsmiRangeT>() - 8usize];
    ["Offset of field: AmdsmiRangeT::lower_bound"]
        [::std::mem::offset_of!(AmdsmiRangeT, lower_bound) - 0usize];
    ["Offset of field: AmdsmiRangeT::upper_bound"]
        [::std::mem::offset_of!(AmdsmiRangeT, upper_bound) - 8usize];
    ["Offset of field: AmdsmiRangeT::reserved"]
        [::std::mem::offset_of!(AmdsmiRangeT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiXgmiInfoT {
    pub xgmi_lanes: u8,
    pub xgmi_hive_id: u64,
    pub xgmi_node_id: u64,
    pub index: u32,
    pub reserved: [u32; 9usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiXgmiInfoT"][::std::mem::size_of::<AmdsmiXgmiInfoT>() - 64usize];
    ["Alignment of AmdsmiXgmiInfoT"][::std::mem::align_of::<AmdsmiXgmiInfoT>() - 8usize];
    ["Offset of field: AmdsmiXgmiInfoT::xgmi_lanes"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, xgmi_lanes) - 0usize];
    ["Offset of field: AmdsmiXgmiInfoT::xgmi_hive_id"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, xgmi_hive_id) - 8usize];
    ["Offset of field: AmdsmiXgmiInfoT::xgmi_node_id"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, xgmi_node_id) - 16usize];
    ["Offset of field: AmdsmiXgmiInfoT::index"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, index) - 24usize];
    ["Offset of field: AmdsmiXgmiInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiXgmiInfoT, reserved) - 28usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVramUsageT {
    pub vram_total: u32,
    pub vram_used: u32,
    pub reserved: [u32; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVramUsageT"][::std::mem::size_of::<AmdsmiVramUsageT>() - 16usize];
    ["Alignment of AmdsmiVramUsageT"][::std::mem::align_of::<AmdsmiVramUsageT>() - 4usize];
    ["Offset of field: AmdsmiVramUsageT::vram_total"]
        [::std::mem::offset_of!(AmdsmiVramUsageT, vram_total) - 0usize];
    ["Offset of field: AmdsmiVramUsageT::vram_used"]
        [::std::mem::offset_of!(AmdsmiVramUsageT, vram_used) - 4usize];
    ["Offset of field: AmdsmiVramUsageT::reserved"]
        [::std::mem::offset_of!(AmdsmiVramUsageT, reserved) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiViolationStatusT {
    pub reference_timestamp: u64,
    pub violation_timestamp: u64,
    pub acc_counter: u64,
    pub acc_prochot_thrm: u64,
    pub acc_ppt_pwr: u64,
    pub acc_socket_thrm: u64,
    pub acc_vr_thrm: u64,
    pub acc_hbm_thrm: u64,
    pub per_prochot_thrm: u64,
    pub per_ppt_pwr: u64,
    pub per_socket_thrm: u64,
    pub per_vr_thrm: u64,
    pub per_hbm_thrm: u64,
    pub active_prochot_thrm: u8,
    pub active_ppt_pwr: u8,
    pub active_socket_thrm: u8,
    pub active_vr_thrm: u8,
    pub active_hbm_thrm: u8,
    pub reserved: [u64; 30usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiViolationStatusT"][::std::mem::size_of::<AmdsmiViolationStatusT>() - 352usize];
    ["Alignment of AmdsmiViolationStatusT"]
        [::std::mem::align_of::<AmdsmiViolationStatusT>() - 8usize];
    ["Offset of field: AmdsmiViolationStatusT::reference_timestamp"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, reference_timestamp) - 0usize];
    ["Offset of field: AmdsmiViolationStatusT::violation_timestamp"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, violation_timestamp) - 8usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_counter"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_counter) - 16usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_prochot_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_prochot_thrm) - 24usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_ppt_pwr"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_ppt_pwr) - 32usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_socket_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_socket_thrm) - 40usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_vr_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_vr_thrm) - 48usize];
    ["Offset of field: AmdsmiViolationStatusT::acc_hbm_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, acc_hbm_thrm) - 56usize];
    ["Offset of field: AmdsmiViolationStatusT::per_prochot_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_prochot_thrm) - 64usize];
    ["Offset of field: AmdsmiViolationStatusT::per_ppt_pwr"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_ppt_pwr) - 72usize];
    ["Offset of field: AmdsmiViolationStatusT::per_socket_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_socket_thrm) - 80usize];
    ["Offset of field: AmdsmiViolationStatusT::per_vr_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_vr_thrm) - 88usize];
    ["Offset of field: AmdsmiViolationStatusT::per_hbm_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, per_hbm_thrm) - 96usize];
    ["Offset of field: AmdsmiViolationStatusT::active_prochot_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_prochot_thrm) - 104usize];
    ["Offset of field: AmdsmiViolationStatusT::active_ppt_pwr"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_ppt_pwr) - 105usize];
    ["Offset of field: AmdsmiViolationStatusT::active_socket_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_socket_thrm) - 106usize];
    ["Offset of field: AmdsmiViolationStatusT::active_vr_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_vr_thrm) - 107usize];
    ["Offset of field: AmdsmiViolationStatusT::active_hbm_thrm"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, active_hbm_thrm) - 108usize];
    ["Offset of field: AmdsmiViolationStatusT::reserved"]
        [::std::mem::offset_of!(AmdsmiViolationStatusT, reserved) - 112usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFrequencyRangeT {
    pub supported_freq_range: AmdsmiRangeT,
    pub current_freq_range: AmdsmiRangeT,
    pub reserved: [u32; 8usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFrequencyRangeT"][::std::mem::size_of::<AmdsmiFrequencyRangeT>() - 96usize];
    ["Alignment of AmdsmiFrequencyRangeT"]
        [::std::mem::align_of::<AmdsmiFrequencyRangeT>() - 8usize];
    ["Offset of field: AmdsmiFrequencyRangeT::supported_freq_range"]
        [::std::mem::offset_of!(AmdsmiFrequencyRangeT, supported_freq_range) - 0usize];
    ["Offset of field: AmdsmiFrequencyRangeT::current_freq_range"]
        [::std::mem::offset_of!(AmdsmiFrequencyRangeT, current_freq_range) - 32usize];
    ["Offset of field: AmdsmiFrequencyRangeT::reserved"]
        [::std::mem::offset_of!(AmdsmiFrequencyRangeT, reserved) - 64usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub union AmdsmiBdfT {
    pub __bindgen_anon_1: AmdsmiBdfTBindgenTy1,
    pub as_uint: u64,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiBdfTBindgenTy1 {
    pub _bitfield_align_1: [u64; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 8usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBdfTBindgenTy1"][::std::mem::size_of::<AmdsmiBdfTBindgenTy1>() - 8usize];
    ["Alignment of AmdsmiBdfTBindgenTy1"][::std::mem::align_of::<AmdsmiBdfTBindgenTy1>() - 8usize];
};
impl AmdsmiBdfTBindgenTy1 {
    #[inline]
    pub fn function_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 3u8) as u64) }
    }
    #[inline]
    pub fn set_function_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn device_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 5u8) as u64) }
    }
    #[inline]
    pub fn set_device_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 5u8, val as u64)
        }
    }
    #[inline]
    pub fn bus_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 8u8) as u64) }
    }
    #[inline]
    pub fn set_bus_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn domain_number(&self) -> u64 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(16usize, 48u8) as u64) }
    }
    #[inline]
    pub fn set_domain_number(&mut self, val: u64) {
        unsafe {
            let val: u64 = ::std::mem::transmute(val);
            self._bitfield_1.set(16usize, 48u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        function_number: u64,
        device_number: u64,
        bus_number: u64,
        domain_number: u64,
    ) -> __BindgenBitfieldUnit<[u8; 8usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 8usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 3u8, {
            let function_number: u64 = unsafe { ::std::mem::transmute(function_number) };
            function_number as u64
        });
        __bindgen_bitfield_unit.set(3usize, 5u8, {
            let device_number: u64 = unsafe { ::std::mem::transmute(device_number) };
            device_number as u64
        });
        __bindgen_bitfield_unit.set(8usize, 8u8, {
            let bus_number: u64 = unsafe { ::std::mem::transmute(bus_number) };
            bus_number as u64
        });
        __bindgen_bitfield_unit.set(16usize, 48u8, {
            let domain_number: u64 = unsafe { ::std::mem::transmute(domain_number) };
            domain_number as u64
        });
        __bindgen_bitfield_unit
    }
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBdfT"][::std::mem::size_of::<AmdsmiBdfT>() - 8usize];
    ["Alignment of AmdsmiBdfT"][::std::mem::align_of::<AmdsmiBdfT>() - 8usize];
    ["Offset of field: AmdsmiBdfT::as_uint"][::std::mem::offset_of!(AmdsmiBdfT, as_uint) - 0usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCardFormFactorT {
    AmdsmiCardFormFactorPcie = 0,
    AmdsmiCardFormFactorOam = 1,
    AmdsmiCardFormFactorCem = 2,
    AmdsmiCardFormFactorUnknown = 3,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieInfoT {
    pub pcie_static: AmdsmiPcieInfoTPcieStatic,
    pub pcie_metric: AmdsmiPcieInfoTPcieMetric,
    pub reserved: [u64; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieInfoTPcieStatic {
    pub max_pcie_width: u16,
    pub max_pcie_speed: u32,
    pub pcie_interface_version: u32,
    pub slot_type: AmdsmiCardFormFactorT,
    pub reserved: [u64; 10usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieInfoTPcieStatic"]
        [::std::mem::size_of::<AmdsmiPcieInfoTPcieStatic>() - 96usize];
    ["Alignment of AmdsmiPcieInfoTPcieStatic"]
        [::std::mem::align_of::<AmdsmiPcieInfoTPcieStatic>() - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::max_pcie_width"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, max_pcie_width) - 0usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::max_pcie_speed"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, max_pcie_speed) - 4usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::pcie_interface_version"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, pcie_interface_version) - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::slot_type"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, slot_type) - 12usize];
    ["Offset of field: AmdsmiPcieInfoTPcieStatic::reserved"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieStatic, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieInfoTPcieMetric {
    pub pcie_width: u16,
    pub pcie_speed: u32,
    pub pcie_bandwidth: u32,
    pub pcie_replay_count: u64,
    pub pcie_l0_to_recovery_count: u64,
    pub pcie_replay_roll_over_count: u64,
    pub pcie_nak_sent_count: u64,
    pub pcie_nak_received_count: u64,
    pub pcie_lc_perf_other_end_recovery_count: u32,
    pub reserved: [u64; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieInfoTPcieMetric"]
        [::std::mem::size_of::<AmdsmiPcieInfoTPcieMetric>() - 160usize];
    ["Alignment of AmdsmiPcieInfoTPcieMetric"]
        [::std::mem::align_of::<AmdsmiPcieInfoTPcieMetric>() - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_width"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_width) - 0usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_speed"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_speed) - 4usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_bandwidth"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_bandwidth) - 8usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_replay_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_replay_count) - 16usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_l0_to_recovery_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_l0_to_recovery_count) - 24usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_replay_roll_over_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_replay_roll_over_count) - 32usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_nak_sent_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_nak_sent_count) - 40usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_nak_received_count"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, pcie_nak_received_count) - 48usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::pcie_lc_perf_other_end_recovery_count"][::std::mem::offset_of!(
        AmdsmiPcieInfoTPcieMetric,
        pcie_lc_perf_other_end_recovery_count
    )
        - 56usize];
    ["Offset of field: AmdsmiPcieInfoTPcieMetric::reserved"]
        [::std::mem::offset_of!(AmdsmiPcieInfoTPcieMetric, reserved) - 64usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieInfoT"][::std::mem::size_of::<AmdsmiPcieInfoT>() - 512usize];
    ["Alignment of AmdsmiPcieInfoT"][::std::mem::align_of::<AmdsmiPcieInfoT>() - 8usize];
    ["Offset of field: AmdsmiPcieInfoT::pcie_static"]
        [::std::mem::offset_of!(AmdsmiPcieInfoT, pcie_static) - 0usize];
    ["Offset of field: AmdsmiPcieInfoT::pcie_metric"]
        [::std::mem::offset_of!(AmdsmiPcieInfoT, pcie_metric) - 96usize];
    ["Offset of field: AmdsmiPcieInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiPcieInfoT, reserved) - 256usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPowerCapInfoT {
    pub power_cap: u64,
    pub default_power_cap: u64,
    pub dpm_cap: u64,
    pub min_power_cap: u64,
    pub max_power_cap: u64,
    pub reserved: [u64; 3usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPowerCapInfoT"][::std::mem::size_of::<AmdsmiPowerCapInfoT>() - 64usize];
    ["Alignment of AmdsmiPowerCapInfoT"][::std::mem::align_of::<AmdsmiPowerCapInfoT>() - 8usize];
    ["Offset of field: AmdsmiPowerCapInfoT::power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, power_cap) - 0usize];
    ["Offset of field: AmdsmiPowerCapInfoT::default_power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, default_power_cap) - 8usize];
    ["Offset of field: AmdsmiPowerCapInfoT::dpm_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, dpm_cap) - 16usize];
    ["Offset of field: AmdsmiPowerCapInfoT::min_power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, min_power_cap) - 24usize];
    ["Offset of field: AmdsmiPowerCapInfoT::max_power_cap"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, max_power_cap) - 32usize];
    ["Offset of field: AmdsmiPowerCapInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiPowerCapInfoT, reserved) - 40usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVbiosInfoT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub build_date: [::std::os::raw::c_char; 32usize],
    pub part_number: [::std::os::raw::c_char; 256usize],
    pub version: [::std::os::raw::c_char; 256usize],
    pub reserved: [u64; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVbiosInfoT"][::std::mem::size_of::<AmdsmiVbiosInfoT>() - 1056usize];
    ["Alignment of AmdsmiVbiosInfoT"][::std::mem::align_of::<AmdsmiVbiosInfoT>() - 8usize];
    ["Offset of field: AmdsmiVbiosInfoT::name"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, name) - 0usize];
    ["Offset of field: AmdsmiVbiosInfoT::build_date"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, build_date) - 256usize];
    ["Offset of field: AmdsmiVbiosInfoT::part_number"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, part_number) - 288usize];
    ["Offset of field: AmdsmiVbiosInfoT::version"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, version) - 544usize];
    ["Offset of field: AmdsmiVbiosInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiVbiosInfoT, reserved) - 800usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCachePropertyTypeT {
    AmdsmiCachePropertyEnabled = 1,
    AmdsmiCachePropertyDataCache = 2,
    AmdsmiCachePropertyInstCache = 4,
    AmdsmiCachePropertyCpuCache = 8,
    AmdsmiCachePropertySimdCache = 16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuCacheInfoT {
    pub num_cache_types: u32,
    pub cache: [AmdsmiGpuCacheInfoTCache; 10usize],
    pub reserved: [u32; 15usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuCacheInfoTCache {
    pub cache_properties: u32,
    pub cache_size: u32,
    pub cache_level: u32,
    pub max_num_cu_shared: u32,
    pub num_cache_instance: u32,
    pub reserved: [u32; 3usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuCacheInfoTCache"]
        [::std::mem::size_of::<AmdsmiGpuCacheInfoTCache>() - 32usize];
    ["Alignment of AmdsmiGpuCacheInfoTCache"]
        [::std::mem::align_of::<AmdsmiGpuCacheInfoTCache>() - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::cache_properties"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, cache_properties) - 0usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::cache_size"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, cache_size) - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::cache_level"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, cache_level) - 8usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::max_num_cu_shared"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, max_num_cu_shared) - 12usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::num_cache_instance"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, num_cache_instance) - 16usize];
    ["Offset of field: AmdsmiGpuCacheInfoTCache::reserved"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoTCache, reserved) - 20usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuCacheInfoT"][::std::mem::size_of::<AmdsmiGpuCacheInfoT>() - 384usize];
    ["Alignment of AmdsmiGpuCacheInfoT"][::std::mem::align_of::<AmdsmiGpuCacheInfoT>() - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoT::num_cache_types"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoT, num_cache_types) - 0usize];
    ["Offset of field: AmdsmiGpuCacheInfoT::cache"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoT, cache) - 4usize];
    ["Offset of field: AmdsmiGpuCacheInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiGpuCacheInfoT, reserved) - 324usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFwInfoT {
    pub num_fw_info: u8,
    pub fw_info_list: [AmdsmiFwInfoTFwInfoList; 79usize],
    pub reserved: [u32; 7usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFwInfoTFwInfoList {
    pub fw_id: AmdsmiFwBlockT,
    pub fw_version: u64,
    pub reserved: [u64; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFwInfoTFwInfoList"][::std::mem::size_of::<AmdsmiFwInfoTFwInfoList>() - 32usize];
    ["Alignment of AmdsmiFwInfoTFwInfoList"]
        [::std::mem::align_of::<AmdsmiFwInfoTFwInfoList>() - 8usize];
    ["Offset of field: AmdsmiFwInfoTFwInfoList::fw_id"]
        [::std::mem::offset_of!(AmdsmiFwInfoTFwInfoList, fw_id) - 0usize];
    ["Offset of field: AmdsmiFwInfoTFwInfoList::fw_version"]
        [::std::mem::offset_of!(AmdsmiFwInfoTFwInfoList, fw_version) - 8usize];
    ["Offset of field: AmdsmiFwInfoTFwInfoList::reserved"]
        [::std::mem::offset_of!(AmdsmiFwInfoTFwInfoList, reserved) - 16usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFwInfoT"][::std::mem::size_of::<AmdsmiFwInfoT>() - 2568usize];
    ["Alignment of AmdsmiFwInfoT"][::std::mem::align_of::<AmdsmiFwInfoT>() - 8usize];
    ["Offset of field: AmdsmiFwInfoT::num_fw_info"]
        [::std::mem::offset_of!(AmdsmiFwInfoT, num_fw_info) - 0usize];
    ["Offset of field: AmdsmiFwInfoT::fw_info_list"]
        [::std::mem::offset_of!(AmdsmiFwInfoT, fw_info_list) - 8usize];
    ["Offset of field: AmdsmiFwInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiFwInfoT, reserved) - 2536usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiAsicInfoT {
    pub market_name: [::std::os::raw::c_char; 256usize],
    pub vendor_id: u32,
    pub vendor_name: [::std::os::raw::c_char; 256usize],
    pub subvendor_id: u32,
    pub device_id: u64,
    pub rev_id: u32,
    pub asic_serial: [::std::os::raw::c_char; 256usize],
    pub oam_id: u32,
    pub num_of_compute_units: u32,
    pub target_graphics_version: u64,
    pub reserved: [u32; 22usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiAsicInfoT"][::std::mem::size_of::<AmdsmiAsicInfoT>() - 896usize];
    ["Alignment of AmdsmiAsicInfoT"][::std::mem::align_of::<AmdsmiAsicInfoT>() - 8usize];
    ["Offset of field: AmdsmiAsicInfoT::market_name"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, market_name) - 0usize];
    ["Offset of field: AmdsmiAsicInfoT::vendor_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, vendor_id) - 256usize];
    ["Offset of field: AmdsmiAsicInfoT::vendor_name"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, vendor_name) - 260usize];
    ["Offset of field: AmdsmiAsicInfoT::subvendor_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, subvendor_id) - 516usize];
    ["Offset of field: AmdsmiAsicInfoT::device_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, device_id) - 520usize];
    ["Offset of field: AmdsmiAsicInfoT::rev_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, rev_id) - 528usize];
    ["Offset of field: AmdsmiAsicInfoT::asic_serial"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, asic_serial) - 532usize];
    ["Offset of field: AmdsmiAsicInfoT::oam_id"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, oam_id) - 788usize];
    ["Offset of field: AmdsmiAsicInfoT::num_of_compute_units"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, num_of_compute_units) - 792usize];
    ["Offset of field: AmdsmiAsicInfoT::target_graphics_version"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, target_graphics_version) - 800usize];
    ["Offset of field: AmdsmiAsicInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiAsicInfoT, reserved) - 808usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiKfdInfoT {
    pub kfd_id: u64,
    pub node_id: u32,
    pub current_partition_id: u32,
    pub reserved: [u32; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiKfdInfoT"][::std::mem::size_of::<AmdsmiKfdInfoT>() - 64usize];
    ["Alignment of AmdsmiKfdInfoT"][::std::mem::align_of::<AmdsmiKfdInfoT>() - 8usize];
    ["Offset of field: AmdsmiKfdInfoT::kfd_id"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, kfd_id) - 0usize];
    ["Offset of field: AmdsmiKfdInfoT::node_id"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, node_id) - 8usize];
    ["Offset of field: AmdsmiKfdInfoT::current_partition_id"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, current_partition_id) - 12usize];
    ["Offset of field: AmdsmiKfdInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiKfdInfoT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub union AmdsmiNpsCapsT {
    pub nps_flags: AmdsmiNpsCapsTNpsFlags,
    pub nps_cap_mask: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNpsCapsTNpsFlags {
    pub _bitfield_align_1: [u32; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNpsCapsTNpsFlags"][::std::mem::size_of::<AmdsmiNpsCapsTNpsFlags>() - 4usize];
    ["Alignment of AmdsmiNpsCapsTNpsFlags"]
        [::std::mem::align_of::<AmdsmiNpsCapsTNpsFlags>() - 4usize];
};
impl AmdsmiNpsCapsTNpsFlags {
    #[inline]
    pub fn nps1_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps1_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn nps2_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps2_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn nps4_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps4_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn nps8_cap(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_nps8_cap(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn reserved(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 28u8) as u32) }
    }
    #[inline]
    pub fn set_reserved(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(4usize, 28u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        nps1_cap: u32,
        nps2_cap: u32,
        nps4_cap: u32,
        nps8_cap: u32,
        reserved: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let nps1_cap: u32 = unsafe { ::std::mem::transmute(nps1_cap) };
            nps1_cap as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let nps2_cap: u32 = unsafe { ::std::mem::transmute(nps2_cap) };
            nps2_cap as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let nps4_cap: u32 = unsafe { ::std::mem::transmute(nps4_cap) };
            nps4_cap as u64
        });
        __bindgen_bitfield_unit.set(3usize, 1u8, {
            let nps8_cap: u32 = unsafe { ::std::mem::transmute(nps8_cap) };
            nps8_cap as u64
        });
        __bindgen_bitfield_unit.set(4usize, 28u8, {
            let reserved: u32 = unsafe { ::std::mem::transmute(reserved) };
            reserved as u64
        });
        __bindgen_bitfield_unit
    }
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNpsCapsT"][::std::mem::size_of::<AmdsmiNpsCapsT>() - 4usize];
    ["Alignment of AmdsmiNpsCapsT"][::std::mem::align_of::<AmdsmiNpsCapsT>() - 4usize];
    ["Offset of field: AmdsmiNpsCapsT::nps_flags"]
        [::std::mem::offset_of!(AmdsmiNpsCapsT, nps_flags) - 0usize];
    ["Offset of field: AmdsmiNpsCapsT::nps_cap_mask"]
        [::std::mem::offset_of!(AmdsmiNpsCapsT, nps_cap_mask) - 0usize];
};
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiAcceleratorPartitionProfileT {
    pub profile_type: AmdsmiAcceleratorPartitionTypeT,
    pub num_partitions: u32,
    pub memory_caps: AmdsmiNpsCapsT,
    pub profile_index: u32,
    pub num_resources: u32,
    pub resources: [[u32; 32usize]; 8usize],
    pub reserved: [u64; 13usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiAcceleratorPartitionProfileT"]
        [::std::mem::size_of::<AmdsmiAcceleratorPartitionProfileT>() - 1152usize];
    ["Alignment of AmdsmiAcceleratorPartitionProfileT"]
        [::std::mem::align_of::<AmdsmiAcceleratorPartitionProfileT>() - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::profile_type"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, profile_type) - 0usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::num_partitions"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, num_partitions) - 4usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::memory_caps"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, memory_caps) - 8usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::profile_index"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, profile_index) - 12usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::num_resources"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, num_resources) - 16usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::resources"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, resources) - 20usize];
    ["Offset of field: AmdsmiAcceleratorPartitionProfileT::reserved"]
        [::std::mem::offset_of!(AmdsmiAcceleratorPartitionProfileT, reserved) - 1048usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiLinkTypeT {
    AmdsmiLinkTypeInternal = 0,
    AmdsmiLinkTypeXgmi = 1,
    AmdsmiLinkTypePcie = 2,
    AmdsmiLinkTypeNotApplicable = 3,
    AmdsmiLinkTypeUnknown = 4,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiLinkMetricsT {
    pub num_links: u32,
    pub links: [AmdsmiLinkMetricsTLinks; 64usize],
    pub reserved: [u64; 7usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct AmdsmiLinkMetricsTLinks {
    pub bdf: AmdsmiBdfT,
    pub bit_rate: u32,
    pub max_bandwidth: u32,
    pub link_type: AmdsmiLinkTypeT,
    pub read: u64,
    pub write: u64,
    pub reserved: [u64; 2usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiLinkMetricsTLinks"][::std::mem::size_of::<AmdsmiLinkMetricsTLinks>() - 56usize];
    ["Alignment of AmdsmiLinkMetricsTLinks"]
        [::std::mem::align_of::<AmdsmiLinkMetricsTLinks>() - 8usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::bdf"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, bdf) - 0usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::bit_rate"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, bit_rate) - 8usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::max_bandwidth"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, max_bandwidth) - 12usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::link_type"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, link_type) - 16usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::read"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, read) - 24usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::write"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, write) - 32usize];
    ["Offset of field: AmdsmiLinkMetricsTLinks::reserved"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsTLinks, reserved) - 40usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiLinkMetricsT"][::std::mem::size_of::<AmdsmiLinkMetricsT>() - 3648usize];
    ["Alignment of AmdsmiLinkMetricsT"][::std::mem::align_of::<AmdsmiLinkMetricsT>() - 8usize];
    ["Offset of field: AmdsmiLinkMetricsT::num_links"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsT, num_links) - 0usize];
    ["Offset of field: AmdsmiLinkMetricsT::links"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsT, links) - 8usize];
    ["Offset of field: AmdsmiLinkMetricsT::reserved"]
        [::std::mem::offset_of!(AmdsmiLinkMetricsT, reserved) - 3592usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVramInfoT {
    pub vram_type: AmdsmiVramTypeT,
    pub vram_vendor: AmdsmiVramVendorTypeT,
    pub vram_size: u64,
    pub vram_bit_width: u32,
    pub reserved: [u64; 5usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVramInfoT"][::std::mem::size_of::<AmdsmiVramInfoT>() - 64usize];
    ["Alignment of AmdsmiVramInfoT"][::std::mem::align_of::<AmdsmiVramInfoT>() - 8usize];
    ["Offset of field: AmdsmiVramInfoT::vram_type"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_type) - 0usize];
    ["Offset of field: AmdsmiVramInfoT::vram_vendor"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_vendor) - 4usize];
    ["Offset of field: AmdsmiVramInfoT::vram_size"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_size) - 8usize];
    ["Offset of field: AmdsmiVramInfoT::vram_bit_width"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, vram_bit_width) - 16usize];
    ["Offset of field: AmdsmiVramInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiVramInfoT, reserved) - 24usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiDriverInfoT {
    pub driver_version: [::std::os::raw::c_char; 256usize],
    pub driver_date: [::std::os::raw::c_char; 256usize],
    pub driver_name: [::std::os::raw::c_char; 256usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiDriverInfoT"][::std::mem::size_of::<AmdsmiDriverInfoT>() - 768usize];
    ["Alignment of AmdsmiDriverInfoT"][::std::mem::align_of::<AmdsmiDriverInfoT>() - 1usize];
    ["Offset of field: AmdsmiDriverInfoT::driver_version"]
        [::std::mem::offset_of!(AmdsmiDriverInfoT, driver_version) - 0usize];
    ["Offset of field: AmdsmiDriverInfoT::driver_date"]
        [::std::mem::offset_of!(AmdsmiDriverInfoT, driver_date) - 256usize];
    ["Offset of field: AmdsmiDriverInfoT::driver_name"]
        [::std::mem::offset_of!(AmdsmiDriverInfoT, driver_name) - 512usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiBoardInfoT {
    pub model_number: [::std::os::raw::c_char; 256usize],
    pub product_serial: [::std::os::raw::c_char; 256usize],
    pub fru_id: [::std::os::raw::c_char; 256usize],
    pub product_name: [::std::os::raw::c_char; 256usize],
    pub manufacturer_name: [::std::os::raw::c_char; 256usize],
    pub reserved: [u64; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiBoardInfoT"][::std::mem::size_of::<AmdsmiBoardInfoT>() - 1536usize];
    ["Alignment of AmdsmiBoardInfoT"][::std::mem::align_of::<AmdsmiBoardInfoT>() - 8usize];
    ["Offset of field: AmdsmiBoardInfoT::model_number"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, model_number) - 0usize];
    ["Offset of field: AmdsmiBoardInfoT::product_serial"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, product_serial) - 256usize];
    ["Offset of field: AmdsmiBoardInfoT::fru_id"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, fru_id) - 512usize];
    ["Offset of field: AmdsmiBoardInfoT::product_name"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, product_name) - 768usize];
    ["Offset of field: AmdsmiBoardInfoT::manufacturer_name"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, manufacturer_name) - 1024usize];
    ["Offset of field: AmdsmiBoardInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiBoardInfoT, reserved) - 1280usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPowerInfoT {
    pub current_socket_power: u32,
    pub average_socket_power: u32,
    pub gfx_voltage: u32,
    pub soc_voltage: u32,
    pub mem_voltage: u32,
    pub power_limit: u32,
    pub reserved: [u32; 11usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPowerInfoT"][::std::mem::size_of::<AmdsmiPowerInfoT>() - 68usize];
    ["Alignment of AmdsmiPowerInfoT"][::std::mem::align_of::<AmdsmiPowerInfoT>() - 4usize];
    ["Offset of field: AmdsmiPowerInfoT::current_socket_power"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, current_socket_power) - 0usize];
    ["Offset of field: AmdsmiPowerInfoT::average_socket_power"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, average_socket_power) - 4usize];
    ["Offset of field: AmdsmiPowerInfoT::gfx_voltage"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, gfx_voltage) - 8usize];
    ["Offset of field: AmdsmiPowerInfoT::soc_voltage"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, soc_voltage) - 12usize];
    ["Offset of field: AmdsmiPowerInfoT::mem_voltage"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, mem_voltage) - 16usize];
    ["Offset of field: AmdsmiPowerInfoT::power_limit"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, power_limit) - 20usize];
    ["Offset of field: AmdsmiPowerInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiPowerInfoT, reserved) - 24usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiClkInfoT {
    pub clk: u32,
    pub min_clk: u32,
    pub max_clk: u32,
    pub clk_locked: u8,
    pub clk_deep_sleep: u8,
    pub reserved: [u32; 4usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiClkInfoT"][::std::mem::size_of::<AmdsmiClkInfoT>() - 32usize];
    ["Alignment of AmdsmiClkInfoT"][::std::mem::align_of::<AmdsmiClkInfoT>() - 4usize];
    ["Offset of field: AmdsmiClkInfoT::clk"][::std::mem::offset_of!(AmdsmiClkInfoT, clk) - 0usize];
    ["Offset of field: AmdsmiClkInfoT::min_clk"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, min_clk) - 4usize];
    ["Offset of field: AmdsmiClkInfoT::max_clk"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, max_clk) - 8usize];
    ["Offset of field: AmdsmiClkInfoT::clk_locked"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, clk_locked) - 12usize];
    ["Offset of field: AmdsmiClkInfoT::clk_deep_sleep"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, clk_deep_sleep) - 13usize];
    ["Offset of field: AmdsmiClkInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiClkInfoT, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiEngineUsageT {
    pub gfx_activity: u32,
    pub umc_activity: u32,
    pub mm_activity: u32,
    pub reserved: [u32; 13usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiEngineUsageT"][::std::mem::size_of::<AmdsmiEngineUsageT>() - 64usize];
    ["Alignment of AmdsmiEngineUsageT"][::std::mem::align_of::<AmdsmiEngineUsageT>() - 4usize];
    ["Offset of field: AmdsmiEngineUsageT::gfx_activity"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, gfx_activity) - 0usize];
    ["Offset of field: AmdsmiEngineUsageT::umc_activity"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, umc_activity) - 4usize];
    ["Offset of field: AmdsmiEngineUsageT::mm_activity"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, mm_activity) - 8usize];
    ["Offset of field: AmdsmiEngineUsageT::reserved"]
        [::std::mem::offset_of!(AmdsmiEngineUsageT, reserved) - 12usize];
};
pub type AmdsmiProcessHandleT = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoT {
    pub name: [::std::os::raw::c_char; 256usize],
    pub pid: AmdsmiProcessHandleT,
    pub mem: u64,
    pub engine_usage: AmdsmiProcInfoTEngineUsage,
    pub memory_usage: AmdsmiProcInfoTMemoryUsage,
    pub container_name: [::std::os::raw::c_char; 256usize],
    pub reserved: [u32; 12usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoTEngineUsage {
    pub gfx: u64,
    pub enc: u64,
    pub reserved: [u32; 12usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoTEngineUsage"]
        [::std::mem::size_of::<AmdsmiProcInfoTEngineUsage>() - 64usize];
    ["Alignment of AmdsmiProcInfoTEngineUsage"]
        [::std::mem::align_of::<AmdsmiProcInfoTEngineUsage>() - 8usize];
    ["Offset of field: AmdsmiProcInfoTEngineUsage::gfx"]
        [::std::mem::offset_of!(AmdsmiProcInfoTEngineUsage, gfx) - 0usize];
    ["Offset of field: AmdsmiProcInfoTEngineUsage::enc"]
        [::std::mem::offset_of!(AmdsmiProcInfoTEngineUsage, enc) - 8usize];
    ["Offset of field: AmdsmiProcInfoTEngineUsage::reserved"]
        [::std::mem::offset_of!(AmdsmiProcInfoTEngineUsage, reserved) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcInfoTMemoryUsage {
    pub gtt_mem: u64,
    pub cpu_mem: u64,
    pub vram_mem: u64,
    pub reserved: [u32; 10usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoTMemoryUsage"]
        [::std::mem::size_of::<AmdsmiProcInfoTMemoryUsage>() - 64usize];
    ["Alignment of AmdsmiProcInfoTMemoryUsage"]
        [::std::mem::align_of::<AmdsmiProcInfoTMemoryUsage>() - 8usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::gtt_mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, gtt_mem) - 0usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::cpu_mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, cpu_mem) - 8usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::vram_mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, vram_mem) - 16usize];
    ["Offset of field: AmdsmiProcInfoTMemoryUsage::reserved"]
        [::std::mem::offset_of!(AmdsmiProcInfoTMemoryUsage, reserved) - 24usize];
};
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcInfoT"][::std::mem::size_of::<AmdsmiProcInfoT>() - 704usize];
    ["Alignment of AmdsmiProcInfoT"][::std::mem::align_of::<AmdsmiProcInfoT>() - 8usize];
    ["Offset of field: AmdsmiProcInfoT::name"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, name) - 0usize];
    ["Offset of field: AmdsmiProcInfoT::pid"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, pid) - 256usize];
    ["Offset of field: AmdsmiProcInfoT::mem"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, mem) - 264usize];
    ["Offset of field: AmdsmiProcInfoT::engine_usage"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, engine_usage) - 272usize];
    ["Offset of field: AmdsmiProcInfoT::memory_usage"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, memory_usage) - 336usize];
    ["Offset of field: AmdsmiProcInfoT::container_name"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, container_name) - 400usize];
    ["Offset of field: AmdsmiProcInfoT::reserved"]
        [::std::mem::offset_of!(AmdsmiProcInfoT, reserved) - 656usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiP2pCapabilityT {
    pub is_iolink_coherent: u8,
    pub is_iolink_atomics_32bit: u8,
    pub is_iolink_atomics_64bit: u8,
    pub is_iolink_dma: u8,
    pub is_iolink_bi_directional: u8,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiP2pCapabilityT"][::std::mem::size_of::<AmdsmiP2pCapabilityT>() - 5usize];
    ["Alignment of AmdsmiP2pCapabilityT"][::std::mem::align_of::<AmdsmiP2pCapabilityT>() - 1usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_coherent"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_coherent) - 0usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_atomics_32bit"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_atomics_32bit) - 1usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_atomics_64bit"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_atomics_64bit) - 2usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_dma"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_dma) - 3usize];
    ["Offset of field: AmdsmiP2pCapabilityT::is_iolink_bi_directional"]
        [::std::mem::offset_of!(AmdsmiP2pCapabilityT, is_iolink_bi_directional) - 4usize];
};
impl AmdsmiDevPerfLevelT {
    pub const AmdsmiDevPerfLevelFirst: AmdsmiDevPerfLevelT =
        AmdsmiDevPerfLevelT::AmdsmiDevPerfLevelAuto;
}
impl AmdsmiDevPerfLevelT {
    pub const AmdsmiDevPerfLevelLast: AmdsmiDevPerfLevelT =
        AmdsmiDevPerfLevelT::AmdsmiDevPerfLevelDeterminism;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiDevPerfLevelT {
    AmdsmiDevPerfLevelAuto = 0,
    AmdsmiDevPerfLevelLow = 1,
    AmdsmiDevPerfLevelHigh = 2,
    AmdsmiDevPerfLevelManual = 3,
    AmdsmiDevPerfLevelStableStd = 4,
    AmdsmiDevPerfLevelStablePeak = 5,
    AmdsmiDevPerfLevelStableMinMclk = 6,
    AmdsmiDevPerfLevelStableMinSclk = 7,
    AmdsmiDevPerfLevelDeterminism = 8,
    AmdsmiDevPerfLevelUnknown = 256,
}
pub type AmdsmiEventHandleT = usize;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiEventGroupT {
    AmdsmiEvntGrpXgmi = 0,
    AmdsmiEvntGrpXgmiDataOut = 10,
    AmdsmiEvntGrpInvalid = 4294967295,
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiFirst: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntFirst;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmi0NopTx: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntFirst;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiLast: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntXgmi1BeatsTx;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiDataOut0: AmdsmiEventTypeT =
        AmdsmiEventTypeT::AmdsmiEvntXgmiDataOutFirst;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntXgmiDataOutLast: AmdsmiEventTypeT =
        AmdsmiEventTypeT::AmdsmiEvntXgmiDataOut5;
}
impl AmdsmiEventTypeT {
    pub const AmdsmiEvntLast: AmdsmiEventTypeT = AmdsmiEventTypeT::AmdsmiEvntXgmiDataOut5;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiEventTypeT {
    AmdsmiEvntFirst = 0,
    AmdsmiEvntXgmi0RequestTx = 1,
    AmdsmiEvntXgmi0ResponseTx = 2,
    AmdsmiEvntXgmi0BeatsTx = 3,
    AmdsmiEvntXgmi1NopTx = 4,
    AmdsmiEvntXgmi1RequestTx = 5,
    AmdsmiEvntXgmi1ResponseTx = 6,
    AmdsmiEvntXgmi1BeatsTx = 7,
    AmdsmiEvntXgmiDataOutFirst = 10,
    AmdsmiEvntXgmiDataOut1 = 11,
    AmdsmiEvntXgmiDataOut2 = 12,
    AmdsmiEvntXgmiDataOut3 = 13,
    AmdsmiEvntXgmiDataOut4 = 14,
    AmdsmiEvntXgmiDataOut5 = 15,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiCounterCommandT {
    AmdsmiCntrCmdStart = 0,
    AmdsmiCntrCmdStop = 1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiCounterValueT {
    pub value: u64,
    pub time_enabled: u64,
    pub time_running: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiCounterValueT"][::std::mem::size_of::<AmdsmiCounterValueT>() - 24usize];
    ["Alignment of AmdsmiCounterValueT"][::std::mem::align_of::<AmdsmiCounterValueT>() - 8usize];
    ["Offset of field: AmdsmiCounterValueT::value"]
        [::std::mem::offset_of!(AmdsmiCounterValueT, value) - 0usize];
    ["Offset of field: AmdsmiCounterValueT::time_enabled"]
        [::std::mem::offset_of!(AmdsmiCounterValueT, time_enabled) - 8usize];
    ["Offset of field: AmdsmiCounterValueT::time_running"]
        [::std::mem::offset_of!(AmdsmiCounterValueT, time_running) - 16usize];
};
impl AmdsmiEvtNotificationTypeT {
    pub const AmdsmiEvtNotifFirst: AmdsmiEvtNotificationTypeT =
        AmdsmiEvtNotificationTypeT::AmdsmiEvtNotifVmfault;
}
impl AmdsmiEvtNotificationTypeT {
    pub const AmdsmiEvtNotifLast: AmdsmiEvtNotificationTypeT =
        AmdsmiEvtNotificationTypeT::AmdsmiEvtNotifRingHang;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiEvtNotificationTypeT {
    AmdsmiEvtNotifNone = 0,
    AmdsmiEvtNotifVmfault = 1,
    AmdsmiEvtNotifThermalThrottle = 2,
    AmdsmiEvtNotifGpuPreReset = 3,
    AmdsmiEvtNotifGpuPostReset = 4,
    AmdsmiEvtNotifRingHang = 5,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiEvtNotificationDataT {
    pub processor_handle: AmdsmiProcessorHandle,
    pub event: AmdsmiEvtNotificationTypeT,
    pub message: [::std::os::raw::c_char; 64usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiEvtNotificationDataT"]
        [::std::mem::size_of::<AmdsmiEvtNotificationDataT>() - 80usize];
    ["Alignment of AmdsmiEvtNotificationDataT"]
        [::std::mem::align_of::<AmdsmiEvtNotificationDataT>() - 8usize];
    ["Offset of field: AmdsmiEvtNotificationDataT::processor_handle"]
        [::std::mem::offset_of!(AmdsmiEvtNotificationDataT, processor_handle) - 0usize];
    ["Offset of field: AmdsmiEvtNotificationDataT::event"]
        [::std::mem::offset_of!(AmdsmiEvtNotificationDataT, event) - 8usize];
    ["Offset of field: AmdsmiEvtNotificationDataT::message"]
        [::std::mem::offset_of!(AmdsmiEvtNotificationDataT, message) - 12usize];
};
impl AmdsmiTemperatureMetricT {
    pub const AmdsmiTempFirst: AmdsmiTemperatureMetricT =
        AmdsmiTemperatureMetricT::AmdsmiTempCurrent;
}
impl AmdsmiTemperatureMetricT {
    pub const AmdsmiTempLast: AmdsmiTemperatureMetricT =
        AmdsmiTemperatureMetricT::AmdsmiTempHighest;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiTemperatureMetricT {
    AmdsmiTempCurrent = 0,
    AmdsmiTempMax = 1,
    AmdsmiTempMin = 2,
    AmdsmiTempMaxHyst = 3,
    AmdsmiTempMinHyst = 4,
    AmdsmiTempCritical = 5,
    AmdsmiTempCriticalHyst = 6,
    AmdsmiTempEmergency = 7,
    AmdsmiTempEmergencyHyst = 8,
    AmdsmiTempCritMin = 9,
    AmdsmiTempCritMinHyst = 10,
    AmdsmiTempOffset = 11,
    AmdsmiTempLowest = 12,
    AmdsmiTempHighest = 13,
}
impl AmdsmiVoltageMetricT {
    pub const AmdsmiVoltFirst: AmdsmiVoltageMetricT = AmdsmiVoltageMetricT::AmdsmiVoltCurrent;
}
impl AmdsmiVoltageMetricT {
    pub const AmdsmiVoltLast: AmdsmiVoltageMetricT = AmdsmiVoltageMetricT::AmdsmiVoltHighest;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVoltageMetricT {
    AmdsmiVoltCurrent = 0,
    AmdsmiVoltMax = 1,
    AmdsmiVoltMinCrit = 2,
    AmdsmiVoltMin = 3,
    AmdsmiVoltMaxCrit = 4,
    AmdsmiVoltAverage = 5,
    AmdsmiVoltLowest = 6,
    AmdsmiVoltHighest = 7,
}
impl AmdsmiVoltageTypeT {
    pub const AmdsmiVoltTypeVddgfx: AmdsmiVoltageTypeT = AmdsmiVoltageTypeT::AmdsmiVoltTypeFirst;
}
impl AmdsmiVoltageTypeT {
    pub const AmdsmiVoltTypeLast: AmdsmiVoltageTypeT = AmdsmiVoltageTypeT::AmdsmiVoltTypeFirst;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiVoltageTypeT {
    AmdsmiVoltTypeFirst = 0,
    AmdsmiVoltTypeInvalid = 4294967295,
}
impl AmdsmiPowerProfilePresetMasksT {
    pub const AmdsmiPwrProfPrstLast: AmdsmiPowerProfilePresetMasksT =
        AmdsmiPowerProfilePresetMasksT::AmdsmiPwrProfPrstBootupDefault;
}
#[repr(u64)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiPowerProfilePresetMasksT {
    AmdsmiPwrProfPrstCustomMask = 1,
    AmdsmiPwrProfPrstVideoMask = 2,
    AmdsmiPwrProfPrstPowerSavingMask = 4,
    AmdsmiPwrProfPrstComputeMask = 8,
    AmdsmiPwrProfPrstVrMask = 16,
    AmdsmiPwrProfPrst3dFullScrMask = 32,
    AmdsmiPwrProfPrstBootupDefault = 64,
    AmdsmiPwrProfPrstInvalid = 18446744073709551615,
}
impl AmdsmiGpuBlockT {
    pub const AmdsmiGpuBlockUmc: AmdsmiGpuBlockT = AmdsmiGpuBlockT::AmdsmiGpuBlockFirst;
}
impl AmdsmiGpuBlockT {
    pub const AmdsmiGpuBlockLast: AmdsmiGpuBlockT = AmdsmiGpuBlockT::AmdsmiGpuBlockMpio;
}
#[repr(u64)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiGpuBlockT {
    AmdsmiGpuBlockInvalid = 0,
    AmdsmiGpuBlockFirst = 1,
    AmdsmiGpuBlockSdma = 2,
    AmdsmiGpuBlockGfx = 4,
    AmdsmiGpuBlockMmhub = 8,
    AmdsmiGpuBlockAthub = 16,
    AmdsmiGpuBlockPcieBif = 32,
    AmdsmiGpuBlockHdp = 64,
    AmdsmiGpuBlockXgmiWafl = 128,
    AmdsmiGpuBlockDf = 256,
    AmdsmiGpuBlockSmn = 512,
    AmdsmiGpuBlockSem = 1024,
    AmdsmiGpuBlockMp0 = 2048,
    AmdsmiGpuBlockMp1 = 4096,
    AmdsmiGpuBlockFuse = 8192,
    AmdsmiGpuBlockMca = 16384,
    AmdsmiGpuBlockVcn = 32768,
    AmdsmiGpuBlockJpeg = 65536,
    AmdsmiGpuBlockIh = 131072,
    AmdsmiGpuBlockMpio = 262144,
    AmdsmiGpuBlockReserved = 9223372036854775808,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiClkLimitTypeT {
    ClkLimitMin = 0,
    ClkLimitMax = 1,
}
impl AmdsmiRasErrStateT {
    pub const AmdsmiRasErrStateLast: AmdsmiRasErrStateT =
        AmdsmiRasErrStateT::AmdsmiRasErrStateEnabled;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiRasErrStateT {
    AmdsmiRasErrStateNone = 0,
    AmdsmiRasErrStateDisabled = 1,
    AmdsmiRasErrStateParity = 2,
    AmdsmiRasErrStateSingC = 3,
    AmdsmiRasErrStateMultUc = 4,
    AmdsmiRasErrStatePoison = 5,
    AmdsmiRasErrStateEnabled = 6,
    AmdsmiRasErrStateInvalid = 4294967295,
}
impl AmdsmiMemoryTypeT {
    pub const AmdsmiMemTypeVram: AmdsmiMemoryTypeT = AmdsmiMemoryTypeT::AmdsmiMemTypeFirst;
}
impl AmdsmiMemoryTypeT {
    pub const AmdsmiMemTypeLast: AmdsmiMemoryTypeT = AmdsmiMemoryTypeT::AmdsmiMemTypeGtt;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMemoryTypeT {
    AmdsmiMemTypeFirst = 0,
    AmdsmiMemTypeVisVram = 1,
    AmdsmiMemTypeGtt = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiFreqIndT {
    AmdsmiFreqIndMin = 0,
    AmdsmiFreqIndMax = 1,
    AmdsmiFreqIndInvalid = 4294967295,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiXgmiStatusT {
    AmdsmiXgmiStatusNoErrors = 0,
    AmdsmiXgmiStatusError = 1,
    AmdsmiXgmiStatusMultipleErrors = 2,
}
pub type AmdsmiBitFieldT = u64;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiMemoryPageStatusT {
    AmdsmiMemPageStatusReserved = 0,
    AmdsmiMemPageStatusPending = 1,
    AmdsmiMemPageStatusUnreservable = 2,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiIoLinkTypeT {
    AmdsmiIolinkTypeUndefined = 0,
    AmdsmiIolinkTypePciexpress = 1,
    AmdsmiIolinkTypeXgmi = 2,
    AmdsmiIolinkTypeNumiolinktypes = 3,
    AmdsmiIolinkTypeSize = 4294967295,
}
impl AmdsmiUtilizationCounterTypeT {
    pub const AmdsmiCoarseGrainGfxActivity: AmdsmiUtilizationCounterTypeT =
        AmdsmiUtilizationCounterTypeT::AmdsmiUtilizationCounterFirst;
}
impl AmdsmiUtilizationCounterTypeT {
    pub const AmdsmiUtilizationCounterLast: AmdsmiUtilizationCounterTypeT =
        AmdsmiUtilizationCounterTypeT::AmdsmiFineDecoderActivity;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiUtilizationCounterTypeT {
    AmdsmiUtilizationCounterFirst = 0,
    AmdsmiCoarseGrainMemActivity = 1,
    AmdsmiCoarseDecoderActivity = 2,
    AmdsmiFineGrainGfxActivity = 100,
    AmdsmiFineGrainMemActivity = 101,
    AmdsmiFineDecoderActivity = 102,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiPowerTypeT {
    AmdsmiAveragePower = 0,
    AmdsmiCurrentPower = 1,
    AmdsmiInvalidPower = 4294967295,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiUtilizationCounterT {
    pub type_: AmdsmiUtilizationCounterTypeT,
    pub value: u64,
    pub fine_value: [u64; 4usize],
    pub fine_value_count: u16,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiUtilizationCounterT"]
        [::std::mem::size_of::<AmdsmiUtilizationCounterT>() - 56usize];
    ["Alignment of AmdsmiUtilizationCounterT"]
        [::std::mem::align_of::<AmdsmiUtilizationCounterT>() - 8usize];
    ["Offset of field: AmdsmiUtilizationCounterT::type_"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, type_) - 0usize];
    ["Offset of field: AmdsmiUtilizationCounterT::value"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, value) - 8usize];
    ["Offset of field: AmdsmiUtilizationCounterT::fine_value"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, fine_value) - 16usize];
    ["Offset of field: AmdsmiUtilizationCounterT::fine_value_count"]
        [::std::mem::offset_of!(AmdsmiUtilizationCounterT, fine_value_count) - 48usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRetiredPageRecordT {
    pub page_address: u64,
    pub page_size: u64,
    pub status: AmdsmiMemoryPageStatusT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRetiredPageRecordT"]
        [::std::mem::size_of::<AmdsmiRetiredPageRecordT>() - 24usize];
    ["Alignment of AmdsmiRetiredPageRecordT"]
        [::std::mem::align_of::<AmdsmiRetiredPageRecordT>() - 8usize];
    ["Offset of field: AmdsmiRetiredPageRecordT::page_address"]
        [::std::mem::offset_of!(AmdsmiRetiredPageRecordT, page_address) - 0usize];
    ["Offset of field: AmdsmiRetiredPageRecordT::page_size"]
        [::std::mem::offset_of!(AmdsmiRetiredPageRecordT, page_size) - 8usize];
    ["Offset of field: AmdsmiRetiredPageRecordT::status"]
        [::std::mem::offset_of!(AmdsmiRetiredPageRecordT, status) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPowerProfileStatusT {
    pub available_profiles: AmdsmiBitFieldT,
    pub current: AmdsmiPowerProfilePresetMasksT,
    pub num_profiles: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPowerProfileStatusT"]
        [::std::mem::size_of::<AmdsmiPowerProfileStatusT>() - 24usize];
    ["Alignment of AmdsmiPowerProfileStatusT"]
        [::std::mem::align_of::<AmdsmiPowerProfileStatusT>() - 8usize];
    ["Offset of field: AmdsmiPowerProfileStatusT::available_profiles"]
        [::std::mem::offset_of!(AmdsmiPowerProfileStatusT, available_profiles) - 0usize];
    ["Offset of field: AmdsmiPowerProfileStatusT::current"]
        [::std::mem::offset_of!(AmdsmiPowerProfileStatusT, current) - 8usize];
    ["Offset of field: AmdsmiPowerProfileStatusT::num_profiles"]
        [::std::mem::offset_of!(AmdsmiPowerProfileStatusT, num_profiles) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFrequenciesT {
    pub has_deep_sleep: bool,
    pub num_supported: u32,
    pub current: u32,
    pub frequency: [u64; 33usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFrequenciesT"][::std::mem::size_of::<AmdsmiFrequenciesT>() - 280usize];
    ["Alignment of AmdsmiFrequenciesT"][::std::mem::align_of::<AmdsmiFrequenciesT>() - 8usize];
    ["Offset of field: AmdsmiFrequenciesT::has_deep_sleep"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, has_deep_sleep) - 0usize];
    ["Offset of field: AmdsmiFrequenciesT::num_supported"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, num_supported) - 4usize];
    ["Offset of field: AmdsmiFrequenciesT::current"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, current) - 8usize];
    ["Offset of field: AmdsmiFrequenciesT::frequency"]
        [::std::mem::offset_of!(AmdsmiFrequenciesT, frequency) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiDpmPolicyEntryT {
    pub policy_id: u32,
    pub policy_description: [::std::os::raw::c_char; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiDpmPolicyEntryT"][::std::mem::size_of::<AmdsmiDpmPolicyEntryT>() - 36usize];
    ["Alignment of AmdsmiDpmPolicyEntryT"]
        [::std::mem::align_of::<AmdsmiDpmPolicyEntryT>() - 4usize];
    ["Offset of field: AmdsmiDpmPolicyEntryT::policy_id"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyEntryT, policy_id) - 0usize];
    ["Offset of field: AmdsmiDpmPolicyEntryT::policy_description"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyEntryT, policy_description) - 4usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiDpmPolicyT {
    pub num_supported: u32,
    pub current: u32,
    pub policies: [AmdsmiDpmPolicyEntryT; 32usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiDpmPolicyT"][::std::mem::size_of::<AmdsmiDpmPolicyT>() - 1160usize];
    ["Alignment of AmdsmiDpmPolicyT"][::std::mem::align_of::<AmdsmiDpmPolicyT>() - 4usize];
    ["Offset of field: AmdsmiDpmPolicyT::num_supported"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyT, num_supported) - 0usize];
    ["Offset of field: AmdsmiDpmPolicyT::current"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyT, current) - 4usize];
    ["Offset of field: AmdsmiDpmPolicyT::policies"]
        [::std::mem::offset_of!(AmdsmiDpmPolicyT, policies) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiPcieBandwidthT {
    pub transfer_rate: AmdsmiFrequenciesT,
    pub lanes: [u32; 33usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiPcieBandwidthT"][::std::mem::size_of::<AmdsmiPcieBandwidthT>() - 416usize];
    ["Alignment of AmdsmiPcieBandwidthT"][::std::mem::align_of::<AmdsmiPcieBandwidthT>() - 8usize];
    ["Offset of field: AmdsmiPcieBandwidthT::transfer_rate"]
        [::std::mem::offset_of!(AmdsmiPcieBandwidthT, transfer_rate) - 0usize];
    ["Offset of field: AmdsmiPcieBandwidthT::lanes"]
        [::std::mem::offset_of!(AmdsmiPcieBandwidthT, lanes) - 280usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiVersionT {
    pub year: u32,
    pub major: u32,
    pub minor: u32,
    pub release: u32,
    pub build: *const ::std::os::raw::c_char,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiVersionT"][::std::mem::size_of::<AmdsmiVersionT>() - 24usize];
    ["Alignment of AmdsmiVersionT"][::std::mem::align_of::<AmdsmiVersionT>() - 8usize];
    ["Offset of field: AmdsmiVersionT::year"]
    ["Offset of field: AmdsmiVersionT::major"]
        [::std::mem::offset_of!(AmdsmiVersionT, major) - 4usize];
    ["Offset of field: AmdsmiVersionT::minor"]
        [::std::mem::offset_of!(AmdsmiVersionT, minor) - 8usize];
    ["Offset of field: AmdsmiVersionT::release"]
        [::std::mem::offset_of!(AmdsmiVersionT, release) - 12usize];
    ["Offset of field: AmdsmiVersionT::build"]
        [::std::mem::offset_of!(AmdsmiVersionT, build) - 16usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiOdVddcPointT {
    pub frequency: u64,
    pub voltage: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiOdVddcPointT"][::std::mem::size_of::<AmdsmiOdVddcPointT>() - 16usize];
    ["Alignment of AmdsmiOdVddcPointT"][::std::mem::align_of::<AmdsmiOdVddcPointT>() - 8usize];
    ["Offset of field: AmdsmiOdVddcPointT::frequency"]
        [::std::mem::offset_of!(AmdsmiOdVddcPointT, frequency) - 0usize];
    ["Offset of field: AmdsmiOdVddcPointT::voltage"]
        [::std::mem::offset_of!(AmdsmiOdVddcPointT, voltage) - 8usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiFreqVoltRegionT {
    pub freq_range: AmdsmiRangeT,
    pub volt_range: AmdsmiRangeT,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiFreqVoltRegionT"][::std::mem::size_of::<AmdsmiFreqVoltRegionT>() - 64usize];
    ["Alignment of AmdsmiFreqVoltRegionT"]
        [::std::mem::align_of::<AmdsmiFreqVoltRegionT>() - 8usize];
    ["Offset of field: AmdsmiFreqVoltRegionT::freq_range"]
        [::std::mem::offset_of!(AmdsmiFreqVoltRegionT, freq_range) - 0usize];
    ["Offset of field: AmdsmiFreqVoltRegionT::volt_range"]
        [::std::mem::offset_of!(AmdsmiFreqVoltRegionT, volt_range) - 32usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiOdVoltCurveT {
    pub vc_points: [AmdsmiOdVddcPointT; 3usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiOdVoltCurveT"][::std::mem::size_of::<AmdsmiOdVoltCurveT>() - 48usize];
    ["Alignment of AmdsmiOdVoltCurveT"][::std::mem::align_of::<AmdsmiOdVoltCurveT>() - 8usize];
    ["Offset of field: AmdsmiOdVoltCurveT::vc_points"]
        [::std::mem::offset_of!(AmdsmiOdVoltCurveT, vc_points) - 0usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiOdVoltFreqDataT {
    pub curr_sclk_range: AmdsmiRangeT,
    pub curr_mclk_range: AmdsmiRangeT,
    pub sclk_freq_limits: AmdsmiRangeT,
    pub mclk_freq_limits: AmdsmiRangeT,
    pub curve: AmdsmiOdVoltCurveT,
    pub num_regions: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiOdVoltFreqDataT"][::std::mem::size_of::<AmdsmiOdVoltFreqDataT>() - 184usize];
    ["Alignment of AmdsmiOdVoltFreqDataT"]
        [::std::mem::align_of::<AmdsmiOdVoltFreqDataT>() - 8usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curr_sclk_range"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curr_sclk_range) - 0usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curr_mclk_range"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curr_mclk_range) - 32usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::sclk_freq_limits"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, sclk_freq_limits) - 64usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::mclk_freq_limits"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, mclk_freq_limits) - 96usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::curve"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, curve) - 128usize];
    ["Offset of field: AmdsmiOdVoltFreqDataT::num_regions"]
        [::std::mem::offset_of!(AmdsmiOdVoltFreqDataT, num_regions) - 176usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdMetricsTableHeaderT {
    pub structure_size: u16,
    pub format_revision: u8,
    pub content_revision: u8,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdMetricsTableHeaderT"][::std::mem::size_of::<AmdMetricsTableHeaderT>() - 4usize];
    ["Alignment of AmdMetricsTableHeaderT"]
        [::std::mem::align_of::<AmdMetricsTableHeaderT>() - 2usize];
    ["Offset of field: AmdMetricsTableHeaderT::structure_size"]
        [::std::mem::offset_of!(AmdMetricsTableHeaderT, structure_size) - 0usize];
    ["Offset of field: AmdMetricsTableHeaderT::format_revision"]
        [::std::mem::offset_of!(AmdMetricsTableHeaderT, format_revision) - 2usize];
    ["Offset of field: AmdMetricsTableHeaderT::content_revision"]
        [::std::mem::offset_of!(AmdMetricsTableHeaderT, content_revision) - 3usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuXcpMetricsT {
    pub gfx_busy_inst: [u32; 8usize],
    pub jpeg_busy: [u16; 32usize],
    pub vcn_busy: [u16; 4usize],
    pub gfx_busy_acc: [u64; 8usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuXcpMetricsT"][::std::mem::size_of::<AmdsmiGpuXcpMetricsT>() - 168usize];
    ["Alignment of AmdsmiGpuXcpMetricsT"][::std::mem::align_of::<AmdsmiGpuXcpMetricsT>() - 8usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_busy_inst"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_busy_inst) - 0usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::jpeg_busy"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, jpeg_busy) - 32usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::vcn_busy"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, vcn_busy) - 96usize];
    ["Offset of field: AmdsmiGpuXcpMetricsT::gfx_busy_acc"]
        [::std::mem::offset_of!(AmdsmiGpuXcpMetricsT, gfx_busy_acc) - 104usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiGpuMetricsT {
    pub common_header: AmdMetricsTableHeaderT,
    pub temperature_edge: u16,
    pub temperature_hotspot: u16,
    pub temperature_mem: u16,
    pub temperature_vrgfx: u16,
    pub temperature_vrsoc: u16,
    pub temperature_vrmem: u16,
    pub average_gfx_activity: u16,
    pub average_umc_activity: u16,
    pub average_mm_activity: u16,
    pub average_socket_power: u16,
    pub energy_accumulator: u64,
    pub system_clock_counter: u64,
    pub average_gfxclk_frequency: u16,
    pub average_socclk_frequency: u16,
    pub average_uclk_frequency: u16,
    pub average_vclk0_frequency: u16,
    pub average_dclk0_frequency: u16,
    pub average_vclk1_frequency: u16,
    pub average_dclk1_frequency: u16,
    pub current_gfxclk: u16,
    pub current_socclk: u16,
    pub current_uclk: u16,
    pub current_vclk0: u16,
    pub current_dclk0: u16,
    pub current_vclk1: u16,
    pub current_dclk1: u16,
    pub throttle_status: u32,
    pub current_fan_speed: u16,
    pub pcie_link_width: u16,
    pub pcie_link_speed: u16,
    pub gfx_activity_acc: u32,
    pub mem_activity_acc: u32,
    pub temperature_hbm: [u16; 4usize],
    pub firmware_timestamp: u64,
    pub voltage_soc: u16,
    pub voltage_gfx: u16,
    pub voltage_mem: u16,
    pub indep_throttle_status: u64,
    pub current_socket_power: u16,
    pub vcn_activity: [u16; 4usize],
    pub gfxclk_lock_status: u32,
    pub xgmi_link_width: u16,
    pub xgmi_link_speed: u16,
    pub pcie_bandwidth_acc: u64,
    pub pcie_bandwidth_inst: u64,
    pub pcie_l0_to_recov_count_acc: u64,
    pub pcie_replay_count_acc: u64,
    pub pcie_replay_rover_count_acc: u64,
    pub xgmi_read_data_acc: [u64; 8usize],
    pub xgmi_write_data_acc: [u64; 8usize],
    pub current_gfxclks: [u16; 8usize],
    pub current_socclks: [u16; 4usize],
    pub current_vclk0s: [u16; 4usize],
    pub current_dclk0s: [u16; 4usize],
    pub jpeg_activity: [u16; 32usize],
    pub pcie_nak_sent_count_acc: u32,
    pub pcie_nak_rcvd_count_acc: u32,
    pub accumulation_counter: u64,
    pub prochot_residency_acc: u64,
    pub ppt_residency_acc: u64,
    pub socket_thm_residency_acc: u64,
    pub vr_thm_residency_acc: u64,
    pub hbm_thm_residency_acc: u64,
    pub num_partition: u16,
    pub xcp_stats: [AmdsmiGpuXcpMetricsT; 8usize],
    pub pcie_lc_perf_other_end_recovery: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiGpuMetricsT"][::std::mem::size_of::<AmdsmiGpuMetricsT>() - 1832usize];
    ["Alignment of AmdsmiGpuMetricsT"][::std::mem::align_of::<AmdsmiGpuMetricsT>() - 8usize];
    ["Offset of field: AmdsmiGpuMetricsT::common_header"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, common_header) - 0usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_edge"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_edge) - 4usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_hotspot"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_hotspot) - 6usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_mem"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_mem) - 8usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_vrgfx"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_vrgfx) - 10usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_vrsoc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_vrsoc) - 12usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_vrmem"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_vrmem) - 14usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_gfx_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_gfx_activity) - 16usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_umc_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_umc_activity) - 18usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_mm_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_mm_activity) - 20usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_socket_power"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_socket_power) - 22usize];
    ["Offset of field: AmdsmiGpuMetricsT::energy_accumulator"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, energy_accumulator) - 24usize];
    ["Offset of field: AmdsmiGpuMetricsT::system_clock_counter"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, system_clock_counter) - 32usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_gfxclk_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_gfxclk_frequency) - 40usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_socclk_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_socclk_frequency) - 42usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_uclk_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_uclk_frequency) - 44usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_vclk0_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_vclk0_frequency) - 46usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_dclk0_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_dclk0_frequency) - 48usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_vclk1_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_vclk1_frequency) - 50usize];
    ["Offset of field: AmdsmiGpuMetricsT::average_dclk1_frequency"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, average_dclk1_frequency) - 52usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_gfxclk"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_gfxclk) - 54usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socclk"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socclk) - 56usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_uclk"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_uclk) - 58usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_vclk0"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_vclk0) - 60usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_dclk0"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_dclk0) - 62usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_vclk1"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_vclk1) - 64usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_dclk1"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_dclk1) - 66usize];
    ["Offset of field: AmdsmiGpuMetricsT::throttle_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, throttle_status) - 68usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_fan_speed"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_fan_speed) - 72usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_link_width"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_link_width) - 74usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_link_speed"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_link_speed) - 76usize];
    ["Offset of field: AmdsmiGpuMetricsT::gfx_activity_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, gfx_activity_acc) - 80usize];
    ["Offset of field: AmdsmiGpuMetricsT::mem_activity_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, mem_activity_acc) - 84usize];
    ["Offset of field: AmdsmiGpuMetricsT::temperature_hbm"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, temperature_hbm) - 88usize];
    ["Offset of field: AmdsmiGpuMetricsT::firmware_timestamp"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, firmware_timestamp) - 96usize];
    ["Offset of field: AmdsmiGpuMetricsT::voltage_soc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, voltage_soc) - 104usize];
    ["Offset of field: AmdsmiGpuMetricsT::voltage_gfx"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, voltage_gfx) - 106usize];
    ["Offset of field: AmdsmiGpuMetricsT::voltage_mem"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, voltage_mem) - 108usize];
    ["Offset of field: AmdsmiGpuMetricsT::indep_throttle_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, indep_throttle_status) - 112usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socket_power"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socket_power) - 120usize];
    ["Offset of field: AmdsmiGpuMetricsT::vcn_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, vcn_activity) - 122usize];
    ["Offset of field: AmdsmiGpuMetricsT::gfxclk_lock_status"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, gfxclk_lock_status) - 132usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_link_width"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_link_width) - 136usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_link_speed"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_link_speed) - 138usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_bandwidth_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_bandwidth_acc) - 144usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_bandwidth_inst"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_bandwidth_inst) - 152usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_l0_to_recov_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_l0_to_recov_count_acc) - 160usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_replay_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_replay_count_acc) - 168usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_replay_rover_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_replay_rover_count_acc) - 176usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_read_data_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_read_data_acc) - 184usize];
    ["Offset of field: AmdsmiGpuMetricsT::xgmi_write_data_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xgmi_write_data_acc) - 248usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_gfxclks"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_gfxclks) - 312usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_socclks"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_socclks) - 328usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_vclk0s"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_vclk0s) - 336usize];
    ["Offset of field: AmdsmiGpuMetricsT::current_dclk0s"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, current_dclk0s) - 344usize];
    ["Offset of field: AmdsmiGpuMetricsT::jpeg_activity"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, jpeg_activity) - 352usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_nak_sent_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_nak_sent_count_acc) - 416usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_nak_rcvd_count_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_nak_rcvd_count_acc) - 420usize];
    ["Offset of field: AmdsmiGpuMetricsT::accumulation_counter"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, accumulation_counter) - 424usize];
    ["Offset of field: AmdsmiGpuMetricsT::prochot_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, prochot_residency_acc) - 432usize];
    ["Offset of field: AmdsmiGpuMetricsT::ppt_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, ppt_residency_acc) - 440usize];
    ["Offset of field: AmdsmiGpuMetricsT::socket_thm_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, socket_thm_residency_acc) - 448usize];
    ["Offset of field: AmdsmiGpuMetricsT::vr_thm_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, vr_thm_residency_acc) - 456usize];
    ["Offset of field: AmdsmiGpuMetricsT::hbm_thm_residency_acc"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, hbm_thm_residency_acc) - 464usize];
    ["Offset of field: AmdsmiGpuMetricsT::num_partition"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, num_partition) - 472usize];
    ["Offset of field: AmdsmiGpuMetricsT::xcp_stats"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, xcp_stats) - 480usize];
    ["Offset of field: AmdsmiGpuMetricsT::pcie_lc_perf_other_end_recovery"]
        [::std::mem::offset_of!(AmdsmiGpuMetricsT, pcie_lc_perf_other_end_recovery) - 1824usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiNameValueT {
    pub name: [::std::os::raw::c_char; 64usize],
    pub value: u64,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiNameValueT"][::std::mem::size_of::<AmdsmiNameValueT>() - 72usize];
    ["Alignment of AmdsmiNameValueT"][::std::mem::align_of::<AmdsmiNameValueT>() - 8usize];
    ["Offset of field: AmdsmiNameValueT::name"]
        [::std::mem::offset_of!(AmdsmiNameValueT, name) - 0usize];
    ["Offset of field: AmdsmiNameValueT::value"]
        [::std::mem::offset_of!(AmdsmiNameValueT, value) - 64usize];
};
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum AmdsmiRegTypeT {
    AmdsmiRegXgmi = 0,
    AmdsmiRegWafl = 1,
    AmdsmiRegPcie = 2,
    AmdsmiRegUsr = 3,
    AmdsmiRegUsr1 = 4,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiRasFeatureT {
    pub ras_eeprom_version: u32,
    pub ecc_correction_schema_flag: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiRasFeatureT"][::std::mem::size_of::<AmdsmiRasFeatureT>() - 8usize];
    ["Alignment of AmdsmiRasFeatureT"][::std::mem::align_of::<AmdsmiRasFeatureT>() - 4usize];
    ["Offset of field: AmdsmiRasFeatureT::ras_eeprom_version"]
        [::std::mem::offset_of!(AmdsmiRasFeatureT, ras_eeprom_version) - 0usize];
    ["Offset of field: AmdsmiRasFeatureT::ecc_correction_schema_flag"]
        [::std::mem::offset_of!(AmdsmiRasFeatureT, ecc_correction_schema_flag) - 4usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiErrorCountT {
    pub correctable_count: u64,
    pub uncorrectable_count: u64,
    pub deferred_count: u64,
    pub reserved: [u64; 5usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiErrorCountT"][::std::mem::size_of::<AmdsmiErrorCountT>() - 64usize];
    ["Alignment of AmdsmiErrorCountT"][::std::mem::align_of::<AmdsmiErrorCountT>() - 8usize];
    ["Offset of field: AmdsmiErrorCountT::correctable_count"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, correctable_count) - 0usize];
    ["Offset of field: AmdsmiErrorCountT::uncorrectable_count"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, uncorrectable_count) - 8usize];
    ["Offset of field: AmdsmiErrorCountT::deferred_count"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, deferred_count) - 16usize];
    ["Offset of field: AmdsmiErrorCountT::reserved"]
        [::std::mem::offset_of!(AmdsmiErrorCountT, reserved) - 24usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiProcessInfoT {
    pub process_id: u32,
    pub pasid: u32,
    pub vram_usage: u64,
    pub sdma_usage: u64,
    pub cu_occupancy: u32,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiProcessInfoT"][::std::mem::size_of::<AmdsmiProcessInfoT>() - 32usize];
    ["Alignment of AmdsmiProcessInfoT"][::std::mem::align_of::<AmdsmiProcessInfoT>() - 8usize];
    ["Offset of field: AmdsmiProcessInfoT::process_id"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, process_id) - 0usize];
    ["Offset of field: AmdsmiProcessInfoT::pasid"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, pasid) - 4usize];
    ["Offset of field: AmdsmiProcessInfoT::vram_usage"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, vram_usage) - 8usize];
    ["Offset of field: AmdsmiProcessInfoT::sdma_usage"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, sdma_usage) - 16usize];
    ["Offset of field: AmdsmiProcessInfoT::cu_occupancy"]
        [::std::mem::offset_of!(AmdsmiProcessInfoT, cu_occupancy) - 24usize];
};
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct AmdsmiTopologyNearestT {
    pub count: u32,
    pub processor_list: [AmdsmiProcessorHandle; 32usize],
    pub reserved: [u64; 15usize],
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of AmdsmiTopologyNearestT"][::std::mem::size_of::<AmdsmiTopologyNearestT>() - 384usize];
    ["Alignment of AmdsmiTopologyNearestT"]
        [::std::mem::align_of::<AmdsmiTopologyNearestT>() - 8usize];
    ["Offset of field: AmdsmiTopologyNearestT::count"]
        [::std::mem::offset_of!(AmdsmiTopologyNearestT, count) - 0usize];
    ["Offset of field: AmdsmiTopologyNearestT::processor_list"]
        [::std::mem::offset_of!(AmdsmiTopologyNearestT, processor_list) - 8usize];
    ["Offset of field: AmdsmiTopologyNearestT::reserved"]
        [::std::mem::offset_of!(AmdsmiTopologyNearestT, reserved) - 264usize];
};
extern "C" {
    pub fn amdsmi_init(init_flags: u64) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_shut_down() -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_socket_handles(
        socket_count: *mut u32,
        socket_handles: *mut AmdsmiSocketHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_socket_info(
        socket_handle: AmdsmiSocketHandle,
        len: usize,
        name: *mut ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_handles(
        socket_handle: AmdsmiSocketHandle,
        processor_count: *mut u32,
        processor_handles: *mut AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_type(
        processor_handle: AmdsmiProcessorHandle,
        processor_type: *mut ProcessorTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_processor_handle_from_bdf(
        bdf: AmdsmiBdfT,
        processor_handle: *mut AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_id(
        processor_handle: AmdsmiProcessorHandle,
        id: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_revision(
        processor_handle: AmdsmiProcessorHandle,
        revision: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vendor_name(
        processor_handle: AmdsmiProcessorHandle,
        name: *mut ::std::os::raw::c_char,
        len: usize,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vram_vendor(
        processor_handle: AmdsmiProcessorHandle,
        brand: *mut ::std::os::raw::c_char,
        len: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_subsystem_id(
        processor_handle: AmdsmiProcessorHandle,
        id: *mut u16,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_subsystem_name(
        processor_handle: AmdsmiProcessorHandle,
        name: *mut ::std::os::raw::c_char,
        len: usize,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pci_bandwidth(
        processor_handle: AmdsmiProcessorHandle,
        bandwidth: *mut AmdsmiPcieBandwidthT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_bdf_id(
        processor_handle: AmdsmiProcessorHandle,
        bdfid: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_topo_numa_affinity(
        processor_handle: AmdsmiProcessorHandle,
        numa_node: *mut i32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pci_throughput(
        processor_handle: AmdsmiProcessorHandle,
        sent: *mut u64,
        received: *mut u64,
        max_pkt_sz: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pci_replay_counter(
        processor_handle: AmdsmiProcessorHandle,
        counter: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_pci_bandwidth(
        processor_handle: AmdsmiProcessorHandle,
        bw_bitmask: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_energy_count(
        processor_handle: AmdsmiProcessorHandle,
        energy_accumulator: *mut u64,
        counter_resolution: *mut f32,
        timestamp: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_power_cap(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        cap: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_power_profile(
        processor_handle: AmdsmiProcessorHandle,
        reserved: u32,
        profile: AmdsmiPowerProfilePresetMasksT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_total(
        processor_handle: AmdsmiProcessorHandle,
        mem_type: AmdsmiMemoryTypeT,
        total: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_usage(
        processor_handle: AmdsmiProcessorHandle,
        mem_type: AmdsmiMemoryTypeT,
        used: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_bad_page_info(
        processor_handle: AmdsmiProcessorHandle,
        num_pages: *mut u32,
        info: *mut AmdsmiRetiredPageRecordT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ras_feature_info(
        processor_handle: AmdsmiProcessorHandle,
        ras_feature: *mut AmdsmiRasFeatureT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ras_block_features_enabled(
        processor_handle: AmdsmiProcessorHandle,
        block: AmdsmiGpuBlockT,
        state: *mut AmdsmiRasErrStateT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_reserved_pages(
        processor_handle: AmdsmiProcessorHandle,
        num_pages: *mut u32,
        records: *mut AmdsmiRetiredPageRecordT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_fan_rpms(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        speed: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_fan_speed(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        speed: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_fan_speed_max(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        max_speed: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_temp_metric(
        processor_handle: AmdsmiProcessorHandle,
        sensor_type: AmdsmiTemperatureTypeT,
        metric: AmdsmiTemperatureMetricT,
        temperature: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_cache_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiGpuCacheInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_volt_metric(
        processor_handle: AmdsmiProcessorHandle,
        sensor_type: AmdsmiVoltageTypeT,
        metric: AmdsmiVoltageMetricT,
        voltage: *mut i64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_gpu_fan(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_fan_speed(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        speed: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_busy_percent(
        processor_handle: AmdsmiProcessorHandle,
        gpu_busy_percent: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_utilization_count(
        processor_handle: AmdsmiProcessorHandle,
        utilization_counters: *mut AmdsmiUtilizationCounterT,
        count: u32,
        timestamp: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_perf_level(
        processor_handle: AmdsmiProcessorHandle,
        perf: *mut AmdsmiDevPerfLevelT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_perf_determinism_mode(
        processor_handle: AmdsmiProcessorHandle,
        clkvalue: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_overdrive_level(
        processor_handle: AmdsmiProcessorHandle,
        od: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_mem_overdrive_level(
        processor_handle: AmdsmiProcessorHandle,
        od: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_clk_freq(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        f: *mut AmdsmiFrequenciesT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_gpu(processor_handle: AmdsmiProcessorHandle) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_od_volt_info(
        processor_handle: AmdsmiProcessorHandle,
        odv: *mut AmdsmiOdVoltFreqDataT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_metrics_header_info(
        processor_handle: AmdsmiProcessorHandle,
        header_value: *mut AmdMetricsTableHeaderT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_metrics_info(
        processor_handle: AmdsmiProcessorHandle,
        pgpu_metrics: *mut AmdsmiGpuMetricsT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_pm_metrics_info(
        processor_handle: AmdsmiProcessorHandle,
        pm_metrics: *mut *mut AmdsmiNameValueT,
        num_of_metrics: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_reg_table_info(
        processor_handle: AmdsmiProcessorHandle,
        reg_type: AmdsmiRegTypeT,
        reg_metrics: *mut *mut AmdsmiNameValueT,
        num_of_metrics: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_clk_range(
        processor_handle: AmdsmiProcessorHandle,
        minclkvalue: u64,
        maxclkvalue: u64,
        clkType: AmdsmiClkTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_clk_limit(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        limit_type: AmdsmiClkLimitTypeT,
        clk_value: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_free_name_value_pairs(p: *mut ::std::os::raw::c_void);
}
extern "C" {
    pub fn amdsmi_set_gpu_od_clk_info(
        processor_handle: AmdsmiProcessorHandle,
        level: AmdsmiFreqIndT,
        clkvalue: u64,
        clkType: AmdsmiClkTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_od_volt_info(
        processor_handle: AmdsmiProcessorHandle,
        vpoint: u32,
        clkvalue: u64,
        voltvalue: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_od_volt_curve_regions(
        processor_handle: AmdsmiProcessorHandle,
        num_regions: *mut u32,
        buffer: *mut AmdsmiFreqVoltRegionT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_power_profile_presets(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        status: *mut AmdsmiPowerProfileStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_perf_level(
        processor_handle: AmdsmiProcessorHandle,
        perf_lvl: AmdsmiDevPerfLevelT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_overdrive_level(
        processor_handle: AmdsmiProcessorHandle,
        od: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_clk_freq(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        freq_bitmask: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_soc_pstate(
        processor_handle: AmdsmiProcessorHandle,
        policy: *mut AmdsmiDpmPolicyT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_soc_pstate(
        processor_handle: AmdsmiProcessorHandle,
        policy_id: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_xgmi_plpd(
        processor_handle: AmdsmiProcessorHandle,
        xgmi_plpd: *mut AmdsmiDpmPolicyT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_xgmi_plpd(
        processor_handle: AmdsmiProcessorHandle,
        plpd_id: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_process_isolation(
        processor_handle: AmdsmiProcessorHandle,
        pisolate: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_process_isolation(
        processor_handle: AmdsmiProcessorHandle,
        pisolate: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_clean_gpu_local_data(processor_handle: AmdsmiProcessorHandle) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_lib_version(version: *mut AmdsmiVersionT) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ecc_count(
        processor_handle: AmdsmiProcessorHandle,
        block: AmdsmiGpuBlockT,
        ec: *mut AmdsmiErrorCountT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ecc_enabled(
        processor_handle: AmdsmiProcessorHandle,
        enabled_blocks: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_ecc_status(
        processor_handle: AmdsmiProcessorHandle,
        block: AmdsmiGpuBlockT,
        state: *mut AmdsmiRasErrStateT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_status_code_to_string(
        status: AmdsmiStatusT,
        status_string: *mut *const ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_counter_group_supported(
        processor_handle: AmdsmiProcessorHandle,
        group: AmdsmiEventGroupT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_create_counter(
        processor_handle: AmdsmiProcessorHandle,
        type_: AmdsmiEventTypeT,
        evnt_handle: *mut AmdsmiEventHandleT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_destroy_counter(evnt_handle: AmdsmiEventHandleT) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_control_counter(
        evt_handle: AmdsmiEventHandleT,
        cmd: AmdsmiCounterCommandT,
        cmd_args: *mut ::std::os::raw::c_void,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_read_counter(
        evt_handle: AmdsmiEventHandleT,
        value: *mut AmdsmiCounterValueT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_available_counters(
        processor_handle: AmdsmiProcessorHandle,
        grp: AmdsmiEventGroupT,
        available: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_process_info(
        procs: *mut AmdsmiProcessInfoT,
        num_items: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_process_info_by_pid(
        pid: u32,
        proc_: *mut AmdsmiProcessInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_process_gpus(
        pid: u32,
        dv_indices: *mut u32,
        num_devices: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_gpu_xgmi_error_status(
        processor_handle: AmdsmiProcessorHandle,
        status: *mut AmdsmiXgmiStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_reset_gpu_xgmi_error(processor_handle: AmdsmiProcessorHandle) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_link_metrics(
        processor_handle: AmdsmiProcessorHandle,
        link_metrics: *mut AmdsmiLinkMetricsT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_numa_node_number(
        processor_handle: AmdsmiProcessorHandle,
        numa_node: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_link_weight(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        weight: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_minmax_bandwidth_between_processors(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        min_bandwidth: *mut u64,
        max_bandwidth: *mut u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_link_type(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        hops: *mut u64,
        type_: *mut AmdsmiIoLinkTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_is_P2P_accessible(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        accessible: *mut bool,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_topo_get_p2p_status(
        processor_handle_src: AmdsmiProcessorHandle,
        processor_handle_dst: AmdsmiProcessorHandle,
        type_: *mut AmdsmiIoLinkTypeT,
        cap: *mut AmdsmiP2pCapabilityT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_compute_partition(
        processor_handle: AmdsmiProcessorHandle,
        compute_partition: *mut ::std::os::raw::c_char,
        len: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_compute_partition(
        processor_handle: AmdsmiProcessorHandle,
        compute_partition: AmdsmiComputePartitionTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_memory_partition(
        processor_handle: AmdsmiProcessorHandle,
        memory_partition: *mut ::std::os::raw::c_char,
        len: u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_memory_partition(
        processor_handle: AmdsmiProcessorHandle,
        memory_partition: AmdsmiMemoryPartitionTypeT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_accelerator_partition_profile(
        processor_handle: AmdsmiProcessorHandle,
        profile: *mut AmdsmiAcceleratorPartitionProfileT,
        partition_id: *mut u32,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_init_gpu_event_notification(
        processor_handle: AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_set_gpu_event_notification_mask(
        processor_handle: AmdsmiProcessorHandle,
        mask: u64,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_event_notification(
        timeout_ms: ::std::os::raw::c_int,
        num_elem: *mut u32,
        data: *mut AmdsmiEvtNotificationDataT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_stop_gpu_event_notification(
        processor_handle: AmdsmiProcessorHandle,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_device_bdf(
        processor_handle: AmdsmiProcessorHandle,
        bdf: *mut AmdsmiBdfT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_device_uuid(
        processor_handle: AmdsmiProcessorHandle,
        uuid_length: *mut ::std::os::raw::c_uint,
        uuid: *mut ::std::os::raw::c_char,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_driver_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiDriverInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_asic_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiAsicInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_kfd_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiKfdInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vram_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiVramInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_board_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiBoardInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_power_cap_info(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        info: *mut AmdsmiPowerCapInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_pcie_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiPcieInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_xgmi_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiXgmiInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_fw_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiFwInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vbios_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiVbiosInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_activity(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiEngineUsageT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_power_info_v2(
        processor_handle: AmdsmiProcessorHandle,
        sensor_ind: u32,
        info: *mut AmdsmiPowerInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_power_info(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiPowerInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_is_gpu_power_management_enabled(
        processor_handle: AmdsmiProcessorHandle,
        enabled: *mut bool,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_clock_info(
        processor_handle: AmdsmiProcessorHandle,
        clk_type: AmdsmiClkTypeT,
        info: *mut AmdsmiClkInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_vram_usage(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiVramUsageT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_violation_status(
        processor_handle: AmdsmiProcessorHandle,
        info: *mut AmdsmiViolationStatusT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_process_list(
        processor_handle: AmdsmiProcessorHandle,
        max_processes: *mut u32,
        list: *mut AmdsmiProcInfoT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_gpu_total_ecc_count(
        processor_handle: AmdsmiProcessorHandle,
        ec: *mut AmdsmiErrorCountT,
    ) -> AmdsmiStatusT;
}
extern "C" {
    pub fn amdsmi_get_link_topology_nearest(
        processor_handle: AmdsmiProcessorHandle,
        link_type: AmdsmiLinkTypeT,
        topology_nearest_info: *mut AmdsmiTopologyNearestT,
    ) -> AmdsmiStatusT;
}
