mbox series

[v3,0/5] HID: multitouch: Add support for Touch Bars on x86 MacBook Pros

Message ID PN3PR01MB959768813D548FD4A91CDD11B864A@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM
Headers show
Series HID: multitouch: Add support for Touch Bars on x86 MacBook Pros | expand

Message

Aditya Garg May 27, 2025, 4:43 p.m. UTC
Hi all!

This patch series aims to improve the Touch Bar support for x86 Macs.

The `hid-appletb-kbd` and `hid-appletb-bl` drivers were upstreamed into
the Linux kernel and are available since version 6.15. They enable the
Touch Bar to display a predefined set of media and function keys, exactly
the same it does on Windows Bootcamp.

Alongwith that, support for the DRM mode of the driver has also been
upstreamed in kernel 6.15.

The DRM mode enables the Touch Bar to act as a second display, just like
macOS. So now you can add a widget, put a clock or anything else on the
Touch Bar as long as you can develop a daemon.

For this mode, we needed two patchsets. One went to the DRM tree as the
`appletbdrm` driver, and other is this.

The DRM driver is responsible for displaying whatever the OS wants on
the Touch Bar.

Now via these patches, in the DRM mode, we can use the Touch Bar as a
touch screen. The Touch Bar seems to be not compliant with the HID spec,
thus via these patches several tweaks have been done under the cover of
a single quirk, MT_QUIRK_APPLE_TOUCHBAR. Originally expected to be
upstreamed alongwith the DRM driver on 6.15, these patches seem to have
remained in a backlog.

For the case of T2 Macs, apple-bce [1], the driver for the T2 Security
Chip is also needed for all the peripherals, including the Touch Bar
to work. It is still WIP, and will be subsequently sent later to the
appropriate tree. Till then, I'll suggest testers to get the driver
from [1], or more preferably, get Linux support from https://t2linux.org/.

Cheers
Aditya

[1]: https://github.com/t2linux/apple-bce-drv

Changelog:

v2: keep parse at original location in patch 5 as suggested by Benjamin
v3: Reword the cover letter to update the maintainers with the latest
    situation, and re-prepare the patches on 6.15.

Kerem Karabay (5):
  HID: multitouch: Get the contact ID from HID_DG_TRANSDUCER_INDEX
    fields in case of Apple Touch Bar
  HID: multitouch: support getting the tip state from HID_DG_TOUCH
    fields in Apple Touch Bar
  HID: multitouch: take cls->maxcontacts into account for Apple Touch
    Bar even without a HID_DG_CONTACTMAX field
  HID: multitouch: specify that Apple Touch Bar is direct
  HID: multitouch: add device ID for Apple Touch Bar

 drivers/hid/Kconfig          |  1 +
 drivers/hid/hid-multitouch.c | 62 +++++++++++++++++++++++++++++++++---
 2 files changed, 58 insertions(+), 5 deletions(-)