The ITE keyboard controller (048d:83db) declares a Wireless Radio Controls
application collection, which hid-input registers as a second input device
advertising KEY_RFKILL. That collection never reports anything: the
airplane mode key is wired to the embedded controller and reaches the host
as EC event 0x19, where the platform driver emits the key.
Map the collection to nothing so hidinput_has_been_populated() discards it
and userspace is left with a single, real KEY_RFKILL source.
Signed-off-by: Oleg Keri <redacted>
---
drivers/hid/hid-lenovo.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] The macro `I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD` is used but never defined, resulting in a compilation error.
--
commit 4ee02285ee5c593b77b5e50d44817b425e9ba25b
Author: Oleg Keri [off-list ref]
HID: lenovo: suppress phantom radio control input on Yoga Slim 7x Gen 11
The ITE keyboard controller (048d:83db) declares a Wireless Radio Controls
application collection, which hid-input registers as a second input device
advertising KEY_RFKILL. That collection never reports anything: the
airplane mode key is wired to the embedded controller and reaches the host
as EC event 0x19, where the platform driver emits the key.
@@ -510,6 +520,8 @@ static int lenovo_input_mapping(struct hid_device *hdev, case USB_DEVICE_ID_LENOVO_X1_TAB2: case USB_DEVICE_ID_LENOVO_X1_TAB3: return lenovo_input_mapping_x1_tab_kbd(hdev, hi, field, usage, bit, max);+ case I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD:
[Severity: Low]
Where is I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD defined?
It appears this macro is undeclared, which will cause a build failure when
compiling drivers/hid/hid-lenovo.c in lenovo_input_mapping().
drivers/hid/hid-lenovo.c:523:14: error: 'I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD' undeclared (first use in this function); did you mean 'I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_KEYBOARD'?
523 | case I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD:
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_KEYBOARD
drivers/hid/hid-lenovo.c:523:14: note: each undeclared identifier is reported only once for each function it appears in
In file included from drivers/hid/hid-lenovo.c:30:
drivers/hid/hid-lenovo.c: At top level:
quoted
drivers/hid/hid-lenovo.c:1584:41: error: 'I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD' undeclared here (not in a function); did you mean 'I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_KEYBOARD'?
1584 | USB_VENDOR_ID_ITE, I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD) },
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:817:64: note: in definition of macro 'HID_DEVICE'
817 | .bus = (b), .group = (g), .vendor = (ven), .product = (prod)
| ^~~~
vim +523 drivers/hid/hid-lenovo.c
488
489 static int lenovo_input_mapping(struct hid_device *hdev,
490 struct hid_input *hi, struct hid_field *field,
491 struct hid_usage *usage, unsigned long **bit, int *max)
492 {
493 switch (hdev->product) {
494 case USB_DEVICE_ID_LENOVO_TPKBD:
495 return lenovo_input_mapping_tpkbd(hdev, hi, field,
496 usage, bit, max);
497 case USB_DEVICE_ID_LENOVO_CUSBKBD:
498 case USB_DEVICE_ID_LENOVO_CBTKBD:
499 return lenovo_input_mapping_cptkbd(hdev, hi, field,
500 usage, bit, max);
501 case USB_DEVICE_ID_LENOVO_TPIIUSBKBD:
502 case USB_DEVICE_ID_LENOVO_TPIIBTKBD:
503 return lenovo_input_mapping_tpIIkbd(hdev, hi, field,
504 usage, bit, max);
505 case USB_DEVICE_ID_IBM_SCROLLPOINT_III:
506 case USB_DEVICE_ID_IBM_SCROLLPOINT_PRO:
507 case USB_DEVICE_ID_IBM_SCROLLPOINT_OPTICAL:
508 case USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL:
509 case USB_DEVICE_ID_IBM_SCROLLPOINT_800DPI_OPTICAL_PRO:
510 case USB_DEVICE_ID_LENOVO_SCROLLPOINT_OPTICAL:
511 return lenovo_input_mapping_scrollpoint(hdev, hi, field,
512 usage, bit, max);
513 case USB_DEVICE_ID_LENOVO_TP10UBKBD:
514 return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field,
515 usage, bit, max);
516 case USB_DEVICE_ID_LENOVO_X12_TAB:
517 case USB_DEVICE_ID_LENOVO_X12_TAB2:
518 case USB_DEVICE_ID_LENOVO_X13_TAB:
519 case USB_DEVICE_ID_LENOVO_X1_TAB:
520 case USB_DEVICE_ID_LENOVO_X1_TAB2:
521 case USB_DEVICE_ID_LENOVO_X1_TAB3:
522 return lenovo_input_mapping_x1_tab_kbd(hdev, hi, field, usage, bit, max);
> 523 case I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD:
524 return lenovo_input_mapping_yoga7x_g11_kbd(hdev, hi, field, usage, bit, max);
525 default:
526 return 0;
527 }
528 }
529
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
On Thu, 10 Sep 2026 07:48:31 +0800
kernel test robot [off-list ref] wrote:
quoted
quoted
drivers/hid/hid-lenovo.c:523:7: error: use of undeclared identifier 'I2C_DEVICE_ID_ITE_LENOVO_YOGA_SLIM_7X_G11_KEYBOARD'
Correct, and my mistake: this patch was one half of a two-patch change
and I posted only the half that uses the identifier. The #define is
added by the i2c-hid quirk patch, which never made it to the list.
Both are now posted together, in the right order, as v2:
https://lore.kernel.org/all/20260910063051.4556-1-okerixx@gmail.com/
pw-bot: superseded
Thanks,
Oleg