ELOG: Add support for generating SMBIOS type15 table

This standared SMBIOS 0able describes the location and format
of the event log to the OS and applications.  In this case the
pointer is a 32bit physical address pointer to the log in
memory mapped flash.

Look for SMBIOS type15 entry with 'dmidecode -t 15'

Handle 0x0004, DMI type 15, 23 bytes
System Event Log
        Area Length: 4095 bytes
        Header Start Offset: 0x0000
        Header Length: 8 bytes
        Data Start Offset: 0x0008
        Access Method: Memory-mapped physical 32-bit address
        Access Address: 0xFFB6F000
        Status: Valid, Not Full
        Change Token: 0x00000000
        Header Format: OEM-specific
        Supported Log Type Descriptors: 0

Change-Id: I1e7729e604000f197e26e69991a2867e869197a6
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: http://review.coreboot.org/1314
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
diff --git a/src/include/smbios.h b/src/include/smbios.h
index 7912ba1..c6585155 100644
--- a/src/include/smbios.h
+++ b/src/include/smbios.h
@@ -28,6 +28,7 @@
 	SMBIOS_PROCESSOR_INFORMATION=4,
 	SMBIOS_CACHE_INFORMATION=7,
 	SMBIOS_SYSTEM_SLOTS=9,
+	SMBIOS_EVENT_LOG=15,
 	SMBIOS_PHYS_MEMORY_ARRAY=16,
 	SMBIOS_MEMORY_DEVICE=17,
 	SMBIOS_MEMORY_ARRAY_MAPPED_ADDRESS=19,
@@ -138,6 +139,36 @@
 	char eos[2];
 } __attribute__((packed));
 
+struct smbios_type15 {
+	u8 type;
+	u8 length;
+	u16 handle;
+	u16 area_length;
+	u16 header_offset;
+	u16 data_offset;
+	u8 access_method;
+	u8 log_status;
+	u32 change_token;
+	u32 address;
+	u8 header_format;
+	u8 log_type_descriptors;
+	u8 log_type_descriptor_length;
+	char eos[2];
+} __attribute__((packed));
+
+enum {
+	SMBIOS_EVENTLOG_ACCESS_METHOD_IO8 = 0,
+	SMBIOS_EVENTLOG_ACCESS_METHOD_IO8X2,
+	SMBIOS_EVENTLOG_ACCESS_METHOD_IO16,
+	SMBIOS_EVENTLOG_ACCESS_METHOD_MMIO32,
+	SMBIOS_EVENTLOG_ACCESS_METHOD_GPNV,
+};
+
+enum {
+	SMBIOS_EVENTLOG_STATUS_VALID = 1, /* Bit 0 */
+	SMBIOS_EVENTLOG_STATUS_FULL  = 2, /* Bit 1 */
+};
+
 struct smbios_type16 {
 	u8 type;
 	u8 length;