git: d61be9d99470 - stable/15 - iichid: The IICHID spec defines the response to the RESET command as two bytes of zeros.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 19 Nov 2025 18:20:25 UTC
The branch stable/15 has been updated by emaste:
URL: https://cgit.FreeBSD.org/src/commit/?id=d61be9d994702ffb8443c686f3ae2a5c702df3c7
commit d61be9d994702ffb8443c686f3ae2a5c702df3c7
Author: Poul-Henning Kamp <phk@FreeBSD.org>
AuthorDate: 2025-11-18 19:22:01 +0000
Commit: Ed Maste <emaste@FreeBSD.org>
CommitDate: 2025-11-19 18:20:09 +0000
iichid: The IICHID spec defines the response to the RESET command as two bytes of zeros.
Our recent changes to iichid.c has caused us to attempt to read a
full REPORT instead, and at least one keyboard hangs solid when we
do that.
This patch changes us to be spec-compliant.
Differential Revision: https://reviews.freebsd.org/D53803
MFC after: 1 day
Approved by: re(ccperciva)
(cherry picked from commit 5d53462af1d0e892da77b52b701b337119b2f5d7)
---
sys/dev/iicbus/iichid.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/sys/dev/iicbus/iichid.c b/sys/dev/iicbus/iichid.c
index 5ca3f1b84e48..430066bd8f52 100644
--- a/sys/dev/iicbus/iichid.c
+++ b/sys/dev/iicbus/iichid.c
@@ -271,6 +271,8 @@ static int
iichid_cmd_read(struct iichid_softc* sc, void *buf, iichid_size_t maxlen,
iichid_size_t *actual_len)
{
+ int error;
+
/*
* 6.1.3 - Retrieval of Input Reports
* DEVICE returns the length (2 Bytes) and the entire Input Report.
@@ -280,7 +282,10 @@ iichid_cmd_read(struct iichid_softc* sc, void *buf, iichid_size_t maxlen,
struct iic_msg msgs[] = {
{ sc->addr, IIC_M_RD, maxlen, buf },
};
- int error;
+
+ if (!sc->reset_acked) {
+ msgs[0].len = 2;
+ }
error = iicbus_transfer(sc->dev, msgs, nitems(msgs));
if (error != 0)