[BACK]Return to smbiosvar.h CVS log [TXT][DIR] Up to [local] / sys / arch / i386 / include

Annotation of sys/arch/i386/include/smbiosvar.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: smbiosvar.h,v 1.3 2006/07/17 20:34:31 fgsch Exp $     */
        !             2: /*
        !             3:  * Copyright (c) 2006 Gordon Willem Klok <gklok@cogeco.ca>
        !             4:  * Copyright (c) 2005 Jordan Hargrave
        !             5:  * All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  *
        !            16:  * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
        !            17:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            18:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            19:  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
        !            20:  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            21:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            22:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            23:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            24:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            25:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            26:  * SUCH DAMAGE.
        !            27:  */
        !            28: #ifndef _I386_SMBIOSVAR_
        !            29: #define _I386_SMBIOSVAR_
        !            30:
        !            31: #define SMBIOS_START                   0xf0000
        !            32: #define SMBIOS_END                     0xfffff
        !            33:
        !            34: #define SMBIOS_UUID_NPRESENT           0x1
        !            35: #define SMBIOS_UUID_NSET               0x2
        !            36:
        !            37: /*
        !            38:  * Section 3.5 of "UUIDs and GUIDs" found at
        !            39:  * http://www.opengroup.org/dce/info/draft-leach-uuids-guids-01.txt
        !            40:  * specifies the string repersentation of a UUID.
        !            41:  */
        !            42: #define SMBIOS_UUID_REP "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x"
        !            43: #define SMBIOS_UUID_REPLEN 37 /* 16 zero padded values, 4 hyphens, 1 null */
        !            44:
        !            45: struct smbios_entry {
        !            46:        u_int8_t        mjr;
        !            47:        u_int8_t        min;
        !            48:        u_int8_t        *addr;
        !            49:        u_int16_t       len;
        !            50:        u_int16_t       count;
        !            51: };
        !            52:
        !            53: struct smbhdr {
        !            54:        u_int32_t       sig;            /* "_SM_" */
        !            55:        u_int8_t        checksum;       /* Entry point checksum */
        !            56:        u_int8_t        len;            /* Entry point structure length */
        !            57:        u_int8_t        majrev;         /* Specification major revision */
        !            58:        u_int8_t        minrev;         /* Specification minor revision */
        !            59:        u_int16_t       mss;            /* Maximum Structure Size */
        !            60:        u_int8_t        epr;            /* Entry Point Revision */
        !            61:        u_int8_t        fa[5];          /* value determined by EPR */
        !            62:        u_int8_t        sasig[5];       /* Secondary Anchor "_DMI_" */
        !            63:        u_int8_t        sachecksum;     /* Secondary Checksum */
        !            64:        u_int16_t       size;           /* Length of structure table in bytes */
        !            65:        u_int32_t       addr;           /* Structure table address */
        !            66:        u_int16_t       count;          /* Number of SMBIOS structures */
        !            67:        u_int8_t        rev;            /* BCD revision */
        !            68: } __packed;
        !            69:
        !            70: struct smbtblhdr {
        !            71:        u_int8_t        type;
        !            72:        u_int8_t        size;
        !            73:        u_int16_t       handle;
        !            74: } __packed;
        !            75:
        !            76: struct smbtable {
        !            77:        struct smbtblhdr *hdr;
        !            78:        void             *tblhdr;
        !            79:        u_int32_t        cookie;
        !            80: };
        !            81:
        !            82: #define        SMBIOS_TYPE_BIOS                0
        !            83: #define        SMBIOS_TYPE_SYSTEM              1
        !            84: #define        SMBIOS_TYPE_BASEBOARD           2
        !            85: #define        SMBIOS_TYPE_ENCLOSURE           3
        !            86: #define        SMBIOS_TYPE_PROCESSOR           4
        !            87: #define        SMBIOS_TYPE_MEMCTRL             5
        !            88: #define        SMBIOS_TYPE_MEMMOD              6
        !            89: #define        SMBIOS_TYPE_CACHE               7
        !            90: #define        SMBIOS_TYPE_PORT                8
        !            91: #define        SMBIOS_TYPE_SLOTS               9
        !            92: #define        SMBIOS_TYPE_OBD                 10
        !            93: #define        SMBIOS_TYPE_OEM                 11
        !            94: #define        SMBIOS_TYPE_SYSCONFOPT          12
        !            95: #define        SMBIOS_TYPE_BIOSLANG            13
        !            96: #define        SMBIOS_TYPE_GROUPASSOC          14
        !            97: #define        SMBIOS_TYPE_SYSEVENTLOG         15
        !            98: #define        SMBIOS_TYPE_PHYMEM              16
        !            99: #define        SMBIOS_TYPE_MEMDEV              17
        !           100: #define        SMBIOS_TYPE_ECCINFO32           18
        !           101: #define        SMBIOS_TYPE_MEMMAPARRAYADDR     19
        !           102: #define        SMBIOS_TYPE_MEMMAPDEVADDR       20
        !           103: #define        SMBIOS_TYPE_INBUILTPOINT        21
        !           104: #define        SMBIOS_TYPE_PORTBATT            22
        !           105: #define        SMBIOS_TYPE_SYSRESET            23
        !           106: #define        SMBIOS_TYPE_HWSECUIRTY          24
        !           107: #define        SMBIOS_TYPE_PWRCTRL             25
        !           108: #define        SMBIOS_TYPE_VOLTPROBE           26
        !           109: #define        SMBIOS_TYPE_COOLING             27
        !           110: #define        SMBIOS_TYPE_TEMPPROBE           28
        !           111: #define        SMBIOS_TYPE_CURRENTPROBE        29
        !           112: #define        SMBIOS_TYPE_OOB_REMOTEACCESS    30
        !           113: #define        SMBIOS_TYPE_BIS                 31
        !           114: #define        SMBIOS_TYPE_SBI                 32
        !           115: #define        SMBIOS_TYPE_ECCINFO64           33
        !           116: #define        SMBIOS_TYPE_MGMTDEV             34
        !           117: #define        SMBIOS_TYPE_MGTDEVCOMP          35
        !           118: #define        SMBIOS_TYPE_MGTDEVTHRESH        36
        !           119: #define        SMBIOS_TYPE_MEMCHANNEL          37
        !           120: #define        SMBIOS_TYPE_IPMIDEV             38
        !           121: #define        SMBIOS_TYPE_SPS                 39
        !           122: #define        SMBIOS_TYPE_INACTIVE            126
        !           123: #define        SMBIOS_TYPE_EOT                 127
        !           124:
        !           125: /*
        !           126:  * SMBIOS Structure Type 0 "BIOS Information"
        !           127:  * DMTF Specification DSP0134 Section: 3.3.1 p.g. 34
        !           128:  */
        !           129: struct smbios_struct_bios {
        !           130:        u_int8_t        vendor;         /* string */
        !           131:        u_int8_t        version;        /* string */
        !           132:        u_int16_t       startaddr;
        !           133:        u_int8_t        release;        /* string */
        !           134:        u_int8_t        romsize;
        !           135:        u_int64_t       characteristics;
        !           136:        u_int32_t       charext;
        !           137:        u_int8_t        major_rel;
        !           138:        u_int8_t        minor_rel;
        !           139:        u_int8_t        ecf_mjr_rel;    /* embedded controler firmware */
        !           140:        u_int8_t        ecf_min_rel;    /* embedded controler firmware */
        !           141: } __packed;
        !           142:
        !           143: /*
        !           144:  * SMBIOS Structure Type 1 "System Information"
        !           145:  * DMTF Specification DSP0134 Section 3.3.2 p.g. 35
        !           146:  */
        !           147:
        !           148: struct smbios_sys {
        !           149: /* SMBIOS spec 2.0+ */
        !           150:        u_int8_t        vendor;         /* string */
        !           151:        u_int8_t        product;        /* string */
        !           152:        u_int8_t        version;        /* string */
        !           153:        u_int8_t        serial;         /* string */
        !           154: /* SMBIOS spec 2.1+ */
        !           155:        u_int8_t        uuid[16];
        !           156:        u_int8_t        wakeup;
        !           157: /* SMBIOS spec 2.4+ */
        !           158:        u_int8_t        sku;            /* string */
        !           159:        u_int8_t        family;         /* string */
        !           160: } __packed;
        !           161:
        !           162: /*
        !           163:  * SMBIOS Structure Type 2 "Base Board (Module) Information"
        !           164:  * DMTF Specification DSP0134 Section 3.3.3 p.g. 37
        !           165:  */
        !           166: struct smbios_board {
        !           167:        u_int8_t        vendor;         /* string */
        !           168:        u_int8_t        product;        /* string */
        !           169:        u_int8_t        version;        /* string */
        !           170:        u_int8_t        serial;         /* string */
        !           171:        u_int8_t        asset;          /* stirng */
        !           172:        u_int8_t        feature;        /* feature flags */
        !           173:        u_int8_t        location;       /* location in chassis */
        !           174:        u_int16_t       handle;         /* chassis handle */
        !           175:        u_int8_t        type;           /* board type */
        !           176:        u_int8_t        noc;            /* number of contained objects */
        !           177: } __packed;
        !           178:
        !           179: /*
        !           180:  * SMBIOS Structure Type 38 "IPMI Information"
        !           181:  * DMTF Specification DSP0134 Section 3.3.39 p.g. 91
        !           182:  */
        !           183: struct smbios_ipmi {
        !           184:         u_int8_t        smipmi_if_type;         /* IPMI Interface Type */
        !           185:         u_int8_t        smipmi_if_rev;          /* BCD IPMI Revision */
        !           186:         u_int8_t        smipmi_i2c_address;     /* I2C address of BMC */
        !           187:         u_int8_t        smipmi_nvram_address;   /* I2C address of NVRAM
        !           188:                                                 * storage */
        !           189:         u_int64_t       smipmi_base_address;    /* Base address of BMC (BAR
        !           190:                                                 * format */
        !           191:         u_int8_t        smipmi_base_flags;      /* Flags field:
        !           192:                                                 * bit 7:6 : register spacing
        !           193:                                                 *   00 = byte
        !           194:                                                 *   01 = dword
        !           195:                                                 *   02 = word
        !           196:                                                 * bit 4 : Lower bit BAR
        !           197:                                                 * bit 3 : IRQ valid
        !           198:                                                 * bit 2 : N/A
        !           199:                                                 * bit 1 : Interrupt polarity
        !           200:                                                 * bit 0 : Interrupt trigger */
        !           201:         u_int8_t        smipmi_irq;             /* IRQ if applicable */
        !           202: } __packed;
        !           203:
        !           204: int smbios_find_table(u_int8_t, struct smbtable *);
        !           205: char *smbios_get_string(struct smbtable *, u_int8_t, char *, size_t);
        !           206:
        !           207: #endif

CVSweb