Add timestamp table pointer to the coreboot table.
[coreboot.git] / src / include / boot / coreboot_tables.h
index e9e1b8f3decc3b8d899270f699fbc3e70a861e02..46d64898b47cbcd6284ba2f3f7e068d799cca3b3 100644 (file)
@@ -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
  * See also: util/lbtdump/lbtdump.c
  */
 
-/* AMD rs690 chip, declare global variables. */
-#if (CONFIG_GFXUMA == 1) 
-       unsigned long uma_memory_start, uma_memory_size;
-#endif
-       
-
 struct lb_uint64 {
        uint32_t lo;
        uint32_t hi;
@@ -56,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 */
@@ -82,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 {
@@ -93,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 {
@@ -112,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;
@@ -150,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;
 };
 
@@ -162,11 +161,47 @@ struct lb_console {
 };
 
 #define LB_TAG_CONSOLE_SERIAL8250      0
-#define LB_TAG_CONSOLE_VGA             1
-#define LB_TAG_CONSOLE_BTEXT           2
+#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
+#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;
+       uint32_t size;
+       uint64_t forward;
+};
+
+#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
@@ -193,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 */
 };
 
@@ -209,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 */
 };
 
@@ -222,7 +257,7 @@ struct cmos_defaults {
        uint32_t size;               /* length of this record */
        uint32_t name_length;        /* length of the following name field */
        uint8_t name[CMOS_MAX_NAME_LENGTH]; /* name identifying the default */
-#define CMOS_IMAGE_BUFFER_SIZE 128
+#define CMOS_IMAGE_BUFFER_SIZE 256
        uint8_t default_set[CMOS_IMAGE_BUFFER_SIZE]; /* default settings */
 };
 
@@ -241,6 +276,4 @@ struct      cmos_checksum {
 #define CHECKSUM_PCBIOS        1
 };
 
-
-
 #endif /* COREBOOT_TABLES_H */