Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F165182222
D57744.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D57744.diff
View Options
diff --git a/share/man/man4/acpi_ibm.4 b/share/man/man4/acpi_ibm.4
--- 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 @@
Mute
.It Li 0x18
Access IBM Button
+.It Li 0x1b
+Mic Mute Button
.El
.Ss Xr led 4 Interface
The
@@ -230,6 +232,8 @@
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
--- a/sys/dev/acpi_support/acpi_ibm.c
+++ b/sys/dev/acpi_support/acpi_ibm.c
@@ -79,7 +79,7 @@
#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 @@
#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 @@
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 @@
},
{
.name = "mic_led",
- .method = ACPI_IBM_METHOD_MIC_LED,
+ .method = ACPI_IBM_METHOD_MICMUTE_LED,
.description = "Mic mute led",
},
{
@@ -419,7 +420,7 @@
}
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 @@
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 @@
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 @@
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_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 @@
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 @@
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 @@
/* 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 @@
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 @@
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
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Aug 7, 2:34 PM (2 h, 50 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
36182581
Default Alt Text
D57744.diff (5 KB)
Attached To
Mode
D57744: acpi_ibm: Support mic mute key
Attached
Detach File
Event Timeline
Log In to Comment