Re: [PATCH v5] platform/x86/lenovo: Add Yoga Book 9 keyboard dock detection driver
From: Dave Carey
Date: Mon Jun 08 2026 - 08:57:59 EST
On 08-Jun-26 11:13, Hans de Goede wrote:
> Dave, I see that your "[PATCH v5] platform/x86/lenovo: Add Yoga Book 9 keyboard
> dock detection driver" patch also uses a DMI match, is that necessary ?
>
> If we need the DMI match because the GUID is not unique enough, then we might
> just as well add this functionality here as this patch is doing ...
Yes, the DMI match is necessary, specifically for the block GUID
(E7F300FA, LENOVO_FEATURE_STATUS_DATA). This is a generic Lenovo feature
query interface that may appear on other Lenovo machines for unrelated
purposes. Both GUIDs live under a PNP0C14 device with _UID "GMZN" on
this machine, which is firmware-specific, but the WMI core matches by
GUID alone — not by parent device UID. Without the DMI guard the block
driver could bind on unrelated hardware and misinterpret WQAF's return
value as a BKBD field.
The event GUID (806BD2A2, LENOVO_BTKBD_EVENT) is named specifically for
Bluetooth keyboard events in the BMOF and is likely unique to BT keyboard
dock hardware, but keeping the DMI guard on both drivers is the safe choice
given we can't easily verify all Lenovo platforms.
> I do wonder since this seems to emit TP_HKEY_EV_TABLET_CHANGED thinkpad_acpi
> events if the existing thinkpad_acpi support does not already provide working
> SW_TABLET_MODE input ?
>
> If it does then also having the WMI driver emit SW_TABLET_MODE events seems
> to be undesirable duplicate functionality.
Tested: no overlap. On the YB9 the existing SW_TABLET_MODE source is
lenovo-ymc (not thinkpad_acpi). The YMC driver tracks hinge/orientation
modes (clamshell=0, tent/tablet/stand=1) — it does not track BT keyboard
attachment state. I ran evtest on both the lenovo-ymc and yb9-kbdock input
devices while detaching and reattaching the keyboard: lenovo-ymc did not
fire at all; only yb9-kbdock emitted SW_TABLET_MODE events. There is no
duplicate functionality.
Regards,
Dave