[coreboot-gerrit] New patch to review for coreboot: fbbd045 elog: Isolate some x86-isms

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Tue Dec 16 23:37:23 CET 2014


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7832

-gerrit

commit fbbd045bbdcfb2d5dafe8f10a805b028b831206e
Author: David Hendricks <dhendrix at chromium.org>
Date:   Thu Mar 20 20:31:23 2014 -0700

    elog: Isolate some x86-isms
    
    This attempts to isolate/fix some x86-isms:
    - Translate flash offset to memory-mapped address only on x86.
    - Guard ACPI-dependent line of code
    - Use a Kconfig variable for SPI bus when probing the flash rather
      than assuming the bus is always on bus 0.
    - Zero-out timestamp on non-x86 until we have a better abstraction.
    
    (note: this is based off of some of Gabe's earlier work)
    
    BUG=none
    BRANCH=none
    TEST=needs testing
    Signed-off-by: David Hendricks <dhendrix at chromium.org>
    
    Original-Change-Id: I887576d8bcabe374d8684aa5588f738b36170ef7
    Original-Reviewed-on: https://chromium-review.googlesource.com/191203
    Original-Commit-Queue: David Hendricks <dhendrix at chromium.org>
    Original-Tested-by: David Hendricks <dhendrix at chromium.org>
    Original-Reviewed-by: Gabe Black <gabeblack at chromium.org>
    (cherry picked from commit 1fc7a75f8c072098e017104788418aeed0705e93)
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
    
    Change-Id: Ida4b211cf21ecdde9745d4dbef6a63ffb9fbba8d
---
 src/drivers/elog/elog.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/src/drivers/elog/elog.c b/src/drivers/elog/elog.c
index 94af16e..7cc7e45a 100644
--- a/src/drivers/elog/elog.c
+++ b/src/drivers/elog/elog.c
@@ -17,10 +17,14 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
  */
 
+#if CONFIG_HAVE_ACPI_RESUME == 1
 #include <arch/acpi.h>
+#endif
 #include <cbmem.h>
 #include <console/console.h>
+#if CONFIG_ARCH_X86
 #include <pc80/mc146818rtc.h>
+#endif
 #include <smbios.h>
 #include <spi-generic.h>
 #include <spi_flash.h>
@@ -29,12 +33,12 @@
 #include <elog.h>
 #include "elog_internal.h"
 
+#if CONFIG_CHROMEOS
 #include <vendorcode/google/chromeos/fmap.h>
 
 #if CONFIG_ELOG_FLASH_BASE == 0
 #error "CONFIG_ELOG_FLASH_BASE is invalid"
 #endif
-
 #if CONFIG_ELOG_FULL_THRESHOLD >= CONFIG_ELOG_AREA_SIZE
 #error "CONFIG_ELOG_FULL_THRESHOLD is larger than CONFIG_ELOG_AREA_SIZE"
 #endif
@@ -92,6 +96,8 @@ static inline u32 get_rom_size(void)
  */
 static inline u32 elog_flash_address_to_offset(u8 *address)
 {
+#if CONFIG_ARCH_X86
+	/* For x86, assume address is memory-mapped near 4GB */
 	u32 rom_size;
 
 	if (!elog_spi)
@@ -100,6 +106,9 @@ static inline u32 elog_flash_address_to_offset(u8 *address)
 	rom_size = get_rom_size();
 
 	return (u32)address - ((u32)~0UL - rom_size + 1);
+#else
+	return (u32)address;
+#endif
 }
 
 /*
@@ -607,13 +616,19 @@ int elog_init(void)
 
 #if !defined(__SMM__)
 	/* Log boot count event except in S3 resume */
-	if (CONFIG_ELOG_BOOT_COUNT && !acpi_is_wakeup_s3())
+#if CONFIG_ELOG_BOOT_COUNT == 1
+#if CONFIG_HAVE_ACPI_RESUME == 1
+		if (!acpi_is_wakeup_s3())
+#endif
 		elog_add_event_dword(ELOG_TYPE_BOOT, boot_count_read());
+#endif
 
+#if CONFIG_ARCH_X86
 	/* Check and log POST codes from previous boot */
 	if (CONFIG_CMOS_POST)
 		cmos_post_log();
 #endif
+#endif
 
 	return 0;
 }
@@ -623,12 +638,20 @@ int elog_init(void)
  */
 static void elog_fill_timestamp(struct event_header *event)
 {
+#if CONFIG_ARCH_X86
 	event->second = cmos_read(RTC_CLK_SECOND);
 	event->minute = cmos_read(RTC_CLK_MINUTE);
 	event->hour   = cmos_read(RTC_CLK_HOUR);
 	event->day    = cmos_read(RTC_CLK_DAYOFMONTH);
 	event->month  = cmos_read(RTC_CLK_MONTH);
 	event->year   = cmos_read(RTC_CLK_YEAR);
+#else
+	/*
+	 * FIXME: We need to abstract the CMOS stuff on non-x86 platforms.
+	 * Until then, use bogus data here to force the values to 0.
+	 */
+	event->month  = 0xff;
+#endif
 
 	/* Basic sanity check of expected ranges */
 	if (event->month > 0x12 || event->day > 0x31 || event->hour > 0x23 ||



More information about the coreboot-gerrit mailing list