From nobody Wed May 28 19:43:03 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4b70KM43spz5xB3c; Wed, 28 May 2025 19:43:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4b70KM2hq3z3XcD; Wed, 28 May 2025 19:43:03 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748461383; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Uk6HVDGOALYDTekTExU0GDgAChF9m8mT3X0uR0A61EI=; b=eIkxT5qAVA6dtvBkCiwO6Knw6yT1deprp4JXFiQMqWnJdMZ+PneDiNrQnVoM/Kd43bQVtr 1+h9MBiMu7/rraJxWHT0HC9QArPBhl5jD2sPoCREgSsVrAtqs5gCrHhvkCwnQy2hWUb9G1 aJi0kyMnJ10Lvr4JBlxRxZMn+O3xt179F3lNrhqmADIcNqq+PRxrEEcFZm0Q+q6zJ3up/h MgLBnQrDWFQxkuUVwYSx78EWeWhPIFo/urHtojGVlZFkadoEPMbZZKtzqO8CZlkZovM5pi v37W9SkyNCuwd72hfqxOwHUXbXhXwuE2AajSiTNiXkdyTryuhglvKMtZdei3hA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1748461383; a=rsa-sha256; cv=none; b=RvwYMyIMZoQtP9UjTTtjqTtukt4hM1KqaLYx22//uCW5nznRNdX2KG5BMcl/IViyozNtNq DIocxByrlA3MqAfH5KJz3O1zB3iqwCbTgocitxxr/FFVLDCSo0FxSHPLAWSxtg1NOb/20I GWjy3IF4Omvl0kvz4R6aeKpJ+o64uQCDPtm2iWwhkGbFfPCj7Ddcdg6463Dhj233I/Ald1 hI28JKmKh/Og6TNx05XyrF5Ev4oyGNINcfJ3SR/BEqzHxx/io31RB0Uwn9CAMFVPiN047F Owa6WlE/KVFdtVUtf+XaprNHFdcBSfJWf7tX6TvkKJQSlX8NFrPESSWWzHijdA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1748461383; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Uk6HVDGOALYDTekTExU0GDgAChF9m8mT3X0uR0A61EI=; b=NYdcnoQvzVI2MTS9GF0vs7KaFM0Al39spxZKavspI0ghLstBrfgGAP8AXmCP9gj5Q7Syin i6r1saZYRGzoNTtYF9vHQhY7mjGcEYBK8wiJL6INwzwhyQEmWqasmjpe6uE0yiwKPUOsJ/ Hj9UbMcTM9fZ/p+PTqMAKhwOGDGkYCbRvJ4w/B16X027lY1N0PjXuzUcwI5W14H1y7dzYX TKt2W6R+KpqzyxrEZDMh+6c8OhvW5nJQHYCH45TcMFBUf4QaxFXOLX9tWjkC4L0z96FSAe hqzpKaBbAo5QAWaRkJ+xv39vSQrF665RJm6WKKrlXzXGF5xVCmYMTvF/xBQHVA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4b70KM2G0zzrd7; Wed, 28 May 2025 19:43:03 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 54SJh3mQ009734; Wed, 28 May 2025 19:43:03 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 54SJh3fB009731; Wed, 28 May 2025 19:43:03 GMT (envelope-from git) Date: Wed, 28 May 2025 19:43:03 GMT Message-Id: <202505281943.54SJh3fB009731@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Ed Maste Subject: git: cba5d7ab32fd - main - atkbd: Fix first keystroke force reset List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: emaste X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cba5d7ab32fd0b4e9c4312cc967baf137377f812 Auto-Submitted: auto-generated The branch main has been updated by emaste: URL: https://cgit.FreeBSD.org/src/commit/?id=cba5d7ab32fd0b4e9c4312cc967baf137377f812 commit cba5d7ab32fd0b4e9c4312cc967baf137377f812 Author: SHENGYI HUNG AuthorDate: 2025-05-24 02:31:18 +0000 Commit: Ed Maste CommitDate: 2025-05-28 19:42:44 +0000 atkbd: Fix first keystroke force reset Some i8042 falsely return KBD_ACK for ECHO command which cuase the keyboard echo test failed. Without passing echo test, the keyboard is considered as unconfigured. Though it is an incorrect behavior, we still regard it as a correct to prevent the force reset (a step for configure a keyboard) of whole keyboard when the first key interrupt reached. Co-Authored-By: Aymeric Wibo Reviewed By: wulf, obiwac, emaste Sponsored By: FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D50498 --- sys/dev/atkbdc/atkbd.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c index 403afcd6c2e2..e046b59803b0 100644 --- a/sys/dev/atkbdc/atkbd.c +++ b/sys/dev/atkbdc/atkbd.c @@ -1249,6 +1249,7 @@ setup_kbd_port(KBDC kbdc, int port, int intr) static int get_kbd_echo(KBDC kbdc) { + int data; /* enable the keyboard port, but disable the keyboard intr. */ if (setup_kbd_port(kbdc, TRUE, FALSE)) /* CONTROLLER ERROR: there is very little we can do... */ @@ -1256,7 +1257,18 @@ get_kbd_echo(KBDC kbdc) /* see if something is present */ write_kbd_command(kbdc, KBDC_ECHO); - if (read_kbd_data(kbdc) != KBD_ECHO) { + data = read_kbd_data(kbdc); + + /* + * Some i8042 falsely return KBD_ACK for ECHO comamnd. + * Thought it is not a correct behavior for AT keyboard, we accept + * and consume it to prevent resetting the whole keyboard after the + * first interrupt. + */ + if (data == KBD_ACK) + data = read_kbd_data(kbdc); + + if (data != KBD_ECHO) { empty_both_buffers(kbdc, 10); test_controller(kbdc); test_kbd_port(kbdc);