From nobody Wed Jun 24 14:13:52 2026 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 4glkSd0tpdz6jGM8 for ; Wed, 24 Jun 2026 14:13:53 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4glkSd0Jdgz3xtk for ; Wed, 24 Jun 2026 14:13:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782310433; 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=DC7ziW60evG2Dp2fkfK60xSW7zn5s7fupwNB/kLbyTg=; b=QQyaAlYFHtXfJrQtH3hK+9lIfmfzyI14qwg3MBel4VTSJxngYJEMIPWfU3Q1S/bxbkJwLS Nypkb1wTDqMLBrdsuL7KGuN7DtpTV7EQiBykz9pMUB9Ny04gtJV2oODPFF+81lh3dfqXSc +SZ7xuWxA3AgQjmH4UthZBWKljdkvOv6U3Vc9oTp2sattG0YmeAjUcKeElrS96NySy5FFa Puj5Jlnvu6w2NB1fQE/tKevYfQEKVatBHAe3HXZV5FnTS/KAeBdTEdQ1w6q3HqCKxyCzPB 1y83eckdRBq9blZrxFOZCZOrv+T+SeNbGLiLaeZC0ww7ce7Au2piF/t8Vym3Ww== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782310433; a=rsa-sha256; cv=none; b=ZzEaxtOggfmGZebVyxH/fIyKgmWEHvZU2k6856xt2CXqsrE/VFwblQ88S1VkxeiXAGyScn fV45wozTPkZRTaycNV6U4Qbw2ToZluvYaT+DoGaoMPyFn4IcQamUI5EPuUIdw/Mcv2DKzG MYNNdgxwdiVn4ErfwdUhoEVCC+UDQOPamdgfqI+qRV0XnAgz7mi+y8oB7zZ4VHH6nqyg+t oZ7K2gAVEO6W0sh/xfxCcmrOfQIqL1kP6ZLOkxNHjG3uAhqegIkKlWA3GR4B8gCW6tkgtX yBrbcnJAiyoX2kuHLjzpaVl8xLDaJGqYaC4uP6eGX8S7JdKCFITjTveKxb0d8A== 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=1782310433; 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=DC7ziW60evG2Dp2fkfK60xSW7zn5s7fupwNB/kLbyTg=; b=I8PtL4SHoLcIb8djP+v142GYcM4XIdJbYmk3aSW76KzzpHP6DkrjbOxuKykXDkVm2Cr96J +Epfn+VgANIV2paMxHsnv0vdm15J0xaLGid5k3UvWL0Zbj9TMZ5hzAcP3V6WY/AaAzope3 BBfS2T0NORyXRIe9Ai70xqtnImC6wMbIISO0l1skMdKwra++j/uJp4UYXMXgaqDgFQMZH0 Ae9lHjPjMKHE5yVNOnjru86pONzgUZ4gk1u0PutkajChKb5M1ifgjucsJN9PSs1A/EcGjL wa+JjlfAkHplnJrpU7myXUcYmIbKZNMv0upNvHf1s3iDIEW5d0cDYI1s6VmQKg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4glkSc6SNjz7XR for ; Wed, 24 Jun 2026 14:13:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1995d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 24 Jun 2026 14:13:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Aymeric Wibo Subject: git: 7e7f8b2c6641 - main - acpi_ibm: Report mic mute key evdev events 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: obiwac X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7e7f8b2c66410bcc6408482be73bd9c059e2bbe2 Auto-Submitted: auto-generated Date: Wed, 24 Jun 2026 14:13:52 +0000 Message-Id: <6a3be620.1995d.f035516@gitrepo.freebsd.org> The branch main has been updated by obiwac: URL: https://cgit.FreeBSD.org/src/commit/?id=7e7f8b2c66410bcc6408482be73bd9c059e2bbe2 commit 7e7f8b2c66410bcc6408482be73bd9c059e2bbe2 Author: Aymeric Wibo AuthorDate: 2026-06-20 21:29:49 +0000 Commit: Aymeric Wibo CommitDate: 2026-06-24 14:12:51 +0000 acpi_ibm: Report mic mute key evdev events While here, make the naming of micmute_led more consistent. PR: 296140 Event: Halifax Hackathon 202606 Reported by: David Lundqvist Reviewed by: olce Tested by: David Lundqvist, Oleksandr Kryvulia Co-authored-by: David Lundqvist Sponsored by: The FreeBSD Foundation --- share/man/man4/acpi_ibm.4 | 6 +++- sys/dev/acpi_support/acpi_ibm.c | 72 ++++++++++++++++++++++++----------------- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/share/man/man4/acpi_ibm.4 b/share/man/man4/acpi_ibm.4 index 1d9d43376f9d..4984fd4987d4 100644 --- a/share/man/man4/acpi_ibm.4 +++ b/share/man/man4/acpi_ibm.4 @@ -23,7 +23,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.Dd March 13, 2022 +.Dd June 22, 2026 .Dt ACPI_IBM 4 .Os .Sh NAME @@ -141,6 +141,8 @@ Volume Down Mute .It Li 0x18 Access IBM Button +.It Li 0x1b +Mic Mute Button .El .Ss Xr led 4 Interface The @@ -230,6 +232,8 @@ Volume Down Mute .It Li 8388608 Access IBM Button +.It Li 67108864 +Mic Mute .El .It Va dev.acpi_ibm.0.hotkey (read-only) diff --git a/sys/dev/acpi_support/acpi_ibm.c b/sys/dev/acpi_support/acpi_ibm.c index a33a2c7bc555..f2a2db2de657 100644 --- a/sys/dev/acpi_support/acpi_ibm.c +++ b/sys/dev/acpi_support/acpi_ibm.c @@ -79,7 +79,7 @@ ACPI_MODULE_NAME("IBM") #define ACPI_IBM_METHOD_FANSTATUS 12 #define ACPI_IBM_METHOD_THERMAL 13 #define ACPI_IBM_METHOD_HANDLEREVENTS 14 -#define ACPI_IBM_METHOD_MIC_LED 15 +#define ACPI_IBM_METHOD_MICMUTE_LED 15 #define ACPI_IBM_METHOD_PRIVACYGUARD 16 /* Hotkeys/Buttons */ @@ -153,6 +153,7 @@ ACPI_MODULE_NAME("IBM") #define IBM_EVENT_VOLUME_DOWN 0x16 #define IBM_EVENT_MUTE 0x17 #define IBM_EVENT_ACCESS_IBM_BUTTON 0x18 +#define IBM_EVENT_MICMUTE 0x1b /* Device-specific register flags */ #define IBM_FLAG_PRIVACYGUARD_DEVICE_PRESENT 0x10000 @@ -189,8 +190,8 @@ struct acpi_ibm_softc { int led_state; /* Mic led handle */ - ACPI_HANDLE mic_led_handle; - int mic_led_state; + ACPI_HANDLE micmute_led_handle; + int micmute_led_state; int wlan_bt_flags; int thermal_updt_supported; @@ -281,7 +282,7 @@ static struct { }, { .name = "mic_led", - .method = ACPI_IBM_METHOD_MIC_LED, + .method = ACPI_IBM_METHOD_MICMUTE_LED, .description = "Mic mute led", }, { @@ -419,7 +420,7 @@ ibm_led_task(struct acpi_ibm_softc *sc, int pending __unused) } static int -acpi_ibm_mic_led_set(struct acpi_ibm_softc *sc, int arg) +acpi_ibm_micmute_led_set(struct acpi_ibm_softc *sc, int arg) { ACPI_OBJECT_LIST input; ACPI_OBJECT params[1]; @@ -428,10 +429,10 @@ acpi_ibm_mic_led_set(struct acpi_ibm_softc *sc, int arg) if (arg < 0 || arg > 1) return (EINVAL); - if (sc->mic_led_handle) { + if (sc->micmute_led_handle) { params[0].Type = ACPI_TYPE_INTEGER; params[0].Integer.Value = 0; - /* mic led: 0 off, 2 on */ + /* mic mute led: 0 off, 2 on */ if (arg == 1) params[0].Integer.Value = 2; @@ -440,7 +441,7 @@ acpi_ibm_mic_led_set(struct acpi_ibm_softc *sc, int arg) status = AcpiEvaluateObject(sc->handle, "MMTS", &input, NULL); if (ACPI_SUCCESS(status)) - sc->mic_led_state = arg; + sc->micmute_led_state = arg; return (status); } @@ -503,6 +504,7 @@ acpi_ibm_attach(device_t dev) evdev_support_event(sc->evdev, EV_KEY); evdev_support_key(sc->evdev, KEY_BRIGHTNESSUP); evdev_support_key(sc->evdev, KEY_BRIGHTNESSDOWN); + evdev_support_key(sc->evdev, KEY_MICMUTE); if (evdev_register(sc->evdev) != 0) return (ENXIO); @@ -681,7 +683,7 @@ acpi_ibm_resume(device_t dev) ACPI_SERIAL_END(ibm); /* The mic led does not turn back on when sysctl_set is called in the above loop */ - acpi_ibm_mic_led_set(sc, sc->mic_led_state); + acpi_ibm_micmute_led_set(sc, sc->micmute_led_state); return (0); } @@ -872,9 +874,9 @@ acpi_ibm_sysctl_get(struct acpi_ibm_softc *sc, int method) val = -1; break; - case ACPI_IBM_METHOD_MIC_LED: - if (sc->mic_led_handle) - return sc->mic_led_state; + case ACPI_IBM_METHOD_MICMUTE_LED: + if (sc->micmute_led_handle) + return sc->micmute_led_state; else val = -1; break; @@ -926,8 +928,8 @@ acpi_ibm_sysctl_set(struct acpi_ibm_softc *sc, int method, int arg) return acpi_ibm_mute_set(sc, arg); break; - case ACPI_IBM_METHOD_MIC_LED: - return acpi_ibm_mic_led_set(sc, arg); + case ACPI_IBM_METHOD_MICMUTE_LED: + return acpi_ibm_micmute_led_set(sc, arg); break; case ACPI_IBM_METHOD_THINKLIGHT: @@ -1001,14 +1003,14 @@ acpi_ibm_sysctl_init(struct acpi_ibm_softc *sc, int method) /* EC is required here, which was already checked before */ return (TRUE); - case ACPI_IBM_METHOD_MIC_LED: - if (ACPI_SUCCESS(AcpiGetHandle(sc->handle, "MMTS", &sc->mic_led_handle))) - { + case ACPI_IBM_METHOD_MICMUTE_LED: + if (ACPI_SUCCESS(AcpiGetHandle(sc->handle, "MMTS", + &sc->micmute_led_handle))) { /* Turn off mic led by default */ - acpi_ibm_mic_led_set(sc, 0); + acpi_ibm_micmute_led_set(sc, 0); return (TRUE); } else - sc->mic_led_handle = NULL; + sc->micmute_led_handle = NULL; return (FALSE); case ACPI_IBM_METHOD_THINKLIGHT: @@ -1508,7 +1510,7 @@ acpi_ibm_eventhandler(struct acpi_ibm_softc *sc, int arg) static void acpi_ibm_notify(ACPI_HANDLE h, UINT32 notify, void *context) { - int event, arg, type; + int event, arg, type, key; device_t dev = context; struct acpi_ibm_softc *sc = device_get_softc(dev); @@ -1535,16 +1537,26 @@ acpi_ibm_notify(ACPI_HANDLE h, UINT32 notify, void *context) if (sc->handler_events & (1 << (arg - 1))) acpi_ibm_eventhandler(sc, (arg & 0xff)); #ifdef EVDEV_SUPPORT - else if ((arg & 0xff) == IBM_EVENT_BRIGHTNESS_UP || - (arg & 0xff) == IBM_EVENT_BRIGHTNESS_DOWN) { - uint16_t key; - - key = arg == IBM_EVENT_BRIGHTNESS_UP ? - KEY_BRIGHTNESSUP : KEY_BRIGHTNESSDOWN; - evdev_push_key(sc->evdev, key, 1); - evdev_sync(sc->evdev); - evdev_push_key(sc->evdev, key, 0); - evdev_sync(sc->evdev); + else { + key = -1; + + switch (arg & 0xff) { + case IBM_EVENT_BRIGHTNESS_UP: + key = KEY_BRIGHTNESSUP; + break; + case IBM_EVENT_BRIGHTNESS_DOWN: + key = KEY_BRIGHTNESSDOWN; + break; + case IBM_EVENT_MICMUTE: + key = KEY_MICMUTE; + break; + } + if (key >= 0) { + evdev_push_key(sc->evdev, key, 1); + evdev_sync(sc->evdev); + evdev_push_key(sc->evdev, key, 0); + evdev_sync(sc->evdev); + } } #endif