From 95a6e1cab25abbae51dd2c02cd9158f53a0212a7 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Thu, 7 Aug 2008 10:21:05 +0000 Subject: add get_option to libpayload, so coreboot cmos options can be queried. Signed-off-by: Stefan Reinauer Acked-by: Jordan Crouse Acked-by: Peter Stuge git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3474 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- payloads/libpayload/include/coreboot_tables.h | 52 ++++++++++++++++++++++++++- payloads/libpayload/include/sysinfo.h | 5 +++ 2 files changed, 56 insertions(+), 1 deletion(-) (limited to 'payloads/libpayload/include') diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h index 88dc251cd8..a289a91c6f 100644 --- a/payloads/libpayload/include/coreboot_tables.h +++ b/payloads/libpayload/include/coreboot_tables.h @@ -128,7 +128,57 @@ struct cb_console { #define CB_TAG_CONSOLE_SROM 4 #define CB_TAG_CONSOLE_EHCI 5 -/* Still to come: CMOS information. */ +#define CB_TAG_CMOS_OPTION_TABLE 0x00c8 +struct cb_cmos_option_table { + u32 tag; + u32 size; + u32 header_length; +}; + +#define CB_TAG_OPTION 0x00c9 +#define CMOS_MAX_NAME_LENGTH 32 +struct cb_cmos_entries { + u32 tag; + u32 size; + u32 bit; + u32 length; + u32 config; + u32 config_id; + u8 name[CMOS_MAX_NAME_LENGTH]; +}; + + +#define CB_TAG_OPTION_ENUM 0x00ca +#define CMOS_MAX_TEXT_LENGTH 32 +struct cb_cmos_enums { + u32 tag; + u32 size; + u32 config_id; + u32 value; + u8 text[CMOS_MAX_TEXT_LENGTH]; +}; + +#define CB_TAG_OPTION_DEFAULTS 0x00cb +#define CMOS_IMAGE_BUFFER_SIZE 128 +struct cb_cmos_defaults { + u32 tag; + u32 size; + u32 name_length; + u8 name[CMOS_MAX_NAME_LENGTH]; + u8 default_set[CMOS_IMAGE_BUFFER_SIZE]; +}; + +#define CB_TAG_OPTION_CHECKSUM 0x00cc +#define CHECKSUM_NONE 0 +#define CHECKSUM_PCBIOS 1 +struct cb_cmos_checksum { + u32 tag; + u32 size; + u32 range_start; + u32 range_end; + u32 location; + u32 type; +}; /* Helpful macros */ diff --git a/payloads/libpayload/include/sysinfo.h b/payloads/libpayload/include/sysinfo.h index aebbff6481..1e83488a52 100644 --- a/payloads/libpayload/include/sysinfo.h +++ b/payloads/libpayload/include/sysinfo.h @@ -43,6 +43,11 @@ struct sysinfo_t { unsigned long long base; unsigned long long size; } memrange[SYSINFO_MAX_MEM_RANGES]; + + struct cb_cmos_option_table *option_table; + u32 cmos_range_start; + u32 cmos_range_end; + u32 cmos_checksum_location; }; extern struct sysinfo_t lib_sysinfo; -- cgit v1.2.3