aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/i386/boot/coreboot_table.c35
-rw-r--r--src/include/boot/coreboot_tables.h16
2 files changed, 51 insertions, 0 deletions
diff --git a/src/arch/i386/boot/coreboot_table.c b/src/arch/i386/boot/coreboot_table.c
index 963ff385f5..0ba09e7215 100644
--- a/src/arch/i386/boot/coreboot_table.c
+++ b/src/arch/i386/boot/coreboot_table.c
@@ -90,6 +90,39 @@ struct lb_serial *lb_serial(struct lb_header *header)
#endif
}
+void add_console(struct lb_header *header, u16 consoletype)
+{
+ struct lb_record *rec;
+ struct lb_console *console;
+ rec = lb_new_record(header);
+ console = (struct lb_console *)lb_new_record(header);
+ console->tag = LB_TAG_CONSOLE;
+ console->size = sizeof(*console);
+ console->type = consoletype;
+}
+
+void lb_console(struct lb_header *header)
+{
+#ifdef CONFIG_CONSOLE_SERIAL8250
+ add_console(header, LB_TAG_CONSOLE_SERIAL8250);
+#endif
+#ifdef CONFIG_CONSOLE_VGA
+ add_console(header, LB_TAG_CONSOLE_VGA);
+#endif
+#ifdef CONFIG_CONSOLE_BTEXT
+ add_console(header, LB_TAG_CONSOLE_BTEXT);
+#endif
+#ifdef CONFIG_CONSOLE_LOGBUF
+ add_console(header, LB_TAG_CONSOLE_LOGBUF);
+#endif
+#ifdef CONFIG_CONSOLE_SROM
+ add_console(header, LB_TAG_CONSOLE_SROM);
+#endif
+#ifdef CONFIG_USBDEBUG_DIRECT
+ add_console(header, LB_TAG_CONSOLE_EHCI);
+#endif
+}
+
struct lb_mainboard *lb_mainboard(struct lb_header *header)
{
struct lb_record *rec;
@@ -426,6 +459,8 @@ unsigned long write_coreboot_table(
lb_mainboard(head);
/* Record the serial port, if present */
lb_serial(head);
+ /* Record our console setup */
+ lb_console(head);
/* Record our various random string information */
lb_strings(head);
diff --git a/src/include/boot/coreboot_tables.h b/src/include/boot/coreboot_tables.h
index 25a8adcf6b..d2034371a6 100644
--- a/src/include/boot/coreboot_tables.h
+++ b/src/include/boot/coreboot_tables.h
@@ -138,6 +138,8 @@ struct lb_string {
uint8_t string[0];
};
+/* 0xe is taken by v3 */
+
#define LB_TAG_SERIAL 0x000f
struct lb_serial {
uint32_t tag;
@@ -145,6 +147,20 @@ struct lb_serial {
uint16_t ioport;
};
+#define LB_TAG_CONSOLE 0x0010
+struct lb_console {
+ uint32_t tag;
+ uint32_t size;
+ uint16_t type;
+};
+
+#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
+
/* The following structures are for the cmos definitions table */
#define LB_TAG_CMOS_OPTION_TABLE 200
/* cmos header record */