mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-05 22:41:44 +00:00
stfm32f0: always send bytes over i2c for EC command responses
Certain i2c host drivers don't allow one to snoop the byte
stream to abort a transaction. Allow those devices to make
forward progress by sending out the '0xec' byte for any
requests coming through after an EC host command error.
BUG=chrome-os-partner:30784
BRANCH=None
TEST=Ran on ryu. Allowed passthru probing which normally hung
the system because of there not being a passthrue device
on ryu -- error returned. Instead the command returns
successfully by returning 0xec for the unfilled bytes.
Change-Id: Ibcab5ade1f727f3852995437105eb9fa693caadf
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/212165
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
committed by
chrome-internal-fetch
parent
80f5d9e10a
commit
776658d8a2
@@ -153,6 +153,14 @@ static void i2c_send_response_packet(struct host_packet *pkt)
|
||||
/* I2C is slow, so let other things run while we wait */
|
||||
usleep(50);
|
||||
}
|
||||
|
||||
/*
|
||||
* If an error occurred. Set the transmitter not full so as to keep
|
||||
* sending '0xec' in the event loop. That way the master doesn't have
|
||||
* to snoop the response stream.
|
||||
*/
|
||||
if (pkt->driver_result != EC_RES_SUCCESS)
|
||||
STM32_I2C_CR1(host_i2c_resp_port) |= STM32_I2C_CR1_TXIE;
|
||||
}
|
||||
|
||||
/* Process the command in the i2c host buffer */
|
||||
|
||||
Reference in New Issue
Block a user