mirror of
https://github.com/torvalds/linux.git
synced 2025-04-12 06:49:52 +00:00

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: Kerem Karabay <kekrby@gmail.com> Co-developed-by: Atharva Tiwari <evepolonium@gmail.com> Signed-off-by: Atharva Tiwari <evepolonium@gmail.com> Co-developed-by: Aditya Garg <gargaditya08@live.com> Signed-off-by: Aditya Garg <gargaditya08@live.com> Signed-off-by: Aun-Ali Zaidi <admin@kodeit.net> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/FCAC702C-F84A-47F9-8C78-BBBB34D08500@live.com
262 lines
7.8 KiB
Plaintext
262 lines
7.8 KiB
Plaintext
# 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
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
Choose this option if you have an ARC PGU controller.
|
|
|
|
If M is selected the module will be called arcpgu.
|
|
|
|
config DRM_BOCHS
|
|
tristate "DRM Support for bochs dispi vga interface (qemu stdvga)"
|
|
depends on DRM && PCI && MMU
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_GEM_SHMEM_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
This is a KMS driver for qemu's stdvga output. Choose this option
|
|
for qemu.
|
|
|
|
If M is selected the module will be called bochs.
|
|
|
|
config DRM_CIRRUS_QEMU
|
|
tristate "Cirrus driver for QEMU emulated device"
|
|
depends on DRM && PCI && MMU
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_SHMEM_HELPER
|
|
help
|
|
This is a KMS driver for emulated cirrus device in qemu.
|
|
It is *NOT* intended for real cirrus devices. This requires
|
|
the modesetting userspace X.org driver.
|
|
|
|
Cirrus is obsolete, the hardware was designed in the 90ies
|
|
and can't keep up with todays needs. More background:
|
|
https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
|
|
|
|
Better alternatives are:
|
|
- stdvga (DRM_BOCHS, qemu -vga std, default in qemu 2.2+)
|
|
- qxl (DRM_QXL, qemu -vga qxl, works best with spice)
|
|
- virtio (DRM_VIRTIO_GPU), qemu -vga virtio)
|
|
|
|
config DRM_GM12U320
|
|
tristate "GM12U320 driver for USB projectors"
|
|
depends on DRM && USB && MMU
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_SHMEM_HELPER
|
|
help
|
|
This is a KMS driver for projectors which use the GM12U320 chipset
|
|
for video transfer over USB2/3, such as the Acer C120 mini projector.
|
|
|
|
config DRM_OFDRM
|
|
tristate "Open Firmware display driver"
|
|
depends on DRM && MMU && OF && (PPC || COMPILE_TEST)
|
|
select APERTURE_HELPERS
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_GEM_SHMEM_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
DRM driver for Open Firmware framebuffers.
|
|
|
|
This driver assumes that the display hardware has been initialized
|
|
by the Open Firmware before the kernel boots. Scanout buffer, size,
|
|
and display format must be provided via device tree.
|
|
|
|
config DRM_PANEL_MIPI_DBI
|
|
tristate "DRM support for MIPI DBI compatible panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
select VIDEOMODE_HELPERS
|
|
help
|
|
Say Y here if you want to enable support for MIPI DBI compatible
|
|
panels. The controller command setup can be provided using a
|
|
firmware file. For more information see
|
|
https://github.com/notro/panel-mipi-dbi/wiki.
|
|
To compile this driver as a module, choose M here.
|
|
|
|
config DRM_SIMPLEDRM
|
|
tristate "Simple framebuffer driver"
|
|
depends on DRM && MMU
|
|
select APERTURE_HELPERS
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_GEM_SHMEM_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
DRM driver for simple platform-provided framebuffers.
|
|
|
|
This driver assumes that the display hardware has been initialized
|
|
by the firmware or bootloader before the kernel boots. Scanout
|
|
buffer, size, and display format must be provided via device tree,
|
|
UEFI, VESA, etc.
|
|
|
|
On x86 BIOS or UEFI systems, you should also select SYSFB_SIMPLEFB
|
|
to use UEFI and VESA framebuffers.
|
|
|
|
config TINYDRM_HX8357D
|
|
tristate "DRM support for HX8357D display panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the following HX8357D panels:
|
|
* YX350HV15-T 3.5" 340x350 TFT (Adafruit 3.5")
|
|
|
|
If M is selected the module will be called hx8357d.
|
|
|
|
config TINYDRM_ILI9163
|
|
tristate "DRM support for ILI9163 display panels"
|
|
depends on DRM && SPI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_KMS_HELPER
|
|
select DRM_MIPI_DBI
|
|
help
|
|
DRM driver for the following Ilitek ILI9163 panels:
|
|
* NHD-1.8-128160EF 128x160 TFT
|
|
|
|
If M is selected the module will be called ili9163.
|
|
|
|
config TINYDRM_ILI9225
|
|
tristate "DRM support for ILI9225 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
help
|
|
DRM driver for the following Ilitek ILI9225 panels:
|
|
* No-name 2.2" color screen module
|
|
|
|
If M is selected the module will be called ili9225.
|
|
|
|
config TINYDRM_ILI9341
|
|
tristate "DRM support for ILI9341 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the following Ilitek ILI9341 panels:
|
|
* YX240QV29-T 2.4" 240x320 TFT (Adafruit 2.4")
|
|
|
|
If M is selected the module will be called ili9341.
|
|
|
|
config TINYDRM_ILI9486
|
|
tristate "DRM support for ILI9486 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the following Ilitek ILI9486 panels:
|
|
* PISCREEN 3.5" 320x480 TFT (Ozzmaker 3.5")
|
|
* RPILCD 3.5" 320x480 TFT (Waveshare 3.5")
|
|
|
|
If M is selected the module will be called ili9486.
|
|
|
|
config TINYDRM_MI0283QT
|
|
tristate "DRM support for MI0283QT"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for the Multi-Inno MI0283QT display panel
|
|
If M is selected the module will be called mi0283qt.
|
|
|
|
config TINYDRM_REPAPER
|
|
tristate "DRM support for Pervasive Displays RePaper panels (V231)"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
help
|
|
DRM driver for the following Pervasive Displays panels:
|
|
1.44" TFT EPD Panel (E1144CS021)
|
|
1.90" TFT EPD Panel (E1190CS021)
|
|
2.00" TFT EPD Panel (E2200CS021)
|
|
2.71" TFT EPD Panel (E2271CS021)
|
|
|
|
If M is selected the module will be called repaper.
|
|
|
|
config TINYDRM_SHARP_MEMORY
|
|
tristate "DRM support for Sharp Memory LCD panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_KMS_HELPER
|
|
help
|
|
DRM Driver for the following Sharp Memory Panels:
|
|
* 1.00" Sharp Memory LCD (LS010B7DH04)
|
|
* 1.10" Sharp Memory LCD (LS011B7DH03)
|
|
* 1.20" Sharp Memory LCD (LS012B7DD01)
|
|
* 1.28" Sharp Memory LCD (LS013B7DH03)
|
|
* 1.26" Sharp Memory LCD (LS013B7DH05)
|
|
* 1.80" Sharp Memory LCD (LS018B7DH02)
|
|
* 2.70" Sharp Memory LCD (LS027B7DH01)
|
|
* 2.70" Sharp Memory LCD (LS027B7DH01A)
|
|
* 3.20" Sharp Memory LCD (LS032B7DD02)
|
|
* 4.40" Sharp Memory LCD (LS044Q7DH01)
|
|
|
|
If M is selected the module will be called sharp_memory.
|
|
|
|
config TINYDRM_ST7586
|
|
tristate "DRM support for Sitronix ST7586 display panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
help
|
|
DRM driver for the following Sitronix ST7586 panels:
|
|
* LEGO MINDSTORMS EV3
|
|
|
|
If M is selected the module will be called st7586.
|
|
|
|
config TINYDRM_ST7735R
|
|
tristate "DRM support for Sitronix ST7715R/ST7735R display panels"
|
|
depends on DRM && SPI
|
|
select DRM_CLIENT_SELECTION
|
|
select DRM_KMS_HELPER
|
|
select DRM_GEM_DMA_HELPER
|
|
select DRM_MIPI_DBI
|
|
select BACKLIGHT_CLASS_DEVICE
|
|
help
|
|
DRM driver for Sitronix ST7715R/ST7735R with one of the following
|
|
LCDs:
|
|
* Jianda JD-T18003-T01 1.8" 128x160 TFT
|
|
* Okaya RH128128T 1.44" 128x128 TFT
|
|
|
|
If M is selected the module will be called st7735r.
|