root/arch/i386/include/smbiosvar.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    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

/* [<][>][^][v][top][bottom][index][help] */