X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Finclude%2Fboot%2Fcoreboot_tables.h;h=46d64898b47cbcd6284ba2f3f7e068d799cca3b3;hb=2e43867a20107014cba1f32137adfee8af35a05d;hp=0385db9093c487f780ab4e6a109496c6eb0a2cbc;hpb=73d5daaf97465776a4ef6ae5c99a5badaeba292b;p=coreboot.git diff --git a/src/include/boot/coreboot_tables.h b/src/include/boot/coreboot_tables.h index 0385db909..46d64898b 100644 --- a/src/include/boot/coreboot_tables.h +++ b/src/include/boot/coreboot_tables.h @@ -8,7 +8,7 @@ * is expected to be information that cannot be discovered by * other means, such as quering the hardware directly. * - * All of the information should be Position Independent Data. + * All of the information should be Position Independent Data. * That is it should be safe to relocated any of the information * without it's meaning/correctnes changing. For table that * can reasonably be used on multiple architectures the data @@ -31,9 +31,9 @@ * table entries and be backwards compatible, but it is not required. */ -/* Since coreboot is usually compiled 32bit, gcc will align 64bit - * types to 32bit boundaries. If the coreboot table is dumped on a - * 64bit system, a uint64_t would be aligned to 64bit boundaries, +/* Since coreboot is usually compiled 32bit, gcc will align 64bit + * types to 32bit boundaries. If the coreboot table is dumped on a + * 64bit system, a uint64_t would be aligned to 64bit boundaries, * breaking the table format. * * lb_uint64 will keep 64bit coreboot table values aligned to 32bit @@ -50,22 +50,20 @@ struct lb_uint64 { static inline uint64_t unpack_lb64(struct lb_uint64 value) { - uint64_t result; - result = value.hi; - result = (result << 32) + value.lo; - return result; + uint64_t result; + result = value.hi; + result = (result << 32) + value.lo; + return result; } static inline struct lb_uint64 pack_lb64(uint64_t value) { - struct lb_uint64 result; - result.lo = (value >> 0) & 0xffffffff; - result.hi = (value >> 32) & 0xffffffff; - return result; + struct lb_uint64 result; + result.lo = (value >> 0) & 0xffffffff; + result.hi = (value >> 32) & 0xffffffff; + return result; } - - struct lb_header { uint8_t signature[4]; /* LBIO */ @@ -76,10 +74,10 @@ struct lb_header uint32_t table_entries; }; -/* Every entry in the boot enviroment list will correspond to a boot +/* Every entry in the boot environment list will correspond to a boot * info record. Encoding both type and size. The type is obviously * so you can tell what it is. The size allows you to skip that - * boot enviroment record if you don't know what it easy. This allows + * boot environment record if you don't know what it easy. This allows * forward compatibility with records not yet defined. */ struct lb_record { @@ -87,17 +85,21 @@ struct lb_record { uint32_t size; /* size of record (in bytes) */ }; -#define LB_TAG_UNUSED 0x0000 +#define LB_TAG_UNUSED 0x0000 -#define LB_TAG_MEMORY 0x0001 +#define LB_TAG_MEMORY 0x0001 struct lb_memory_range { struct lb_uint64 start; struct lb_uint64 size; uint32_t type; -#define LB_MEM_RAM 1 /* Memory anyone can use */ -#define LB_MEM_RESERVED 2 /* Don't use this memory region */ -#define LB_MEM_TABLE 16 /* Ram configuration tables are kept in */ +#define LB_MEM_RAM 1 /* Memory anyone can use */ +#define LB_MEM_RESERVED 2 /* Don't use this memory region */ +#define LB_MEM_ACPI 3 /* ACPI Tables */ +#define LB_MEM_NVS 4 /* ACPI NVS Memory */ +#define LB_MEM_UNUSABLE 5 /* Unusable address space */ +#define LB_MEM_VENDOR_RSVD 6 /* Vendor Reserved */ +#define LB_MEM_TABLE 16 /* Ram configuration tables are kept in */ }; struct lb_memory { @@ -106,7 +108,7 @@ struct lb_memory { struct lb_memory_range map[0]; }; -#define LB_TAG_HWRPB 0x0002 +#define LB_TAG_HWRPB 0x0002 struct lb_hwrpb { uint32_t tag; uint32_t size; @@ -144,7 +146,10 @@ struct lb_string { struct lb_serial { uint32_t tag; uint32_t size; - uint16_t ioport; +#define LB_SERIAL_TYPE_IO_MAPPED 1 +#define LB_SERIAL_TYPE_MEMORY_MAPPED 2 + uint32_t type; + uint32_t baseaddr; uint32_t baud; }; @@ -155,6 +160,14 @@ struct lb_console { uint16_t type; }; +#define LB_TAG_CONSOLE_SERIAL8250 0 +#define LB_TAG_CONSOLE_VGA 1 // OBSOLETE +#define LB_TAG_CONSOLE_BTEXT 2 // OBSOLETE +#define LB_TAG_CONSOLE_LOGBUF 3 +#define LB_TAG_CONSOLE_SROM 4 // OBSOLETE +#define LB_TAG_CONSOLE_EHCI 5 +#define LB_TAG_CONSOLE_SERIAL8250MEM 6 + #define LB_TAG_FORWARD 0x0011 struct lb_forward { uint32_t tag; @@ -162,12 +175,33 @@ struct lb_forward { uint64_t forward; }; -#define LB_TAG_CONSOLE_SERIAL8250 0 -#define LB_TAG_CONSOLE_VGA 1 -#define LB_TAG_CONSOLE_BTEXT 2 -#define LB_TAG_CONSOLE_LOGBUF 3 -#define LB_TAG_CONSOLE_SROM 4 -#define LB_TAG_CONSOLE_EHCI 5 +#define LB_TAG_FRAMEBUFFER 0x0012 +struct lb_framebuffer { + uint32_t tag; + uint32_t size; + + uint64_t physical_address; + uint32_t x_resolution; + uint32_t y_resolution; + uint32_t bytes_per_line; + uint8_t bits_per_pixel; + uint8_t red_mask_pos; + uint8_t red_mask_size; + uint8_t green_mask_pos; + uint8_t green_mask_size; + uint8_t blue_mask_pos; + uint8_t blue_mask_size; + uint8_t reserved_mask_pos; + uint8_t reserved_mask_size; +}; + +#define LB_TAG_TIMESTAMPS 0x0016 +struct lb_tstamp { + uint32_t tag; + uint32_t size; + + void *tstamp_tab; +}; /* The following structures are for the cmos definitions table */ #define LB_TAG_CMOS_OPTION_TABLE 200 @@ -194,7 +228,7 @@ struct cmos_entries { uint32_t config; /* e=enumeration, h=hex, r=reserved */ uint32_t config_id; /* a number linking to an enumeration record */ #define CMOS_MAX_NAME_LENGTH 32 - uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name of entry in ascii, + uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name of entry in ascii, variable length int aligned */ }; @@ -210,7 +244,7 @@ struct cmos_enums { uint32_t config_id; /* a number identifying the config id */ uint32_t value; /* the value associated with the text */ #define CMOS_MAX_TEXT_LENGTH 32 - uint8_t text[CMOS_MAX_TEXT_LENGTH]; /* enum description in ascii, + uint8_t text[CMOS_MAX_TEXT_LENGTH]; /* enum description in ascii, variable length int aligned */ }; @@ -242,6 +276,4 @@ struct cmos_checksum { #define CHECKSUM_PCBIOS 1 }; - - #endif /* COREBOOT_TABLES_H */