From 2971d20b6ebdd9803b05ccbbaeefe1bde1a21af4 Mon Sep 17 00:00:00 2001 From: David Hendricks Date: Sun, 13 Apr 2014 16:45:31 -0700 Subject: [PATCH] elog: Do not attempt to init SPI This severs a dependency the eventlog code has on initializing chipset/SoC SPI controller. Currently elog_init() calls spi_init() as a catch-all. This worked for x86 since the SPI controller is only used for one thing on existing platforms. As we add eventlogging support to non-x86 platforms we need to consider the more generalized case where the assumptions about how SPI works on x86 are no longer valid. BUG=none BRANCH=none Signed-off-by: David Hendricks TEST=built and booted on Link, Beltino and Rambi. See below for "mosys eventlog list" output on Link showing boot and suspend/resume events (including lid close/open) added successfully. localhost ~ # mosys eventlog list 0 | 2014-04-14 13:52:44 | Log area cleared | 4096 1 | 2014-04-14 13:52:44 | System boot | 50 2 | 2014-04-14 13:52:44 | EC Event | Power Button 3 | 2014-04-14 13:52:44 | SUS Power Fail 4 | 2014-04-14 13:52:44 | System Reset 5 | 2014-04-14 13:52:44 | ACPI Wake | S5 6 | 2014-04-14 13:53:25 | ACPI Enter | S3 7 | 2014-04-14 13:53:35 | ACPI Wake | S3 8 | 2014-04-14 13:53:35 | Wake Source | RTC Alarm | 0 9 | 2014-04-14 13:53:49 | ACPI Enter | S3 10 | 2014-04-14 13:54:00 | EC Event | Lid Open 11 | 2014-04-14 13:54:00 | ACPI Wake | S3 12 | 2014-04-14 13:54:00 | Wake Source | GPIO | 15 Change-Id: I26e25c0a856f7b8db5ab6b8e7e1acae291d2eadc Reviewed-on: https://chromium-review.googlesource.com/194526 Reviewed-by: David Hendricks Commit-Queue: David Hendricks Tested-by: David Hendricks --- src/drivers/elog/elog.c | 3 +-- src/include/elog.h | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drivers/elog/elog.c b/src/drivers/elog/elog.c index 604a6e6a6e..1d7a5b0e6a 100644 --- a/src/drivers/elog/elog.c +++ b/src/drivers/elog/elog.c @@ -545,8 +545,7 @@ int elog_init(void) elog_debug("elog_init()\n"); - /* Prepare SPI */ - spi_init(); + /* Probe SPI chip. SPI controller must already be initialized. */ elog_spi = spi_flash_probe(CONFIG_BOOT_MEDIA_SPI_BUS, 0); if (!elog_spi) { printk(BIOS_ERR, "ELOG: Unable to find SPI flash\n"); diff --git a/src/include/elog.h b/src/include/elog.h index f9b5d53941..b0e5260f0c 100644 --- a/src/include/elog.h +++ b/src/include/elog.h @@ -145,6 +145,7 @@ struct elog_event_data_me_extended { /* EC Shutdown Reason */ #define ELOG_TYPE_EC_SHUTDOWN 0xa5 +/* Eventlog backing storage must be initialized before calling elog_init(). */ extern int elog_init(void); extern int elog_clear(void); extern void elog_add_event_raw(u8 event_type, void *data, u8 data_size);