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 <[EMAIL PROTECTED]>
Acked-by: Stefan Reinauer <[EMAIL PROTECTED]>


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 */


-- 
coreboot mailing list
[email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to