[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