1/* ----------------------------------------------------------------------- * 2 * 3 * Copyright 2006 Erwan Velu - All Rights Reserved 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, Inc., 53 Temple Place Ste 330, 8 * Boston MA 02111-1307, USA; either version 2 of the License, or 9 * (at your option) any later version; incorporated herein by reference. 10 * 11 * ----------------------------------------------------------------------- */ 12 13#ifndef DMI_BIOS_H 14#define DMI_BIOS_H 15 16#include "stdbool.h" 17#define BIOS_VENDOR_SIZE 65 18#define BIOS_VERSION_SIZE 65 19#define BIOS_RELEASE_SIZE 65 20#define BIOS_RUNTIME_SIZE_UNIT_SIZE 16 21#define BIOS_ROM_UNIT_SIZE 16 22#define BIOS_BIOS_REVISION_SIZE 16 23#define BIOS_FIRMWARE_REVISION_SIZE 16 24 25#define BIOS_CHAR_NB_ELEMENTS 29 26#define BIOS_CHAR_X1_NB_ELEMENTS 8 27#define BIOS_CHAR_X2_NB_ELEMENTS 3 28 29extern const char *bios_charac_strings[]; 30 31/* this struct has BIOS_CHAR_NB_ELEMENTS */ 32/* each bool is associated with the relevant message above */ 33typedef struct { 34 bool bios_characteristics_not_supported; 35 bool isa; 36 bool mca; 37 bool eisa; 38 bool pci; 39 bool pc_card; 40 bool pnp; 41 bool apm; 42 bool bios_upgreadable; 43 bool bios_shadowing; 44 bool vlb; 45 bool escd; 46 bool boot_from_cd; 47 bool selectable_boot; 48 bool bios_rom_socketed; 49 bool boot_from_pcmcia; 50 bool edd; 51 bool japanese_floppy_nec_9800_1_2MB; 52 bool japanese_floppy_toshiba_1_2MB; 53 bool floppy_5_25_360KB; 54 bool floppy_5_25_1_2MB; 55 bool floppy_3_5_720KB; 56 bool floppy_3_5_2_88MB; 57 bool print_screen; 58 bool keyboard_8042_support; 59 bool serial_support; 60 bool printer_support; 61 bool cga_mono_support; 62 bool nec_pc_98; 63} __attribute__ ((__packed__)) s_characteristics; 64 65extern const char *bios_charac_x1_strings[]; 66 67/* this struct has BIOS_CHAR_X1_NB_ELEMENTS */ 68/* each bool is associated with the relevant message above */ 69typedef struct { 70 bool acpi; 71 bool usb_legacy; 72 bool agp; 73 bool i2o_boot; 74 bool ls_120_boot; 75 bool zip_drive_boot; 76 bool ieee_1394_boot; 77 bool smart_battery; 78} __attribute__ ((__packed__)) s_characteristics_x1; 79 80extern const char *bios_charac_x2_strings[]; 81 82/* this struct has BIOS_CHAR_X2_NB_ELEMENTS */ 83/* each bool is associated with the relevant message above */ 84typedef struct { 85 bool bios_boot_specification; 86 bool bios_network_boot_by_keypress; 87 bool target_content_distribution; 88} __attribute__ ((__packed__)) s_characteristics_x2; 89 90typedef struct { 91 char vendor[BIOS_VENDOR_SIZE]; 92 char version[BIOS_VERSION_SIZE]; 93 char release_date[BIOS_RELEASE_SIZE]; 94 uint16_t address; 95 uint16_t runtime_size; 96 char runtime_size_unit[BIOS_RUNTIME_SIZE_UNIT_SIZE]; 97 uint16_t rom_size; 98 char rom_size_unit[BIOS_ROM_UNIT_SIZE]; 99 s_characteristics characteristics; 100 s_characteristics_x1 characteristics_x1; 101 s_characteristics_x2 characteristics_x2; 102 char bios_revision[BIOS_BIOS_REVISION_SIZE]; 103 char firmware_revision[BIOS_FIRMWARE_REVISION_SIZE]; 104/* The filled field have to be set to true when the dmitable implement that item */ 105 bool filled; 106} s_bios; 107 108#endif 109