[coreboot-gerrit] Patch set updated for coreboot: bbde1bc chromeec: add function to reboot on unexpected image

Aaron Durbin (adurbin@google.com) gerrit at coreboot.org
Tue May 13 17:01:27 CEST 2014


Aaron Durbin (adurbin at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5039

-gerrit

commit bbde1bc8635afb952735cae45eff6903aed1a506
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Thu Jan 9 14:28:05 2014 -0600

    chromeec: add function to reboot on unexpected image
    
    It's helpful to have a generic function that will tell
    the EC to reboot if the EC isn't running a specified
    image. Add that and implement google_chromeec_early_init()
    to utilize the new function still maintaing its semantics
    of if recvoery mode is enabled the EC should be running its
    RO image. There is a slight change in that no communication
    is done with the EC if not in recovery mode.
    
    BUG=chrome-os-partner:24133
    BRANCH=rambi,squawks
    TEST=Built and boot with recovery request. Noted EC reboot.
    
    Change-Id: I22240f6a11231e39c33fd79796a52ec76b119397
    Signed-off-by: Aaron Durbin <adurbin at chromium.org>
    Reviewed-on: https://chromium-review.googlesource.com/182060
    Reviewed-by: Duncan Laurie <dlaurie at chromium.org>
---
 src/ec/google/chromeec/ec.c | 16 +++++++++++-----
 src/ec/google/chromeec/ec.h |  3 +++
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c
index c57e18b..6e7ecdf 100644
--- a/src/ec/google/chromeec/ec.c
+++ b/src/ec/google/chromeec/ec.c
@@ -100,8 +100,7 @@ u32 google_chromeec_get_events_b(void)
 }
 
 #ifndef __SMM__
-/* Check for recovery mode and ensure EC is in RO */
-void google_chromeec_early_init(void)
+void google_chromeec_check_ec_image(int expected_type)
 {
 	struct chromeec_command cec_cmd;
 	struct ec_response_get_version cec_resp = {{0}};
@@ -113,9 +112,7 @@ void google_chromeec_early_init(void)
 	cec_cmd.cmd_size_out = sizeof(cec_resp);
 	google_chromeec_command(&cec_cmd);
 
-	if (cec_cmd.cmd_code ||
-	    (recovery_mode_enabled() &&
-	     (cec_resp.current_image != EC_IMAGE_RO))) {
+	if (cec_cmd.cmd_code || cec_resp.current_image != expected_type) {
 		struct ec_params_reboot_ec reboot_ec;
 		/* Reboot the EC and make it come back in RO mode */
 		reboot_ec.cmd = EC_REBOOT_COLD;
@@ -133,6 +130,15 @@ void google_chromeec_early_init(void)
 	}
 }
 
+/* Check for recovery mode and ensure EC is in RO */
+void google_chromeec_early_init(void)
+{
+	/* If in recovery ensure EC is running RO firmware. */
+	if (recovery_mode_enabled()) {
+		google_chromeec_check_ec_image(EC_IMAGE_RO);
+	}
+}
+
 u16 google_chromeec_get_board_version(void)
 {
 	struct chromeec_command cmd;
diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h
index a037d01..d033bab 100644
--- a/src/ec/google/chromeec/ec.h
+++ b/src/ec/google/chromeec/ec.h
@@ -36,7 +36,10 @@ int google_ec_running_ro(void);
 void google_chromeec_init(void);
 #endif
 
+/* If recovery mode is enabled and EC is not running RO firmware reboot. */
 void google_chromeec_early_init(void);
+/* Reboot if EC firmware is not expected type. */
+void google_chromeec_check_ec_image(int expected_type);
 uint8_t google_chromeec_calc_checksum(const uint8_t *data, int size);
 u16 google_chromeec_get_board_version(void);
 u32 google_chromeec_get_events_b(void);



More information about the coreboot-gerrit mailing list