[coreboot] r691 - in coreboot-v3: arch/x86 include

svn at coreboot.org svn at coreboot.org
Sun Jun 29 08:43:01 CEST 2008


Author: oxygene
Date: 2008-06-29 08:43:01 +0200 (Sun, 29 Jun 2008)
New Revision: 691

Modified:
   coreboot-v3/arch/x86/coreboot_table.c
   coreboot-v3/include/tables.h
Log:
Implements console and serial lbtable records compatible to cbv2 as of r3396

Signed-Off-By: Patrick Georgi <patrick at georgi-clan.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>


Modified: coreboot-v3/arch/x86/coreboot_table.c
===================================================================
--- coreboot-v3/arch/x86/coreboot_table.c	2008-06-06 20:47:42 UTC (rev 690)
+++ coreboot-v3/arch/x86/coreboot_table.c	2008-06-29 06:43:01 UTC (rev 691)
@@ -25,6 +25,7 @@
 #include <device/device.h>
 #include <tables.h>
 #include <mc146818rtc.h>
+#include <uart8250.h>
 #include <lib.h>
 //#include <cpu/cpu.h>
 //#include <pirq_routing.h>
@@ -98,6 +99,45 @@
 	return mem;
 }
 
+struct lb_serial *lb_serial(struct lb_header *header)
+{
+#if defined(TTYSx_BASE)
+	struct lb_record *rec;
+	struct lb_serial *serial;
+	rec = lb_new_record(header);
+	serial = (struct lb_serial *)rec;
+	serial->tag = LB_TAG_SERIAL;
+	serial->size = sizeof(*serial);
+	serial->ioport = TTYSx_BASE;
+	serial->baud = TTYSx_BAUD;
+	return serial;
+#else
+	return 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_SERIAL
+	add_console(header, LB_TAG_CONSOLE_SERIAL8250);
+#endif
+/* FIXME when we have a proper vga console ourself */
+#ifdef CONFIG_PCI_OPTION_ROM_RUN
+	add_console(header, LB_TAG_CONSOLE_VGA);
+#endif
+}
+
 struct lb_mainboard *lb_mainboard(struct lb_header *header)
 {
 	struct lb_record *rec;
@@ -454,6 +494,12 @@
 	/* Record our motherboard */
 	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);
 

Modified: coreboot-v3/include/tables.h
===================================================================
--- coreboot-v3/include/tables.h	2008-06-06 20:47:42 UTC (rev 690)
+++ coreboot-v3/include/tables.h	2008-06-29 06:43:01 UTC (rev 691)
@@ -175,6 +175,28 @@
 	u32 dev_root_ptr; /* Pointer to the root device */
 };
 
+#define LB_TAG_SERIAL		0x000f
+struct lb_serial {
+	u32 tag;
+	u32 size;
+	u16 ioport;
+	u32 baud;
+};
+
+#define LB_TAG_CONSOLE		0x0010
+struct lb_console {
+	u32 tag;
+	u32 size;
+	u16 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 */





More information about the coreboot mailing list