From a436877573da335de776b262415b6997daadb54a Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Fri, 15 Mar 2019 17:11:10 -0700 Subject: ec/google/wilco: Fix handling of commands that do not respond If the command does not respond the driver should not wait for it to complete before returning. Tested with SMI debug enabled to ensure that the final command does not report a failure. Change-Id: I7c1bfa19a92e8332ac1aa6ff95f94ff4cbdf789d Signed-off-by: Duncan Laurie Reviewed-on: https://review.coreboot.org/c/coreboot/+/31919 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh --- src/ec/google/wilco/mailbox.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/ec/google') diff --git a/src/ec/google/wilco/mailbox.c b/src/ec/google/wilco/mailbox.c index 1c38a5b880..d47290ccaf 100644 --- a/src/ec/google/wilco/mailbox.c +++ b/src/ec/google/wilco/mailbox.c @@ -155,12 +155,6 @@ static int wilco_ec_transfer(struct wilco_ec_message *msg) /* Start the command */ outb(EC_MAILBOX_START_COMMAND, CONFIG_EC_BASE_HOST_COMMAND); - /* Wait for it to complete */ - if (wilco_ec_response_timed_out()) { - printk(BIOS_ERR, "%s: response timed out\n", __func__); - return -1; - } - /* Some commands will put the EC into a state where it cannot respond */ if (msg->type == WILCO_EC_MSG_NO_RESPONSE) { printk(BIOS_DEBUG, "%s: EC does not respond to this command\n", @@ -168,6 +162,12 @@ static int wilco_ec_transfer(struct wilco_ec_message *msg) return 0; } + /* Wait for it to complete */ + if (wilco_ec_response_timed_out()) { + printk(BIOS_ERR, "%s: response timed out\n", __func__); + return -1; + } + /* Check result */ msg->result = inb(CONFIG_EC_BASE_HOST_DATA); if (msg->result != 0) { -- cgit v1.2.3