[coreboot] [PATCH][v2]Consoles in lbtable

Patrick Georgi patrick at georgi-clan.de
Sat Jan 26 18:30:06 CET 2008


Hi,

as a follow-up the proposal, here is a patch for storing console
information in the lbtable, see attachment.

I'm not sure if all of these console types are actually useful for the
payload (eg. logbuf), and for some of these consoles the payload will
need more information about where to find the hardware that is referred.

VGA and EHCI for device resources, logbuf (should it survive) for a
memory location where it can be found, etc.
Given how different these are, I'd opt for a new record type each (as
per the proposal), instead of a "universal device" record type with 20
values of which usually only the 5 (that apply to this specific device)
are used.


Regards,
Patrick Georgi
-------------- next part --------------
Add a new record type "console" for lbtable, and insert one record
for each output device we support, so the payload can figure out
where to find consoles that the user cares about.

Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>

Index: src/include/boot/coreboot_tables.h
===================================================================
--- src/include/boot/coreboot_tables.h	(Revision 3078)
+++ src/include/boot/coreboot_tables.h	(Arbeitskopie)
@@ -138,6 +138,8 @@
 	uint8_t  string[0];
 };
 
+/* 0xe is taken by v3 */
+
 #define LB_TAG_SERIAL		0x000f
 struct lb_serial {
 	uint32_t tag;
@@ -145,6 +147,20 @@
 	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 */
Index: src/arch/i386/boot/coreboot_table.c
===================================================================
--- src/arch/i386/boot/coreboot_table.c	(Revision 3078)
+++ src/arch/i386/boot/coreboot_table.c	(Arbeitskopie)
@@ -90,6 +90,39 @@
 #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 = LB_TAG_CONSOLE_SERIAL8250;
+}
+
+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 @@
 	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);
 


More information about the coreboot mailing list