diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2017-09-21 17:52:36 -0700 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2017-10-04 20:55:12 +0000 |
commit | 47dffa59f35a46ada039dd86a20497caa8f518e8 (patch) | |
tree | 7a88e916aa974e06c53f2e99f4252e311818d977 /src/ec | |
parent | 94b64431f3de19c79e7494d9ff25f9ebd1ab7cbc (diff) |
chromeec: Remove checks for EC in RO
This patch removes checks that ensure EC to be in RO for recovery
boot. We do not need these checks because when recovery is requested
automatically (as opposed to manually), we show 'broken' screen where
users can only reboot the device or request recovery manually.
If recovery is requested, Depthcharge will check whether EC is in RO
or not and recovery switch was pressed or not. If it's a legitimate
manual recovery, EC should be in RO. Thus, we can trust the recovery
button state it reports.
This patch removes all calls to google_chromeec_check_ec_image,
which is called to avoid duplicate memory training when recovery
is requested but EC is in RW.
BUG=b:66516882
BRANCH=none
CQ-DEPEND=CL:693008
TEST=Boot Fizz.
Change-Id: I45a874b73c46ea88cb831485757d194faa9f4c99
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://review.coreboot.org/21711
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/ec')
-rw-r--r-- | src/ec/google/chromeec/ec.c | 77 | ||||
-rw-r--r-- | src/ec/google/chromeec/ec.h | 6 |
2 files changed, 0 insertions, 83 deletions
diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index 03d4c3bc6d..ab879c57a2 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -325,70 +325,6 @@ int google_chromeec_reboot(int dev_idx, enum ec_reboot_cmd type, uint8_t flags) } #ifndef __SMM__ -#ifdef __PRE_RAM__ -void google_chromeec_check_ec_image(int expected_type) -{ - struct chromeec_command cec_cmd; - struct ec_response_get_version cec_resp = { { 0 } }; - - cec_cmd.cmd_code = EC_CMD_GET_VERSION; - cec_cmd.cmd_version = 0; - cec_cmd.cmd_data_out = &cec_resp; - cec_cmd.cmd_size_in = 0; - cec_cmd.cmd_size_out = sizeof(cec_resp); - cec_cmd.cmd_dev_index = 0; - google_chromeec_command(&cec_cmd); - - if (cec_cmd.cmd_code || cec_resp.current_image != expected_type) { - /* Reboot the EC and make it come back in RO mode */ - printk(BIOS_DEBUG, "Rebooting with EC in RO mode:\n"); - post_code(0); /* clear current post code */ - /* Let the platform prepare for the EC taking out the system power. */ - if (IS_ENABLED(CONFIG_VBOOT)) - vboot_platform_prepare_reboot(); - google_chromeec_reboot(0, EC_REBOOT_COLD, 0); - udelay(1000); - hard_reset(); - halt(); - } -} - -/* Check for recovery mode and ensure PD/EC is in RO */ -void google_chromeec_early_init(void) -{ - if (!IS_ENABLED(CONFIG_CHROMEOS) || !vboot_recovery_mode_enabled()) - return; - - /* Check USB PD chip state first */ - if (IS_ENABLED(CONFIG_EC_GOOGLE_CHROMEEC_PD)) - google_chromeec_check_pd_image(EC_IMAGE_RO); - - /* If in recovery ensure EC is running RO firmware. */ - google_chromeec_check_ec_image(EC_IMAGE_RO); -} - -void google_chromeec_check_pd_image(int expected_type) -{ - struct chromeec_command cec_cmd; - struct ec_response_get_version cec_resp = { { 0 } }; - - cec_cmd.cmd_code = EC_CMD_GET_VERSION; - cec_cmd.cmd_version = 0; - cec_cmd.cmd_data_out = &cec_resp; - cec_cmd.cmd_size_in = 0; - cec_cmd.cmd_size_out = sizeof(cec_resp); - cec_cmd.cmd_dev_index = 1; /* PD */ - google_chromeec_command(&cec_cmd); - - if (cec_cmd.cmd_code || cec_resp.current_image != expected_type) { - /* Reboot the PD and make it come back in RO mode */ - printk(BIOS_DEBUG, "Rebooting PD to RO mode\n"); - google_chromeec_reboot(1 /* PD */, EC_REBOOT_COLD, 0); - udelay(1000); - } -} -#endif - u16 google_chromeec_get_board_version(void) { struct chromeec_command cmd; @@ -696,19 +632,6 @@ void google_chromeec_init(void) cec_resp.current_image); ec_image_type = cec_resp.current_image; } - - if (cec_cmd.cmd_code || - (vboot_recovery_mode_enabled() && - (cec_resp.current_image != EC_IMAGE_RO))) { - /* Reboot the EC and make it come back in RO mode */ - printk(BIOS_DEBUG, "Rebooting with EC in RO mode:\n"); - post_code(0); /* clear current post code */ - google_chromeec_reboot(0, EC_REBOOT_COLD, 0); - udelay(1000); - hard_reset(); - halt(); - } - } int google_ec_running_ro(void) diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h index 3a7cadd506..81bc9336e5 100644 --- a/src/ec/google/chromeec/ec.h +++ b/src/ec/google/chromeec/ec.h @@ -40,12 +40,6 @@ int google_chromeec_set_device_enabled_events(uint32_t mask); uint32_t google_chromeec_get_device_current_events(void); void google_chromeec_log_device_events(uint32_t mask); -/* 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); -void google_chromeec_check_pd_image(int expected_type); - int google_chromeec_check_feature(int feature); uint8_t google_chromeec_calc_checksum(const uint8_t *data, int size); u16 google_chromeec_get_board_version(void); |