Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Nov 2025 19:25:20 +0000
From:      Poul-Henning Kamp <phk@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 5d53462af1d0 - main - iichid: The IICHID spec defines the response to the RESET command as two bytes of zeros.
Message-ID:  <691cc820.2ad9f.7db644f3@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by phk:

URL: https://cgit.FreeBSD.org/src/commit/?id=5d53462af1d0e892da77b52b701b337119b2f5d7

commit 5d53462af1d0e892da77b52b701b337119b2f5d7
Author:     Poul-Henning Kamp <phk@FreeBSD.org>
AuthorDate: 2025-11-18 19:22:01 +0000
Commit:     Poul-Henning Kamp <phk@FreeBSD.org>
CommitDate: 2025-11-18 19:25:10 +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)
---
 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)


help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?691cc820.2ad9f.7db644f3>