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 <dlaurie@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/31919
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Furquan Shaikh <furquan@google.com>
This commit is contained in:
Duncan Laurie 2019-03-15 17:11:10 -07:00 committed by Patrick Georgi
parent af39c82a36
commit a436877573
1 changed files with 6 additions and 6 deletions

View File

@ -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) {