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:
parent
af39c82a36
commit
a436877573
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue