mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
Add Surface System Aggregator Module core and Surface Serial Hub driver, required for the embedded controller found on Microsoft Surface devices. The Surface System Aggregator Module (SSAM, SAM or Surface Aggregator) is an embedded controller (EC) found on 4th and later generation Microsoft Surface devices, with the exception of the Surface Go series. This EC provides various functionality, depending on the device in question. This can include battery status and thermal reporting (5th and later generations), but also HID keyboard (6th+) and touchpad input (7th+) on Surface Laptop and Surface Book 3 series devices. This patch provides the basic necessities for communication with the SAM EC on 5th and later generation devices. On these devices, the EC provides an interface that acts as serial device, called the Surface Serial Hub (SSH). 4th generation devices, on which the EC interface is provided via an HID-over-I2C device, are not supported by this patch. Specifically, this patch adds a driver for the SSH device (device HID MSHW0084 in ACPI), as well as a controller structure and associated API. This represents the functional core of the Surface Aggregator kernel subsystem, introduced with this patch, and will be expanded upon in subsequent commits. The SSH driver acts as the main attachment point for this subsystem and sets-up and manages the controller structure. The controller in turn provides a basic communication interface, allowing to send requests from host to EC and receiving the corresponding responses, as well as managing and receiving events, sent from EC to host. It is structured into multiple layers, with the top layer presenting the API used by other kernel drivers and the lower layers modeled after the serial protocol used for communication. Said other drivers are then responsible for providing the (Surface model specific) functionality accessible through the EC (e.g. battery status reporting, thermal information, ...) via said controller structure and API, and will be added in future commits. Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com> Link: https://lore.kernel.org/r/20201221183959.1186143-2-luzmaximilian@gmail.com Signed-off-by: Hans de Goede <hdegoede@redhat.com>
62 lines
1.8 KiB
Plaintext
62 lines
1.8 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Microsoft Surface Platform-Specific Drivers
|
|
#
|
|
|
|
menuconfig SURFACE_PLATFORMS
|
|
bool "Microsoft Surface Platform-Specific Device Drivers"
|
|
depends on ACPI
|
|
default y
|
|
help
|
|
Say Y here to get to see options for platform-specific device drivers
|
|
for Microsoft Surface devices. This option alone does not add any
|
|
kernel code.
|
|
|
|
If you say N, all options in this submenu will be skipped and disabled.
|
|
|
|
if SURFACE_PLATFORMS
|
|
|
|
config SURFACE3_WMI
|
|
tristate "Surface 3 WMI Driver"
|
|
depends on ACPI_WMI
|
|
depends on DMI
|
|
depends on INPUT
|
|
depends on SPI
|
|
help
|
|
Say Y here if you have a Surface 3.
|
|
|
|
To compile this driver as a module, choose M here: the module will
|
|
be called surface3-wmi.
|
|
|
|
config SURFACE_3_BUTTON
|
|
tristate "Power/home/volume buttons driver for Microsoft Surface 3 tablet"
|
|
depends on KEYBOARD_GPIO && I2C
|
|
help
|
|
This driver handles the power/home/volume buttons on the Microsoft Surface 3 tablet.
|
|
|
|
config SURFACE_3_POWER_OPREGION
|
|
tristate "Surface 3 battery platform operation region support"
|
|
depends on I2C
|
|
help
|
|
This driver provides support for ACPI operation
|
|
region of the Surface 3 battery platform driver.
|
|
|
|
config SURFACE_GPE
|
|
tristate "Surface GPE/Lid Support Driver"
|
|
depends on DMI
|
|
help
|
|
This driver marks the GPEs related to the ACPI lid device found on
|
|
Microsoft Surface devices as wakeup sources and prepares them
|
|
accordingly. It is required on those devices to allow wake-ups from
|
|
suspend by opening the lid.
|
|
|
|
config SURFACE_PRO3_BUTTON
|
|
tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
|
|
depends on INPUT
|
|
help
|
|
This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
|
|
|
|
source "drivers/platform/surface/aggregator/Kconfig"
|
|
|
|
endif # SURFACE_PLATFORMS
|