smbios.h revision 42a58d9da2d06f11c75f3d4ef25f081457e81654
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * CDDL HEADER START
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The contents of this file are subject to the terms of the
80ab886d233f514d54c2a6bdeb9fdfd951bd6881wesolows * Common Development and Distribution License (the "License").
80ab886d233f514d54c2a6bdeb9fdfd951bd6881wesolows * You may not use this file except in compliance with the License.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * or http://www.opensolaris.org/os/licensing.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * See the License for the specific language governing permissions
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * and limitations under the License.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * When distributing Covered Code, include this CDDL HEADER in each
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * If applicable, add the following below this CDDL HEADER, with the
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * fields enclosed by brackets "[]" replaced with your own identifying
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information: Portions Copyright [yyyy] [name of copyright owner]
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * CDDL HEADER END
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * Use is subject to license terms.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * This header file defines the interfaces available from the SMBIOS access
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * library, libsmbios, and an equivalent kernel module. This API can be used
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * to access DMTF SMBIOS data from a device, file, or raw memory buffer.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * This is NOT yet a public interface, although it may eventually become one in
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * the fullness of time after we gain more experience with the interfaces.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * In the meantime, be aware that any program linked with this API in this
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * release of Solaris is almost guaranteed to break in the next release.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * In short, do not user this header file or these routines for any purpose.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#ifndef _SYS_SMBIOS_H
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define _SYS_SMBIOS_H
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#pragma ident "%Z%%M% %I% %E% SMI"
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#include <sys/types.h>
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#ifdef __cplusplus
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern "C" {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#endif
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Structure Table Entry Point. See DSP0134 2.1.1 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The structure table entry point is located by searching for the anchor.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
e4586ebf2f01666696316c178da243993b1a0c04mws#pragma pack(1)
e4586ebf2f01666696316c178da243993b1a0c04mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_entry {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws char smbe_eanchor[4]; /* anchor tag (SMB_ENTRY_EANCHOR) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_ecksum; /* checksum of entry point structure */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_elen; /* length in bytes of entry point */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_major; /* major version of the SMBIOS spec */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_minor; /* minor version of the SMBIOS spec */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smbe_maxssize; /* maximum size in bytes of a struct */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_revision; /* entry point structure revision */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_format[5]; /* entry point revision-specific data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws char smbe_ianchor[5]; /* intermed. tag (SMB_ENTRY_IANCHOR) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_icksum; /* intermed. checksum */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smbe_stlen; /* length in bytes of structure table */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbe_staddr; /* physical addr of structure table */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smbe_stnum; /* number of structure table entries */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbe_bcdrev; /* BCD value representing DMI version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_entry_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
e4586ebf2f01666696316c178da243993b1a0c04mws#pragma pack()
e4586ebf2f01666696316c178da243993b1a0c04mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ENTRY_EANCHOR "_SM_" /* structure table entry point anchor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ENTRY_EANCHORLEN 4 /* length of entry point anchor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ENTRY_IANCHOR "_DMI_" /* intermediate anchor string */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ENTRY_IANCHORLEN 5 /* length of intermediate anchor */
80ab886d233f514d54c2a6bdeb9fdfd951bd6881wesolows#define SMB_ENTRY_MAXLEN 255 /* maximum length of entry point */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * Structure type codes. The comments next to each type include an (R) note to
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * indicate a structure that is required as of SMBIOS v2.3 and an (O) note to
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * indicate a structure that is obsolete as of SMBIOS v2.3.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_BIOS 0 /* BIOS information (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_SYSTEM 1 /* system information (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_BASEBOARD 2 /* base board */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_CHASSIS 3 /* system enclosure or chassis (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_PROCESSOR 4 /* processor (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMCTL 5 /* memory controller (O) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMMOD 6 /* memory module (O) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_CACHE 7 /* processor cache (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_PORT 8 /* port connector */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_SLOT 9 /* upgradeable system slot (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_OBDEVS 10 /* on-board devices */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_OEMSTR 11 /* OEM string table */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_SYSCONFSTR 12 /* system configuration string table */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_LANG 13 /* BIOS language information */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_GROUP 14 /* group associations */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_EVENTLOG 15 /* system event log */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMARRAY 16 /* physical memory array (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMDEVICE 17 /* memory device (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMERR32 18 /* 32-bit memory error information */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMARRAYMAP 19 /* memory array mapped address (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMDEVICEMAP 20 /* memory device mapped address (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_POINTDEV 21 /* built-in pointing device */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_BATTERY 22 /* portable battery */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_RESET 23 /* system reset settings */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_SECURITY 24 /* hardware security settings */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_POWERCTL 25 /* system power controls */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_VPROBE 26 /* voltage probe */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_COOLDEV 27 /* cooling device */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_TPROBE 28 /* temperature probe */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_IPROBE 29 /* current probe */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_OOBRA 30 /* out-of-band remote access facility */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_BIS 31 /* boot integrity services */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_BOOT 32 /* system boot status (R) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMERR64 33 /* 64-bit memory error information */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MGMTDEV 34 /* management device */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MGMTDEVCP 35 /* management device component */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MGMTDEVDATA 36 /* management device threshold data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_MEMCHAN 37 /* memory channel */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_IPMIDEV 38 /* IPMI device information */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_POWERSUP 39 /* system power supply */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_INACTIVE 126 /* inactive table entry */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_EOT 127 /* end of table */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_OEM_LO 128 /* start of OEM-specific type range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_TYPE_OEM_HI 256 /* end of OEM-specific type range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Common Information. These structures do not correspond to anything
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * in the SMBIOS specification, but allow library clients to more easily read
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information that is frequently encoded into the various SMBIOS structures.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_info {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_manufacturer; /* manufacturer */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_product; /* product name */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_version; /* version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_serial; /* serial number */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_asset; /* asset tag */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_location; /* location tag */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbi_part; /* part number */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_info_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_version {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbv_major; /* version major number */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbv_minor; /* version minor number */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_version_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Bios Information. See DSP0134 Section 3.3.1 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * smbb_romsize is converted from the implementation format into bytes.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_bios {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbb_vendor; /* bios vendor string */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbb_version; /* bios version string */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbb_reldate; /* bios release date */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbb_segment; /* bios address segment location */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbb_romsize; /* bios rom size in bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbb_runsize; /* bios image size in bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbb_cflags; /* bios characteristics */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const uint8_t *smbb_xcflags; /* bios characteristics extensions */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws size_t smbb_nxcflags; /* number of smbb_xcflags[] bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws smbios_version_t smbb_biosv; /* bios version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws smbios_version_t smbb_ecfwv; /* bios embedded ctrl f/w version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_bios_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_RSV0 0x00000001 /* reserved bit zero */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_RSV1 0x00000002 /* reserved bit one */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_UNKNOWN 0x00000004 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_BCNOTSUP 0x00000008 /* BIOS chars not supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_ISA 0x00000010 /* ISA is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_MCA 0x00000020 /* MCA is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_EISA 0x00000040 /* EISA is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_PCI 0x00000080 /* PCI is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_PCMCIA 0x00000100 /* PCMCIA is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_PLUGNPLAY 0x00000200 /* Plug and Play is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_APM 0x00000400 /* APM is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_FLASH 0x00000800 /* BIOS is Flash Upgradeable */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_SHADOW 0x00001000 /* BIOS shadowing is allowed */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_VLVESA 0x00002000 /* VL-VESA is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_ESCD 0x00004000 /* ESCD support is available */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_CDBOOT 0x00008000 /* Boot from CD is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_SELBOOT 0x00010000 /* Selectable Boot supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_ROMSOCK 0x00020000 /* BIOS ROM is socketed */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_PCMBOOT 0x00040000 /* Boot from PCMCIA supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_EDD 0x00080000 /* EDD Spec is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_NEC9800 0x00100000 /* int 0x13 NEC 9800 floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_TOSHIBA 0x00200000 /* int 0x13 Toshiba floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_525_360K 0x00400000 /* int 0x13 5.25" 360K floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_525_12M 0x00800000 /* int 0x13 5.25" 1.2M floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_35_720K 0x01000000 /* int 0x13 3.5" 720K floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_35_288M 0x02000000 /* int 0x13 3.5" 2.88M floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_I5_PRINT 0x04000000 /* int 0x5 print screen svcs */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_I9_KBD 0x08000000 /* int 0x9 8042 keyboard svcs */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_I14_SER 0x10000000 /* int 0x14 serial svcs */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_I17_PRINTER 0x20000000 /* int 0x17 printer svcs */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_I10_CGA 0x40000000 /* int 0x10 CGA svcs */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSFL_NEC_PC98 0x80000000 /* NEC PC-98 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB_1 0 /* bios extension byte 1 (3.3.1.2.1) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB_2 1 /* bios extension byte 2 (3.3.1.2.2) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB_BIOS_MAJ 2 /* bios major version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB_BIOS_MIN 3 /* bios minor version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB_ECFW_MAJ 4 /* extended ctlr f/w major version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB_ECFW_MIN 5 /* extended ctlr f/w minor version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_ACPI 0x01 /* ACPI is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_USBL 0x02 /* USB legacy is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_AGP 0x04 /* AGP is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_I20 0x08 /* I2O boot is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_LS120 0x10 /* LS-120 boot is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_ATZIP 0x20 /* ATAPI ZIP drive boot is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_1394 0x40 /* 1394 boot is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB1_SMBAT 0x80 /* Smart Battery is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB2_BBOOT 0x01 /* BIOS Boot Specification supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB2_FKNETSVC 0x02 /* F-key Network Svc boot supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BIOSXB2_ETCDIST 0x04 /* Enable Targeted Content Distrib. */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Bios Information. See DSP0134 Section 3.3.2 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The current set of smbs_wakeup values is defined after the structure.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_system {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const uint8_t *smbs_uuid; /* UUID byte array */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbs_uuidlen; /* UUID byte array length */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbs_wakeup; /* wake-up event */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbs_sku; /* SKU number */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbs_family; /* family */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_system_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_RSV0 0x00 /* reserved */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_APM 0x03 /* APM timer */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_MODEM 0x04 /* modem ring */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_LAN 0x05 /* LAN remote */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_SWITCH 0x06 /* power switch */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_PCIPME 0x07 /* PCI PME# */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_WAKEUP_AC 0x08 /* AC power restored */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Base Board description. See DSP0134 Section 3.3.3 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. smbb_flags and smbb_type definitions are below.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_bboard {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbb_chassis; /* chassis containing this board */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbb_flags; /* flags (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbb_type; /* board type (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_bboard_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBFL_MOTHERBOARD 0x01 /* board is a motherboard */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBFL_NEEDAUX 0x02 /* auxiliary card or daughter req'd */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBFL_REMOVABLE 0x04 /* board is removable */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBFL_REPLACABLE 0x08 /* board is field-replacable */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBFL_HOTSWAP 0x10 /* board is hot-swappable */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_UNKNOWN 0x1 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_OTHER 0x2 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_SBLADE 0x3 /* server blade */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_CSWITCH 0x4 /* connectivity switch */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_SMM 0x5 /* system management module */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_PROC 0x6 /* processor module */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_IO 0x7 /* i/o module */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_MEM 0x8 /* memory module */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_DAUGHTER 0x9 /* daughterboard */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_MOTHER 0xA /* motherboard */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_PROCMEM 0xB /* processor/memory module */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_PROCIO 0xC /* processor/i/o module */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BBT_INTER 0xD /* interconnect board */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Chassis description. See DSP0134 Section 3.3.4 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * We move the lock bit of the type field into smbc_lock for easier processing.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * NOTE: We do not currently export the contained element data for each chassis
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * as this seems useless: see DSP0134 3.3.4.4. It can be added if necessary.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_chassis {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbc_oemdata; /* OEM-specific data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_lock; /* lock present? */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_type; /* type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_bustate; /* boot-up state */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_psstate; /* power supply state */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_thstate; /* thermal state */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_security; /* security status */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_uheight; /* enclosure height in U's */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_cords; /* number of power cords */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbc_elems; /* number of element records */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_chassis_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_DESKTOP 0x03 /* desktop */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_LPDESKTOP 0x04 /* low-profile desktop */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_PIZZA 0x05 /* pizza box */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_MINITOWER 0x06 /* mini-tower */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_TOWER 0x07 /* tower */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_PORTABLE 0x08 /* portable */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_LAPTOP 0x09 /* laptop */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_NOTEBOOK 0x0A /* notebook */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_HANDHELD 0x0B /* hand-held */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_DOCK 0x0C /* docking station */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_ALLIN1 0x0D /* all-in-one */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_SUBNOTE 0x0E /* sub-notebook */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_SPACESAVE 0x0F /* space-saving */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_LUNCHBOX 0x10 /* lunchbox */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_MAIN 0x11 /* main server chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_EXPANSION 0x12 /* expansion chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_SUB 0x13 /* sub-chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_BUS 0x14 /* bus expansion chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_PERIPHERAL 0x15 /* peripheral chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_RAID 0x16 /* raid chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_RACK 0x17 /* rack mount chassis */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_SEALED 0x18 /* sealed case pc */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHT_MULTI 0x19 /* multi-system chassis */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_CHT_CPCI 0x1A /* compact PCI */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_CHT_ATCA 0x1B /* advanced TCA */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_CHT_BLADE 0x1C /* blade */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_CHT_BLADEENC 0x1D /* blade enclosure */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHST_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHST_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHST_SAFE 0x03 /* safe */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHST_WARNING 0x04 /* warning */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHST_CRITICAL 0x05 /* critical */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHST_NONREC 0x06 /* non-recoverable */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHSC_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHSC_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHSC_NONE 0x03 /* none */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHSC_EILOCK 0x04 /* external interface locked out */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CHSC_EIENAB 0x05 /* external interface enabled */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Processor description. See DSP0134 Section 3.3.5 for more details.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * If the L1, L2, or L3 cache handle is -1, the cache information is unknown.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * If the handle refers to something of size 0, that type of cache is absent.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws *
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * NOTE: Although SMBIOS exports a 64-bit CPUID result, this value should not
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * be used for any purpose other than BIOS debugging. Solaris itself computes
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * its own CPUID value and applies knowledge of additional errata and processor
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * specific CPUID variations, so this value should not be used for anything.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_processor {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbp_cpuid; /* processor cpuid information */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbp_family; /* processor family */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbp_type; /* processor type (SMB_PRT_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbp_voltage; /* voltage (SMB_PRV_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbp_status; /* status (SMB_PRS_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbp_upgrade; /* upgrade (SMB_PRU_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbp_clkspeed; /* external clock speed in MHz */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbp_maxspeed; /* maximum speed in MHz */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbp_curspeed; /* current speed in MHz */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbp_l1cache; /* L1 cache handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbp_l2cache; /* L2 cache handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbp_l3cache; /* L3 cache handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_processor_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRT_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRT_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRT_CENTRAL 0x03 /* central processor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRT_MATH 0x04 /* math processor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRT_DSP 0x05 /* DSP processor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRT_VIDEO 0x06 /* video processor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRV_LEGACY(v) (!((v) & 0x80)) /* legacy voltage mode */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRV_FIXED(v) ((v) & 0x80) /* fixed voltage mode */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRV_5V 0x01 /* 5V is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRV_33V 0x02 /* 3.3V is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRV_29V 0x04 /* 2.9V is supported */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRV_VOLTAGE(v) ((v) & 0x7f)
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRSTATUS_PRESENT(s) ((s) & 0x40) /* socket is populated */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRSTATUS_STATUS(s) ((s) & 0x07) /* status (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRS_UNKNOWN 0x0 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRS_ENABLED 0x1 /* enabled */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRS_BDISABLED 0x2 /* disabled in bios user setup */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRS_PDISABLED 0x3 /* disabled in bios from post error */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRS_IDLE 0x4 /* waiting to be enabled */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRS_OTHER 0x7 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_DAUGHTER 0x03 /* daughter board */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_ZIF 0x04 /* ZIF socket */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_PIGGY 0x05 /* replaceable piggy back */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_NONE 0x06 /* none */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_LIF 0x07 /* LIF socket */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_SLOT1 0x08 /* slot 1 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_SLOT2 0x09 /* slot 2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_370PIN 0x0A /* 370-pin socket */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_SLOTA 0x0B /* slot A */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_SLOTM 0x0C /* slot M */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_423 0x0D /* socket 423 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_A 0x0E /* socket A (socket 462) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_478 0x0F /* socket 478 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_754 0x10 /* socket 754 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRU_940 0x11 /* socket 940 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_939 0x12 /* socket 939 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_MPGA604 0x13 /* mPGA604 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_LGA771 0x14 /* LGA771 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_LGA775 0x15 /* LGA775 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_S1 0x16 /* socket S1 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_AM2 0x17 /* socket AM2 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRU_F 0x18 /* socket F */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_8086 0x03 /* 8086 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_80286 0x04 /* 80286 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_I386 0x05 /* Intel 386 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_I486 0x06 /* Intel 486 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_8087 0x07 /* 8087 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_80287 0x08 /* 80287 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_80387 0x09 /* 80387 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_80487 0x0A /* 80487 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUM 0x0B /* Pentium Family */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUMPRO 0x0C /* Pentium Pro */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUMII 0x0D /* Pentium II */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUM_MMX 0x0E /* Pentium w/ MMX */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_CELERON 0x0F /* Celeron */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUMII_XEON 0x10 /* Pentium II Xeon */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUMIII 0x11 /* Pentium III */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_M1 0x12 /* M1 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_M2 0x13 /* M2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_DURON 0x18 /* AMD Duron */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_K5 0x19 /* K5 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_K6 0x1A /* K6 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_K6_2 0x1B /* K6-2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_K6_3 0x1C /* K6-3 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ATHLON 0x1D /* Athlon */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_2900 0x1E /* AMD 2900 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_K6_2PLUS 0x1F /* K6-2+ */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC 0x20 /* PowerPC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_601 0x21 /* PowerPC 601 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_603 0x22 /* PowerPC 603 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_603PLUS 0x23 /* PowerPC 603+ */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_604 0x24 /* PowerPC 604 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_620 0x25 /* PowerPC 620 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_704 0x26 /* PowerPC x704 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PPC_750 0x27 /* PowerPC 750 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA 0x30 /* Alpha */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21064 0x31 /* Alpha 21064 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21066 0x32 /* Alpha 21066 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21164 0x33 /* Alpha 21164 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21164PC 0x34 /* Alpha 21164PC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21164A 0x35 /* Alpha 21164a */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21264 0x36 /* Alpha 21264 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ALPHA_21364 0x37 /* Alpha 21364 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MIPS 0x40 /* MIPS */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MIPS_R4000 0x41 /* MIPS R4000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MIPS_R4200 0x42 /* MIPS R4200 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MIPS_R4400 0x43 /* MIPS R4400 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MIPS_R4600 0x44 /* MIPS R4600 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MIPS_R10000 0x45 /* MIPS R10000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_SPARC 0x50 /* SPARC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_SUPERSPARC 0x51 /* SuperSPARC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MICROSPARCII 0x52 /* microSPARC II */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_MICROSPARCIIep 0x53 /* microSPARC IIep */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ULTRASPARC 0x54 /* UltraSPARC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_USII 0x55 /* UltraSPARC II */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_USIIi 0x56 /* UltraSPARC IIi */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_USIII 0x57 /* UltraSPARC III */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_USIIIi 0x58 /* UltraSPARC IIIi */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_68040 0x60 /* 68040 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_68XXX 0x61 /* 68XXX */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_68000 0x62 /* 68000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_68010 0x63 /* 68010 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_68020 0x64 /* 68020 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_68030 0x65 /* 68030 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_HOBBIT 0x70 /* Hobbit */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_TM5000 0x78 /* Crusoe TM5000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_TM3000 0x79 /* Crusoe TM3000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_TM8000 0x7A /* Efficeon TM8000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_WEITEK 0x80 /* Weitek */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ITANIC 0x82 /* Itanium */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ATHLON64 0x83 /* Athlon64 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_OPTERON 0x84 /* Opteron */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA 0x90 /* PA-RISC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA8500 0x91 /* PA-RISC 8500 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA8000 0x92 /* PA-RISC 8000 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA7300LC 0x93 /* PA-RISC 7300LC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA7200 0x94 /* PA-RISC 7200 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA7100LC 0x95 /* PA-RISC 7100LC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PA7100 0x96 /* PA-RISC 7100 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_V30 0xA0 /* V30 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUMIII_XEON 0xB0 /* Pentium III Xeon */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUMIII_SS 0xB1 /* Pentium III with SpeedStep */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_P4 0xB2 /* Pentium 4 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_XEON 0xB3 /* Intel Xeon */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_AS400 0xB4 /* AS400 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_XEON_MP 0xB5 /* Intel Xeon MP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ATHLON_XP 0xB6 /* AMD Athlon XP */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_ATHLON_MP 0xB7 /* AMD Athlon MP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_ITANIC2 0xB8 /* Itanium 2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_PENTIUM_M 0xB9 /* Pentium M */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_CELERON_D 0xBA /* Celeron D */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_PENTIUM_D 0xBB /* Pentium D */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_PENTIUM_EE 0xBC /* Pentium Extreme Edition */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_CORE 0xBD /* Intel Core */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_CORE2 0xBF /* Intel Core 2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_IBM390 0xC8 /* IBM 390 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_G4 0xC9 /* G4 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_G5 0xCA /* G5 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_ESA390 0xCB /* ESA390 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_ZARCH 0xCC /* z/Architecture */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_C7M 0xD2 /* VIA C7-M */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_C7D 0xD3 /* VIA C7-D */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_C7 0xD4 /* VIA C7 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_EDEN 0xD5 /* VIA Eden */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_I860 0xFA /* i860 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_PRF_I960 0xFB /* i960 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_SH3 0x104 /* SH-3 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_SH4 0x105 /* SH-4 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_ARM 0x118 /* ARM */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_SARM 0x119 /* StrongARM */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_6X86 0x12C /* 6x86 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_MEDIAGX 0x12D /* MediaGX */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_MII 0x12E /* MII */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_WINCHIP 0x140 /* WinChip */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_DSP 0x15E /* DSP */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_PRF_VIDEO 0x1F4 /* Video Processor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Cache Information. See DSP0134 Section 3.3.8 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * If smba_size is zero, this indicates the specified cache is not present.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_cache {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smba_maxsize; /* maximum installed size in bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smba_size; /* installed size in bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smba_stype; /* supported SRAM types (SMB_CAT_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smba_ctype; /* current SRAM type (SMB_CAT_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_speed; /* speed in nanoseconds */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_etype; /* error correction type (SMB_CAE_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_ltype; /* logical cache type (SMB_CAG_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_assoc; /* associativity (SMB_CAA_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_level; /* cache level */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_mode; /* cache mode (SMB_CAM_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_location; /* cache location (SMB_CAL_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smba_flags; /* cache flags (SMB_CAF_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_cache_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_OTHER 0x0001 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_UNKNOWN 0x0002 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_NONBURST 0x0004 /* non-burst */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_BURST 0x0008 /* burst */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_PBURST 0x0010 /* pipeline burst */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_SYNC 0x0020 /* synchronous */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAT_ASYNC 0x0040 /* asynchronous */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAE_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAE_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAE_NONE 0x03 /* none */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAE_PARITY 0x04 /* parity */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAE_SBECC 0x05 /* single-bit ECC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAE_MBECC 0x06 /* multi-bit ECC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAG_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAG_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAG_INSTR 0x03 /* instruction */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAG_DATA 0x04 /* data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAG_UNIFIED 0x05 /* unified */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_DIRECT 0x03 /* direct mapped */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_2WAY 0x04 /* 2-way set associative */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_4WAY 0x05 /* 4-way set associative */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_FULL 0x06 /* fully associative */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_8WAY 0x07 /* 8-way set associative */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAA_16WAY 0x08 /* 16-way set associative */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAM_WT 0x00 /* write-through */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAM_WB 0x01 /* write-back */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAM_VARY 0x02 /* varies by address */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAM_UNKNOWN 0x03 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAL_INTERNAL 0x00 /* internal */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAL_EXTERNAL 0x01 /* external */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAL_RESERVED 0x02 /* reserved */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAL_UNKNOWN 0x03 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAF_ENABLED 0x01 /* enabled at boot time */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_CAF_SOCKETED 0x02 /* cache is socketed */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Port Information. See DSP0134 Section 3.3.9 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The internal reference designator string is also mapped to the location.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_port {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbo_iref; /* internal reference designator */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbo_eref; /* external reference designator */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbo_itype; /* internal connector type (SMB_POC_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbo_etype; /* external connector type (SMB_POC_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbo_ptype; /* port type (SMB_POT_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbo_pad; /* padding */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_port_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_NONE 0x00 /* none */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_CENT 0x01 /* Centronics */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MINICENT 0x02 /* Mini-Centronics */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PROPRIETARY 0x03 /* proprietary */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DB25M 0x04 /* DB-25 pin male */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DB25F 0x05 /* DB-25 pin female */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DB15M 0x06 /* DB-15 pin male */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DB15F 0x07 /* DB-15 pin female */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DB9M 0x08 /* DB-9 pin male */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DB9F 0x09 /* DB-9 pin female */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_RJ11 0x0A /* RJ-11 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_RJ45 0x0B /* RJ-45 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MINISCSI 0x0C /* 50-pin MiniSCSI */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MINIDIN 0x0D /* Mini-DIN */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MICRODIN 0x0E /* Micro-DIN */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PS2 0x0F /* PS/2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_IR 0x10 /* Infrared */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_HPHIL 0x11 /* HP-HIL */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_USB 0x12 /* USB */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_SSA 0x13 /* SSA SCSI */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DIN8M 0x14 /* Circular DIN-8 male */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DIN8F 0x15 /* Circular DIN-8 female */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_OBIDE 0x16 /* on-board IDE */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_OBFLOPPY 0x17 /* on-board floppy */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DI9 0x18 /* 9p dual inline (p10 cut) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DI25 0x19 /* 25p dual inline (p26 cut) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DI50 0x1A /* 50p dual inline */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_DI68 0x1B /* 68p dual inline */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_CDROM 0x1C /* on-board sound from CDROM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MINI14 0x1D /* Mini-Centronics Type 14 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MINI26 0x1E /* Mini-Centronics Type 26 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_MINIJACK 0x1F /* Mini-jack (headphones) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_BNC 0x20 /* BNC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_1394 0x21 /* 1394 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PC98 0xA0 /* PC-98 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PC98HR 0xA1 /* PC-98Hireso */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PCH98 0xA2 /* PC-H98 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PC98NOTE 0xA3 /* PC-98Note */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_PC98FULL 0xA4 /* PC-98Full */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POC_OTHER 0xFF /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_NONE 0x00 /* none */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PP_XTAT 0x01 /* Parallel Port XT/AT compat */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PP_PS2 0x02 /* Parallel Port PS/2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PP_ECP 0x03 /* Parallel Port ECP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PP_EPP 0x04 /* Parallel Port EPP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PP_ECPEPP 0x05 /* Parallel Port ECP/EPP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SP_XTAT 0x06 /* Serial Port XT/AT compat */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SP_16450 0x07 /* Serial Port 16450 compat */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SP_16550 0x08 /* Serial Port 16550 compat */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SP_16550A 0x09 /* Serial Port 16550A compat */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SCSI 0x0A /* SCSI port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_MIDI 0x0B /* MIDI port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_JOYSTICK 0x0C /* Joystick port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_KEYBOARD 0x0D /* Keyboard port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_MOUSE 0x0E /* Mouse port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SSA 0x0F /* SSA SCSI */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_USB 0x10 /* USB */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_FIREWIRE 0x11 /* FireWrite (IEEE P1394) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PCMII 0x12 /* PCMCIA Type II */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PCMIIa 0x13 /* PCMCIA Type II (alternate) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PCMIII 0x14 /* PCMCIA Type III */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_CARDBUS 0x15 /* Cardbus */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_ACCESS 0x16 /* Access Bus Port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SCSI2 0x17 /* SCSI II */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_SCSIW 0x18 /* SCSI Wide */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PC98 0x19 /* PC-98 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PC98HR 0x1A /* PC-98Hireso */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_PCH98 0x1B /* PC-H98 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_VIDEO 0x1C /* Video port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_AUDIO 0x1D /* Audio port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_MODEM 0x1E /* Modem port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_NETWORK 0x1F /* Network port */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_POT_SATA 0x20 /* SATA */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_POT_SAS 0x21 /* SAS */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_8251 0xA0 /* 8251 compatible */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_8251F 0xA1 /* 8251 FIFO compatible */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_POT_OTHER 0xFF /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Slot Information. See DSP0134 Section 3.3.10 for more information.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * See DSP0134 3.3.10.5 for how to interpret the value of smbl_id.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_slot {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbl_name; /* reference designation */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbl_type; /* slot type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbl_width; /* slot data bus width */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbl_usage; /* current usage */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbl_length; /* slot length */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smbl_id; /* slot ID */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbl_ch1; /* slot characteristics 1 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbl_ch2; /* slot characteristics 2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_slot_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_ISA 0x03 /* ISA */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_MCA 0x04 /* MCA */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_EISA 0x05 /* EISA */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PCI 0x06 /* PCI */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PCMCIA 0x07 /* PCMCIA */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_VLVESA 0x08 /* VL-VESA */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PROPRIETARY 0x09 /* proprietary */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PROC 0x0A /* processor card slot */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_MEM 0x0B /* proprietary memory card slot */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_IOR 0x0C /* I/O riser card slot */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_NUBUS 0x0D /* NuBus */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PCI66 0x0E /* PCI (66MHz capable) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_AGP 0x0F /* AGP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_AGP2X 0x10 /* AGP 2X */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_AGP4X 0x11 /* AGP 4X */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PCIX 0x12 /* PCI-X */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_AGP8X 0x13 /* AGP 8X */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PC98_C20 0xA0 /* PC-98/C20 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PC98_C24 0xA1 /* PC-98/C24 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PC98_E 0xA2 /* PC-98/E */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PC98_LB 0xA3 /* PC-98/Local Bus */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PC98_C 0xA4 /* PC-98/Card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLT_PCIE 0xA5 /* PCI Express */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_SLT_PCIE1 0xA6 /* PCI Express x1 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_SLT_PCIE2 0xA7 /* PCI Express x2 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_SLT_PCIE4 0xA8 /* PCI Express x4 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_SLT_PCIE8 0xA9 /* PCI Express x8 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_SLT_PCIE16 0xAA /* PCI Express x16 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_8 0x03 /* 8 bit */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_16 0x04 /* 16 bit */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_32 0x05 /* 32 bit */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_64 0x06 /* 64 bit */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_128 0x07 /* 128 bit */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_1X 0x08 /* 1x or x1 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_2X 0x09 /* 2x or x2 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_4X 0x0A /* 4x or x4 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_8X 0x0B /* 8x or x8 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_12X 0x0C /* 12x or x12 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_16X 0x0D /* 16x or x16 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLW_32X 0x0E /* 32x or x32 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLU_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLU_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLU_AVAIL 0x03 /* available */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLU_INUSE 0x04 /* in use */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLL_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLL_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLL_SHORT 0x03 /* short length */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLL_LONG 0x04 /* long length */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_UNKNOWN 0x01 /* characteristics unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_5V 0x02 /* provides 5.0V */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_33V 0x04 /* provides 3.3V */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_SHARED 0x08 /* opening shared with other slot */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_PC16 0x10 /* slot supports PC Card-16 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_PCCB 0x20 /* slot supports CardBus */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_PCZV 0x40 /* slot supports Zoom Video */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH1_PCMRR 0x80 /* slot supports Modem Ring Resume */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH2_PME 0x01 /* slot supports PME# signal */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH2_HOTPLUG 0x02 /* slot supports hot-plug devices */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_SLCH2_SMBUS 0x04 /* slot supports SMBus signal */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS On-Board Device Information. See DSP0134 Section 3.3.11 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. Any number of on-board device sections may be present, each
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * containing one or more records. The smbios_info_obdevs() function permits
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * the caller to retrieve one or more of the records from a given section.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_obdev {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbd_name; /* description string for this device */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbd_type; /* type code (SMB_OBT_*) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbd_enabled; /* boolean (device is enabled) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_obdev_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_VIDEO 0x03 /* video */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_SCSI 0x04 /* scsi */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_ETHERNET 0x05 /* ethernet */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_TOKEN 0x06 /* token ring */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_OBT_SOUND 0x07 /* sound */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_OBT_PATA 0x08 /* pata */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_OBT_SATA 0x09 /* sata */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_OBT_SAS 0x0A /* sas */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS BIOS Language Information. See DSP0134 Section 3.3.14 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. The smbios_info_strtab() function can be applied using a
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * count of smbla_num to retrieve the other possible language settings.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_lang {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbla_cur; /* current language setting */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint_t smbla_fmt; /* language name format (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint_t smbla_num; /* number of installed languages */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_lang_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_LFMT_LONG 0 /* <ISO639>|<ISO3166>|Encoding Method */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_LFMT_SHORT 1 /* <ISO930><ISO3166> */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS System Event Log Information. See DSP0134 Section 3.3.16 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. Accessing the event log itself requires additional interfaces.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_evtype {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbevt_ltype; /* log type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbevt_dtype; /* variable data format type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_evtype_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_evlog {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws size_t smbev_size; /* size in bytes of log area */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws size_t smbev_hdr; /* offset or index of header */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws size_t smbev_data; /* offset or index of data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbev_method; /* data access method (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbev_flags; /* flags (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbev_format; /* log header format (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbev_pad; /* padding */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbev_token; /* data update change token */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws union {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws struct {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t evi_iaddr; /* index address */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t evi_daddr; /* data address */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws } eva_io; /* i/o address for SMB_EVM_XxY */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t eva_addr; /* address for SMB_EVM_MEM32 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t eva_gpnv; /* handle for SMB_EVM_GPNV */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws } smbev_addr;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbev_typec; /* number of type descriptors */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const smbios_evtype_t *smbev_typev; /* type descriptor array */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_evlog_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVM_1x1i_1x1d 0 /* I/O: 1 1b idx port, 1 1b data port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVM_2x1i_1x1d 1 /* I/O: 2 1b idx port, 1 1b data port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVM_1x2i_1x1d 2 /* I/O: 1 2b idx port, 1 1b data port */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVM_MEM32 3 /* Memory-Mapped 32-bit Physical Addr */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVM_GPNV 4 /* GP Non-Volatile API Access */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVFL_VALID 0x1 /* log area valid */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVFL_FULL 0x2 /* log area full */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVHF_NONE 0 /* no log headers used */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_EVHF_F1 1 /* DMTF log header type 1 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Physical Memory Array Information. See DSP0134 Section 3.3.17 for
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * more information. This describes a collection of physical memory devices.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_memarray {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbma_location; /* physical device location */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbma_use; /* physical device functional purpose */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbma_ecc; /* error detect/correct mechanism */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbma_pad0; /* padding */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbma_pad1; /* padding */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbma_ndevs; /* number of slots or sockets */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbma_err; /* handle of error (if any) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbma_size; /* maximum capacity in bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_memarray_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_SYSMB 0x03 /* system board or motherboard */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_ISA 0x04 /* ISA add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_EISA 0x05 /* EISA add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PCI 0x06 /* PCI add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_MCA 0x07 /* MCA add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PCMCIA 0x08 /* PCMCIA add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PROP 0x09 /* proprietary add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_NUBUS 0x0A /* NuBus */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PC98C20 0xA0 /* PC-98/C20 add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PC98C24 0xA1 /* PC-98/C24 add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PC98E 0xA2 /* PC-98/E add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAL_PC98LB 0xA3 /* PC-98/Local bus add-on card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_SYSTEM 0x03 /* system memory */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_VIDEO 0x04 /* video memory */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_FLASH 0x05 /* flash memory */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_NVRAM 0x06 /* non-volatile RAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAU_CACHE 0x07 /* cache memory */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_NONE 0x03 /* none */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_PARITY 0x04 /* parity */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_SECC 0x05 /* single-bit ECC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_MECC 0x06 /* multi-bit ECC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MAE_CRC 0x07 /* CRC */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Memory Device Information. See DSP0134 Section 3.3.18 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. One or more of these structures are associated with each
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * smbios_memarray_t. A structure is present even for unpopulated sockets.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * Unknown values are set to -1. A smbmd_size of 0 indicates unpopulated.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * WARNING: Some BIOSes appear to export the *maximum* size of the device
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * that can appear in the corresponding socket as opposed to the current one.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_memdevice {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbmd_array; /* handle of physical memory array */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbmd_error; /* handle of memory error data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbmd_twidth; /* total width in bits including ecc */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbmd_dwidth; /* data width in bits */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbmd_size; /* size in bytes (see note above) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmd_form; /* form factor */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmd_set; /* set (0x00=none, 0xFF=unknown) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmd_type; /* memory type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmd_pad; /* padding */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbmd_flags; /* flags (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbmd_speed; /* speed in nanoseconds */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbmd_dloc; /* physical device locator string */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const char *smbmd_bloc; /* physical bank locator string */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_memdevice_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_SIMM 0x03 /* SIMM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_SIP 0x04 /* SIP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_CHIP 0x05 /* chip */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_DIP 0x06 /* DIP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_ZIP 0x07 /* ZIP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_PROP 0x08 /* proprietary card */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_DIMM 0x09 /* DIMM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_TSOP 0x0A /* TSOP */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_CHIPROW 0x0B /* row of chips */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_RIMM 0x0C /* RIMM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_SODIMM 0x0D /* SODIMM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDFF_SRIMM 0x0E /* SRIMM */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_MDFF_FBDIMM 0x0F /* FBDIMM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_OTHER 0x01 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_UNKNOWN 0x02 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_DRAM 0x03 /* DRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_EDRAM 0x04 /* EDRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_VRAM 0x05 /* VRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_SRAM 0x06 /* SRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_RAM 0x07 /* RAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_ROM 0x08 /* ROM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_FLASH 0x09 /* FLASH */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_EEPROM 0x0A /* EEPROM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_FEPROM 0x0B /* FEPROM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_EPROM 0x0C /* EPROM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_CDRAM 0x0D /* CDRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_3DRAM 0x0E /* 3DRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_SDRAM 0x0F /* SDRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_SGRAM 0x10 /* SGRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_RDRAM 0x11 /* RDRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_DDR 0x12 /* DDR */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDT_DDR2 0x13 /* DDR2 */
42a58d9da2d06f11c75f3d4ef25f081457e81654sethg#define SMB_MDT_DDR2FBDIMM 0x14 /* DDR2 FBDIMM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_OTHER 0x0002 /* other */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_UNKNOWN 0x0004 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_FASTPG 0x0008 /* fast-paged */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_STATIC 0x0010 /* static column */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_PSTATIC 0x0020 /* pseudo-static */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_RAMBUS 0x0040 /* RAMBUS */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_SYNC 0x0080 /* synchronous */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_CMOS 0x0100 /* CMOS */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_EDO 0x0200 /* EDO */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_WDRAM 0x0400 /* Window DRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_CDRAM 0x0800 /* Cache DRAM */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_MDF_NV 0x1000 /* non-volatile */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Memory Array Mapped Address. See DSP0134 Section 3.3.20 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. We convert start/end addresses into addr/size for convenience.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_memarrmap {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbmam_array; /* physical memory array handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbmam_width; /* number of devices that form a row */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbmam_addr; /* physical address of mapping */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbmam_size; /* size in bytes of address range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_memarrmap_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Memory Device Mapped Address. See DSP0134 Section 3.3.21 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. We convert start/end addresses into addr/size for convenience.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_memdevmap {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbmdm_device; /* memory device handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbmdm_arrmap; /* memory array mapped address handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbmdm_addr; /* physical address of mapping */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbmdm_size; /* size in bytes of address range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmdm_rpos; /* partition row position */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmdm_ipos; /* interleave position */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbmdm_idepth; /* interleave data depth */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_memdevmap_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Hardware Security Settings. See DSP0134 Section 3.3.25 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. Only one such record will be present in the SMBIOS.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_hwsec {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbh_pwr_ps; /* power-on password status */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbh_kbd_ps; /* keyboard password status */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbh_adm_ps; /* administrator password status */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbh_pan_ps; /* front panel reset status */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_hwsec_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_HWSEC_PS_DISABLED 0x00 /* password disabled */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_HWSEC_PS_ENABLED 0x01 /* password enabled */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_HWSEC_PS_NOTIMPL 0x02 /* password not implemented */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_HWSEC_PS_UNKNOWN 0x03 /* password status unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS System Boot Information. See DSP0134 Section 3.3.33 for more
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * information. The contents of the data varies by type and is undocumented
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * from the perspective of DSP0134 -- it seems to be left as vendor-specific.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The (D) annotation next to SMB_BOOT_* below indicates possible data payload.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_boot {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint8_t smbt_status; /* boot status code (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const void *smbt_data; /* data buffer specific to status */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws size_t smbt_size; /* size of smbt_data buffer in bytes */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_boot_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_NORMAL 0 /* no errors detected */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_NOMEDIA 1 /* no bootable media */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_OSFAIL 2 /* normal o/s failed to load */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_FWHWFAIL 3 /* firmware-detected hardware failure */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_OSHWFAIL 4 /* o/s-detected hardware failure */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_USERREQ 5 /* user-requested boot (keystroke) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_SECURITY 6 /* system security violation */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_PREVREQ 7 /* previously requested image (D) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_WATCHDOG 8 /* watchdog initiated reboot */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_RESV_LO 9 /* low end of reserved range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_RESV_HI 127 /* high end of reserved range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_OEM_LO 128 /* low end of OEM-specific range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_OEM_HI 191 /* high end of OEM-specific range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_PROD_LO 192 /* low end of product-specific range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_BOOT_PROD_HI 255 /* high end of product-specific range */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS IPMI Device Information. See DSP0134 Section 3.3.39 and also
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * Appendix C1 of the IPMI specification for more information on this record.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_ipmi {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint_t smbip_type; /* BMC interface type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws smbios_version_t smbip_vers; /* BMC's IPMI specification version */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbip_i2c; /* BMC I2C bus slave address */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbip_bus; /* bus ID of NV storage device, or -1 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint64_t smbip_addr; /* BMC base address */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint32_t smbip_flags; /* flags (see below) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smbip_intr; /* interrupt number (or zero if none) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint16_t smbip_regspacing; /* i/o space register spacing (bytes) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_ipmi_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_T_UNKNOWN 0x00 /* unknown */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_T_KCS 0x01 /* KCS: Keyboard Controller Style */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_T_SMIC 0x02 /* SMIC: Server Mgmt Interface Chip */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_T_BT 0x03 /* BT: Block Transfer */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_T_SSIF 0x04 /* SSIF: SMBus System Interface */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_F_IOADDR 0x01 /* base address is in i/o space */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_F_INTRSPEC 0x02 /* intr information is specified */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_F_INTRHIGH 0x04 /* intr active high (else low) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_IPMI_F_INTREDGE 0x08 /* intr is edge triggered (else lvl) */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * SMBIOS Interfaces. An SMBIOS image can be opened by either providing a file
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * pathname, device pathname, file descriptor, or raw memory buffer. Once an
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * image is opened the functions below can be used to iterate over the various
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * structures and convert the underlying data representation into the simpler
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * data structures described earlier in this header file. The SMB_VERSION
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * constant specified when opening an image indicates the version of the ABI
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * the caller expects and the DMTF SMBIOS version the client can understand.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The library will then map older or newer data structures to that as needed.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_VERSION_23 0x0203 /* SMBIOS encoding for DMTF spec 2.3 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_VERSION_24 0x0204 /* SMBIOS encoding for DMTF spec 2.4 */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_VERSION SMB_VERSION_24 /* SMBIOS latest version definitions */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_O_NOCKSUM 0x1 /* do not verify header checksums */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_O_NOVERS 0x2 /* do not verify header versions */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_O_ZIDS 0x4 /* strip out identification numbers */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_O_MASK 0x7 /* mask of valid smbios_*open flags */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ID_NOTSUP 0xFFFE /* structure is not supported by BIOS */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ID_NONE 0xFFFF /* structure is a null reference */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#define SMB_ERR (-1) /* id_t value indicating error */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_hdl smbios_hdl_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef struct smbios_struct {
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws id_t smbstr_id; /* structure ID handle */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws uint_t smbstr_type; /* structure type */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const void *smbstr_data; /* structure data */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws size_t smbstr_size; /* structure size */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws} smbios_struct_t;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwstypedef int smbios_struct_f(smbios_hdl_t *,
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const smbios_struct_t *, void *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern smbios_hdl_t *smbios_open(const char *, int, int, int *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern smbios_hdl_t *smbios_fdopen(int, int, int, int *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern smbios_hdl_t *smbios_bufopen(const smbios_entry_t *,
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws const void *, size_t, int, int, int *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const void *smbios_buf(smbios_hdl_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern size_t smbios_buflen(smbios_hdl_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern void smbios_checksum(smbios_hdl_t *, smbios_entry_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_write(smbios_hdl_t *, int);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern void smbios_close(smbios_hdl_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_errno(smbios_hdl_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_errmsg(int);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_lookup_id(smbios_hdl_t *, id_t, smbios_struct_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_iter(smbios_hdl_t *, smbios_struct_f *, void *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern void smbios_info_smbios(smbios_hdl_t *, smbios_entry_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_common(smbios_hdl_t *, id_t, smbios_info_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_bios(smbios_hdl_t *, smbios_bios_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_system(smbios_hdl_t *, smbios_system_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_bboard(smbios_hdl_t *, id_t, smbios_bboard_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_chassis(smbios_hdl_t *, id_t, smbios_chassis_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_processor(smbios_hdl_t *, id_t, smbios_processor_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_cache(smbios_hdl_t *, id_t, smbios_cache_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_port(smbios_hdl_t *, id_t, smbios_port_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_slot(smbios_hdl_t *, id_t, smbios_slot_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_obdevs(smbios_hdl_t *, id_t, int, smbios_obdev_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_strtab(smbios_hdl_t *, id_t, int, const char *[]);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_lang(smbios_hdl_t *, smbios_lang_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_eventlog(smbios_hdl_t *, smbios_evlog_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_memarray(smbios_hdl_t *, id_t, smbios_memarray_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_memarrmap(smbios_hdl_t *, id_t, smbios_memarrmap_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_memdevice(smbios_hdl_t *, id_t, smbios_memdevice_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int smbios_info_memdevmap(smbios_hdl_t *, id_t, smbios_memdevmap_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_hwsec(smbios_hdl_t *, smbios_hwsec_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_boot(smbios_hdl_t *, smbios_boot_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern id_t smbios_info_ipmi(smbios_hdl_t *, smbios_ipmi_t *);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#ifndef _KERNEL
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * The smbios_*_desc() and smbios_*_name() interfaces can be used for utilities
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * such as smbios(1M) that wish to decode SMBIOS fields for humans. The _desc
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * functions return the comment string next to the #defines listed above, and
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * the _name functions return the appropriate #define identifier itself.
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bboard_flag_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bboard_flag_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bboard_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bios_flag_desc(uint64_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bios_flag_name(uint64_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bios_xb1_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bios_xb1_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bios_xb2_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_bios_xb2_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_boot_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_assoc_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_ctype_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_ctype_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_ecc_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_flag_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_flag_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_loc_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_logical_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_cache_mode_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_chassis_state_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_chassis_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_evlog_flag_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_evlog_flag_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_evlog_format_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_evlog_method_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_ipmi_flag_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_ipmi_flag_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_ipmi_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_hwsec_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memarray_loc_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memarray_use_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memarray_ecc_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memdevice_form_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memdevice_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memdevice_flag_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_memdevice_flag_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_port_conn_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_port_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_processor_family_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_processor_status_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_processor_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_processor_upgrade_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_width_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_usage_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_length_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_ch1_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_ch1_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_ch2_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_slot_ch2_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_type_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_type_name(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern const char *smbios_system_wakeup_desc(uint_t);
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#endif /* !_KERNEL */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#ifdef _KERNEL
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws/*
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * For SMBIOS clients within the kernel itself, ksmbios is used to refer to
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * the kernel's current snapshot of the SMBIOS, if one exists, and the
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws * ksmbios_flags tunable is the set of flags for use with smbios_open().
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern smbios_hdl_t *ksmbios;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mwsextern int ksmbios_flags;
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#endif /* _KERNEL */
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#ifdef __cplusplus
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws}
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#endif
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws
84ab085a13f931bc78e7415e7ce921dbaa14fcb3mws#endif /* _SYS_SMBIOS_H */