Commit 0670c2f5 authored by Kerem Karabay's avatar Kerem Karabay Committed by Thomas Zimmermann
Browse files

drm/tiny: add driver for Apple Touch Bars in x86 Macs

The Touch Bars found on x86 Macs support two USB configurations: one
where the device presents itself as a HID keyboard and can display
predefined sets of keys, and one where the operating system has full
control over what is displayed.

This commit adds support for the display functionality of the second
configuration. Functionality for the first configuration has been
merged in the HID tree.

Note that this driver has only been tested on T2 Macs, and only includes
the USB device ID for these devices. Testing on T1 Macs would be
appreciated.

Credit goes to Ben (Bingxing) Wang on GitHub for reverse engineering
most of the protocol.

Also, as requested by Andy, I would like to clarify the use of __packed
structs in this driver:

- All the packed structs are aligned except for appletbdrm_msg_information.
- We have to pack appletbdrm_msg_information since it is requirement of
  the protocol.
- We compared binaries compiled by keeping the rest structs __packed and
  not __packed using bloat-o-meter, and __packed was not affecting code
  generation.
- To maintain consistency, rest structs have been kept __packed.

I would also like to point out that since the driver was reverse-engineered
the actual data types of the protocol might be different, including, but
not limited to, endianness.

Link: https://github.com/imbushuo/DFRDisplayKm


Signed-off-by: default avatarKerem Karabay <kekrby@gmail.com>
Co-developed-by: default avatarAtharva Tiwari <evepolonium@gmail.com>
Signed-off-by: default avatarAtharva Tiwari <evepolonium@gmail.com>
Co-developed-by: default avatarAditya Garg <gargaditya08@live.com>
Signed-off-by: default avatarAditya Garg <gargaditya08@live.com>
Signed-off-by: default avatarAun-Ali Zaidi <admin@kodeit.net>
Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/FCAC702C-F84A-47F9-8C78-BBBB34D08500@live.com
parent c9043706
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -7149,6 +7149,14 @@ S: Supported
T:	git https://gitlab.freedesktop.org/drm/misc/kernel.git
F:	drivers/gpu/drm/sun4i/sun8i*
DRM DRIVER FOR APPLE TOUCH BARS
M:	Aun-Ali Zaidi <admin@kodeit.net>
M:	Aditya Garg <gargaditya08@live.com>
L:	dri-devel@lists.freedesktop.org
S:	Maintained
T:	git https://gitlab.freedesktop.org/drm/misc/kernel.git
F:	drivers/gpu/drm/tiny/appletbdrm.c
DRM DRIVER FOR ARM PL111 CLCD
M:	Linus Walleij <linus.walleij@linaro.org>
S:	Maintained
+12 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only

config DRM_APPLETBDRM
	tristate "DRM support for Apple Touch Bars"
	depends on DRM && USB && MMU
	select DRM_GEM_SHMEM_HELPER
	select DRM_KMS_HELPER
	help
	  Say Y here if you want support for the display of Touch Bars on x86
	  MacBook Pros.

	  To compile this driver as a module, choose M here: the
	  module will be called appletbdrm.

config DRM_ARCPGU
	tristate "ARC PGU"
	depends on DRM && OF
+1 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only

obj-$(CONFIG_DRM_APPLETBDRM)		+= appletbdrm.o
obj-$(CONFIG_DRM_ARCPGU)		+= arcpgu.o
obj-$(CONFIG_DRM_BOCHS)			+= bochs.o
obj-$(CONFIG_DRM_CIRRUS_QEMU)		+= cirrus-qemu.o
+841 −0

File added.

Preview size limit exceeded, changes collapsed.