Implements console and serial lbtable records compatible to cbv2 as of r3396

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


git-svn-id: svn://coreboot.org/repository/coreboot-v3@691 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
Patrick Georgi 2008-06-29 06:43:01 +00:00
parent ae2520e4bd
commit ef90e728ab
2 changed files with 68 additions and 0 deletions

View file

@ -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 @@ struct lb_memory *lb_memory(struct lb_header *header)
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 @@ unsigned long write_coreboot_table(
/* 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);

View file

@ -175,6 +175,28 @@ struct lb_devtree {
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 */