console uart: Fill coreboot table entries

Also fixes the reported baudrate to take get_option() into account.

Change-Id: Ieadad70b00df02a530b0ccb6fa4e1b51526089f3
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/5310
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
index 9bfe34f..e4554d7 100644
--- a/src/lib/coreboot_table.c
+++ b/src/lib/coreboot_table.c
@@ -102,43 +102,22 @@
 	return mem;
 }
 
-static struct lb_serial *lb_serial(struct lb_header *header)
+void lb_add_serial(struct lb_serial *new_serial, void *data)
 {
-#if CONFIG_CONSOLE_SERIAL8250
-	struct lb_record *rec;
+	struct lb_header *header = (struct lb_header *)data;
 	struct lb_serial *serial;
-	rec = lb_new_record(header);
-	serial = (struct lb_serial *)rec;
+
+	serial = (struct lb_serial *)lb_new_record(header);
 	serial->tag = LB_TAG_SERIAL;
 	serial->size = sizeof(*serial);
-	serial->type = LB_SERIAL_TYPE_IO_MAPPED;
-	serial->baseaddr = CONFIG_TTYS0_BASE;
-	serial->baud = CONFIG_TTYS0_BAUD;
-	return serial;
-#elif CONFIG_CONSOLE_SERIAL8250MEM || CONFIG_CONSOLE_SERIAL_UART
-	if (uartmem_getbaseaddr()) {
-		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->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
-		serial->baseaddr = uartmem_getbaseaddr();
-		serial->baud = CONFIG_TTYS0_BAUD;
-		return serial;
-	} else {
-		return NULL;
-	}
-#else
-	return NULL;
-#endif
+	serial->type = new_serial->type;
+	serial->baseaddr = new_serial->baseaddr;
+	serial->baud = new_serial->baud;
 }
 
-#if CONFIG_CONSOLE_SERIAL8250 || CONFIG_CONSOLE_SERIAL8250MEM || \
-	CONFIG_CONSOLE_SERIAL_UART || CONFIG_CONSOLE_USB
-static void add_console(struct lb_header *header, u16 consoletype)
+void lb_add_console(uint16_t consoletype, void *data)
 {
+	struct lb_header *header = (struct lb_header *)data;
 	struct lb_console *console;
 
 	console = (struct lb_console *)lb_new_record(header);
@@ -146,20 +125,6 @@
 	console->size = sizeof(*console);
 	console->type = consoletype;
 }
-#endif
-
-static void lb_console(struct lb_header *header)
-{
-#if CONFIG_CONSOLE_SERIAL8250
-	add_console(header, LB_TAG_CONSOLE_SERIAL8250);
-#endif
-#if CONFIG_CONSOLE_SERIAL8250MEM || CONFIG_CONSOLE_SERIAL_UART
-	add_console(header, LB_TAG_CONSOLE_SERIAL8250MEM);
-#endif
-#if CONFIG_CONSOLE_USB
-	add_console(header, LB_TAG_CONSOLE_EHCI);
-#endif
-}
 
 static void lb_framebuffer(struct lb_header *header)
 {
@@ -423,10 +388,15 @@
 
 	/* Record our motherboard */
 	lb_mainboard(head);
-	/* Record the serial port, if present */
-	lb_serial(head);
-	/* Record our console setup */
-	lb_console(head);
+
+	/* Record the serial ports and consoles */
+#if CONFIG_CONSOLE_SERIAL8250 || CONFIG_CONSOLE_SERIAL8250MEM || CONFIG_CONSOLE_SERIAL_UART
+	uart_fill_lb(head);
+#endif
+#if CONFIG_CONSOLE_USB
+	lb_add_console(LB_TAG_CONSOLE_EHCI, head);
+#endif
+
 	/* Record our various random string information */
 	lb_strings(head);
 	/* Record our framebuffer */