summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2016-11-06 00:07:08 -0700
committerFurquan Shaikh <furquan@google.com>2016-11-10 00:55:52 +0100
commit1220589b4f10a03639a9a6957c1b111a91db4bd7 (patch)
tree876fe3d7fb8da95e24a5be44555f84eef1f18cbc /src
parentcab1c01885e216027086b20c6b0628df7383f487 (diff)
downloadcoreboot-1220589b4f10a03639a9a6957c1b111a91db4bd7.tar.xz
mainboard/google/reef: Add support for RECOVERY_MRC_CACHE
1. Add RECOVERY_MRC_CACHE region to reef FMAP. 2. Implement helper function for getting event for recovery mode with memory retraining. 3. Select HAS_RECOVERY_MRC_CACHE. BUG=chrome-os-partner:59352 BRANCH=None TEST=Verified recovery mode behavior with and without memory training request on reef. Change-Id: I91abc9f8122f1aa3980c6372ab557e56a7a92730 Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://review.coreboot.org/17243 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/reef/Kconfig1
-rw-r--r--src/mainboard/google/reef/chromeos.c15
-rw-r--r--src/mainboard/google/reef/chromeos.fmd5
3 files changed, 18 insertions, 3 deletions
diff --git a/src/mainboard/google/reef/Kconfig b/src/mainboard/google/reef/Kconfig
index 7dc46c98dc..edfdb7b647 100644
--- a/src/mainboard/google/reef/Kconfig
+++ b/src/mainboard/google/reef/Kconfig
@@ -34,6 +34,7 @@ config DRIVER_TPM_I2C_IRQ
config CHROMEOS
select LID_SWITCH if BASEBOARD_REEF_LAPTOP
+ select HAS_RECOVERY_MRC_CACHE
config DRIVERS_I2C_DA7219
default y
diff --git a/src/mainboard/google/reef/chromeos.c b/src/mainboard/google/reef/chromeos.c
index 58c2cd8e27..506f9de94b 100644
--- a/src/mainboard/google/reef/chromeos.c
+++ b/src/mainboard/google/reef/chromeos.c
@@ -55,11 +55,22 @@ int get_recovery_mode_switch(void)
EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY));
}
+int get_recovery_mode_retrain_switch(void)
+{
+ /*
+ * Check if the EC has posted the keyboard recovery event with memory
+ * retrain.
+ */
+ return !!(google_chromeec_get_events_b() &
+ EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY_HW_REINIT));
+}
+
int clear_recovery_mode_switch(void)
{
- /* Clear keyboard recovery event. */
+ /* Clear all host event bits requesting recovery mode. */
return google_chromeec_clear_events_b(
- EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY));
+ EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY) |
+ EC_HOST_EVENT_MASK(EC_HOST_EVENT_KEYBOARD_RECOVERY_HW_REINIT));
}
int get_write_protect_state(void)
diff --git a/src/mainboard/google/reef/chromeos.fmd b/src/mainboard/google/reef/chromeos.fmd
index d25a9b28df..1fea91029d 100644
--- a/src/mainboard/google/reef/chromeos.fmd
+++ b/src/mainboard/google/reef/chromeos.fmd
@@ -13,7 +13,10 @@ FLASH 16M {
}
}
MISC_RW@0x400000 0x4a000 {
- RW_MRC_CACHE@0x0 0x40000
+ UNIFIED_MRC_CACHE@0x0 0x40000 {
+ RECOVERY_MRC_CACHE@0x0 0x10000
+ RW_MRC_CACHE@0x10000 0x30000
+ }
RW_ELOG@0x40000 0x4000
RW_SHARED@0x44000 0x4000 {
SHARED_DATA@0x0 0x2000