diff options
author | Furquan Shaikh <furquan@google.com> | 2019-06-03 19:08:42 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-06-05 21:13:50 +0000 |
commit | 184701a33a0f77dfbe38d231d05741db1f8ddbc6 (patch) | |
tree | b1dcb55ef110c1d2922c9d22b263f0629060330c /common/keyboard_8042.c | |
parent | e0f6c91881b2873a415d9debaf381dfada771629 (diff) | |
download | chrome-ec-184701a33a0f77dfbe38d231d05741db1f8ddbc6.tar.gz |
8042: Only send back ACK in response to reset command(0xff)
8042 keyboard command reset (0xff) was returning ACK(0xfa) as well as
BAT(0xaa). From [1], 0xaa seems to be represent OK. However, the spec
does not expect OK to be sent in response to reset command.
Coreboot libpayload 8042 driver was recently updated to send a reset
command on initialization to make it work with certain
payloads. Sending back 0xaa along with ACK seems to make the
initialization fail because it is not expecting anything other than
ACK.
This change gets rid of the return value 0xaa that was being sent for
reset command.
[1] http://zet.aluzina.org/images/d/d4/8042.pdf
BUG=b:134366527
BRANCH=None
TEST=Verified that keyboard initialization no longer fails in
depthcharge.
Change-Id: I0ac917dc94aa381ab705474cd7bcf494fb8b10d6
Signed-off-by: Furquan Shaikh <furquan@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1641756
Reviewed-by: Frank Wu <frank_wu@compal.corp-partner.google.com>
Reviewed-by: Duncan Laurie <dlaurie@google.com>
Tested-by: Frank Wu <frank_wu@compal.corp-partner.google.com>
Tested-by: Furquan Shaikh <furquan@chromium.org>
Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Diffstat (limited to 'common/keyboard_8042.c')
-rw-r--r-- | common/keyboard_8042.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/common/keyboard_8042.c b/common/keyboard_8042.c index 660bd3970e..d1efbc9df2 100644 --- a/common/keyboard_8042.c +++ b/common/keyboard_8042.c @@ -609,12 +609,10 @@ static int handle_keyboard_data(uint8_t data, uint8_t *output) keyboard_clear_buffer(); break; - case I8042_CMD_RESET_BAT: + case I8042_CMD_RESET: reset_rate_and_delay(); keyboard_clear_buffer(); output[out_len++] = I8042_RET_ACK; - output[out_len++] = I8042_RET_BAT; - output[out_len++] = I8042_RET_BAT; break; case I8042_CMD_RESEND: |