#include <version.h>
#include <device/device.h>
#include <stdlib.h>
+#include <cbfs.h>
+#include <cbmem.h>
#if CONFIG_USE_OPTION_TABLE
#include <option_table.h>
-#include <cbfs.h>
#endif
static struct lb_header *lb_table_init(unsigned long addr)
serial->baud = CONFIG_TTYS0_BAUD;
return serial;
#elif CONFIG_CONSOLE_SERIAL8250MEM
- 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;
+ 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
#endif
}
+#if CONFIG_COLLECT_TIMESTAMPS
+static void lb_tsamp(struct lb_header *header)
+{
+ struct lb_tstamp *tstamp;
+ void *tstamp_table = cbmem_find(CBMEM_ID_TIMESTAMP);
+
+ if (!tstamp_table)
+ return;
+
+ tstamp = (struct lb_tstamp *)lb_new_record(header);
+ tstamp->tag = LB_TAG_TIMESTAMPS;
+ tstamp->size = sizeof(*tstamp);
+ tstamp->tstamp_tab = tstamp_table;
+
+}
+#endif
+
static struct lb_mainboard *lb_mainboard(struct lb_header *header)
{
struct lb_record *rec;
head->table_checksum = compute_ip_checksum(first_rec, head->table_bytes);
head->header_checksum = 0;
head->header_checksum = compute_ip_checksum(head, sizeof(*head));
- printk(BIOS_DEBUG, "Wrote coreboot table at: %p - %p checksum %x\n",
- head, rec, head->table_checksum);
- return (unsigned long)rec;
+ printk(BIOS_DEBUG,
+ "Wrote coreboot table at: %p, 0x%x bytes, checksum %x\n",
+ head, head->table_bytes, head->table_checksum);
+ return (unsigned long)rec + rec->size;
}
static void lb_cleanup_memory_ranges(struct lb_memory *mem)
lb_add_rsvd_range, mem);
}
-#if CONFIG_WRITE_HIGH_TABLES
-extern uint64_t high_tables_base, high_tables_size;
-#endif
-
unsigned long write_coreboot_table(
unsigned long low_table_start, unsigned long low_table_end,
unsigned long rom_table_start, unsigned long rom_table_end)
/* Record our framebuffer */
lb_framebuffer(head);
+#if CONFIG_COLLECT_TIMESTAMPS
+ lb_tsamp(head);
+#endif
/* Remember where my valid memory ranges are */
return lb_table_fini(head, 1);