235 lines
9.7 KiB
Plaintext
235 lines
9.7 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 ARM64 || X86 || COMPILE_TEST
|
||
|
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_POWER_OPREGION
|
||
|
tristate "Surface 3 battery platform operation region support"
|
||
|
depends on ACPI
|
||
|
depends on I2C
|
||
|
help
|
||
|
This driver provides support for ACPI operation
|
||
|
region of the Surface 3 battery platform driver.
|
||
|
|
||
|
config SURFACE_ACPI_NOTIFY
|
||
|
tristate "Surface ACPI Notify Driver"
|
||
|
depends on SURFACE_AGGREGATOR
|
||
|
help
|
||
|
Surface ACPI Notify (SAN) driver for Microsoft Surface devices.
|
||
|
|
||
|
This driver provides support for the ACPI interface (called SAN) of
|
||
|
the Surface System Aggregator Module (SSAM) EC. This interface is used
|
||
|
on 5th- and 6th-generation Microsoft Surface devices (including
|
||
|
Surface Pro 5 and 6, Surface Book 2, Surface Laptops 1 and 2, and in
|
||
|
reduced functionality on the Surface Laptop 3) to execute SSAM
|
||
|
requests directly from ACPI code, as well as receive SSAM events and
|
||
|
turn them into ACPI notifications. It essentially acts as a
|
||
|
translation layer between the SSAM controller and ACPI.
|
||
|
|
||
|
Specifically, this driver may be needed for battery status reporting,
|
||
|
thermal sensor access, and real-time clock information, depending on
|
||
|
the Surface device in question.
|
||
|
|
||
|
config SURFACE_AGGREGATOR_CDEV
|
||
|
tristate "Surface System Aggregator Module User-Space Interface"
|
||
|
depends on SURFACE_AGGREGATOR
|
||
|
help
|
||
|
Provides a misc-device interface to the Surface System Aggregator
|
||
|
Module (SSAM) controller.
|
||
|
|
||
|
This option provides a module (called surface_aggregator_cdev), that,
|
||
|
when loaded, will add a client device (and its respective driver) to
|
||
|
the SSAM controller. Said client device manages a misc-device
|
||
|
interface (/dev/surface/aggregator), which can be used by user-space
|
||
|
tools to directly communicate with the SSAM EC by sending requests and
|
||
|
receiving the corresponding responses.
|
||
|
|
||
|
The provided interface is intended for debugging and development only,
|
||
|
and should not be used otherwise.
|
||
|
|
||
|
config SURFACE_AGGREGATOR_HUB
|
||
|
tristate "Surface System Aggregator Module Subsystem Device Hubs"
|
||
|
depends on SURFACE_AGGREGATOR
|
||
|
depends on SURFACE_AGGREGATOR_BUS
|
||
|
help
|
||
|
Device-hub drivers for Surface System Aggregator Module (SSAM) subsystem
|
||
|
devices.
|
||
|
|
||
|
Provides subsystem hub drivers which manage client devices on various
|
||
|
SSAM subsystems. In some subsystems, notably the BAS subsystem managing
|
||
|
devices contained in the base of the Surface Book 3 and the KIP subsystem
|
||
|
managing type-cover devices in the Surface Pro 8 and Surface Pro X,
|
||
|
devices can be (hot-)removed. Hub devices and drivers are required to
|
||
|
manage these subdevices.
|
||
|
|
||
|
Devices managed via these hubs are:
|
||
|
- Battery/AC devices (Surface Book 3).
|
||
|
- HID input devices (7th-generation and later models with detachable
|
||
|
input devices).
|
||
|
|
||
|
Select M (recommended) or Y here if you want support for the above
|
||
|
mentioned devices on the corresponding Surface models. Without this
|
||
|
module, the respective devices mentioned above will not be instantiated
|
||
|
and thus any functionality provided by them will be missing, even when
|
||
|
drivers for these devices are present. This module only provides the
|
||
|
respective subsystem hubs. Both drivers and device specification (e.g.
|
||
|
via the Surface Aggregator Registry) for these devices still need to be
|
||
|
selected via other options.
|
||
|
|
||
|
config SURFACE_AGGREGATOR_REGISTRY
|
||
|
tristate "Surface System Aggregator Module Device Registry"
|
||
|
depends on SURFACE_AGGREGATOR
|
||
|
depends on SURFACE_AGGREGATOR_BUS
|
||
|
help
|
||
|
Device-registry for Surface System Aggregator Module (SSAM) devices.
|
||
|
|
||
|
Provides a module and driver which act as a device-registry for SSAM
|
||
|
client devices that cannot be detected automatically, e.g. via ACPI.
|
||
|
Such devices are instead provided and managed via this registry.
|
||
|
|
||
|
Devices provided via this registry are:
|
||
|
- Platform profile (performance-/cooling-mode) device (5th- and later
|
||
|
generations).
|
||
|
- Battery/AC devices (7th-generation).
|
||
|
- HID input devices (7th-generation).
|
||
|
|
||
|
Select M (recommended) or Y here if you want support for the above
|
||
|
mentioned devices on the corresponding Surface models. Without this
|
||
|
module, the respective devices will not be instantiated and thus any
|
||
|
functionality provided by them will be missing, even when drivers for
|
||
|
these devices are present. In other words, this module only provides
|
||
|
the respective client devices. Drivers for these devices still need to
|
||
|
be selected via the other options.
|
||
|
|
||
|
config SURFACE_AGGREGATOR_TABLET_SWITCH
|
||
|
tristate "Surface Aggregator Generic Tablet-Mode Switch Driver"
|
||
|
depends on SURFACE_AGGREGATOR
|
||
|
depends on SURFACE_AGGREGATOR_BUS
|
||
|
depends on INPUT
|
||
|
help
|
||
|
Provides a tablet-mode switch input device on Microsoft Surface models
|
||
|
using the KIP subsystem for detachable keyboards (e.g. keyboard covers)
|
||
|
or the POS subsystem for device/screen posture changes.
|
||
|
|
||
|
The KIP subsystem is used on newer Surface generations to handle
|
||
|
detachable input peripherals, specifically the keyboard cover (containing
|
||
|
keyboard and touchpad) on the Surface Pro 8 and Surface Pro X. The POS
|
||
|
subsystem is used for device posture change notifications on the Surface
|
||
|
Laptop Studio. This module provides a driver to let user-space know when
|
||
|
the device should be considered in tablet-mode due to the keyboard cover
|
||
|
being detached or folded back (essentially signaling when the keyboard is
|
||
|
not available for input). It does so by creating a tablet-mode switch
|
||
|
input device, sending the standard SW_TABLET_MODE event on mode change.
|
||
|
|
||
|
Select M or Y here, if you want to provide tablet-mode switch input
|
||
|
events on the Surface Pro 8, Surface Pro X, and Surface Laptop Studio.
|
||
|
|
||
|
config SURFACE_DTX
|
||
|
tristate "Surface DTX (Detachment System) Driver"
|
||
|
depends on SURFACE_AGGREGATOR
|
||
|
depends on INPUT
|
||
|
help
|
||
|
Driver for the Surface Book clipboard detachment system (DTX).
|
||
|
|
||
|
On the Surface Book series devices, the display part containing the
|
||
|
CPU (called the clipboard) can be detached from the base (containing a
|
||
|
battery, the keyboard, and, optionally, a discrete GPU) by (if
|
||
|
necessary) unlocking and opening the latch connecting both parts.
|
||
|
|
||
|
This driver provides a user-space interface that can influence the
|
||
|
behavior of this process, which includes the option to abort it in
|
||
|
case the base is still in use or speed it up in case it is not.
|
||
|
|
||
|
Note that this module can be built without support for the Surface
|
||
|
Aggregator Bus (i.e. CONFIG_SURFACE_AGGREGATOR_BUS=n). In that case,
|
||
|
some devices, specifically the Surface Book 3, will not be supported.
|
||
|
|
||
|
config SURFACE_GPE
|
||
|
tristate "Surface GPE/Lid Support Driver"
|
||
|
depends on ACPI
|
||
|
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_HOTPLUG
|
||
|
tristate "Surface Hot-Plug Driver"
|
||
|
depends on ACPI
|
||
|
depends on GPIOLIB
|
||
|
help
|
||
|
Driver for out-of-band hot-plug event signaling on Microsoft Surface
|
||
|
devices with hot-pluggable PCIe cards.
|
||
|
|
||
|
This driver is used on Surface Book (2 and 3) devices with a
|
||
|
hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those
|
||
|
devices can enter D3cold, which prevents in-band (standard) PCIe
|
||
|
hot-plug signaling. Thus, without this driver, detaching the base
|
||
|
containing the dGPU will not correctly update the state of the
|
||
|
corresponding PCIe device if it is in D3cold. This driver adds support
|
||
|
for out-of-band hot-plug notifications, ensuring that the device state
|
||
|
is properly updated even when the device in question is in D3cold.
|
||
|
|
||
|
Select M or Y here, if you want to (fully) support hot-plugging of
|
||
|
dGPU devices on the Surface Book 2 and/or 3 during D3cold.
|
||
|
|
||
|
config SURFACE_PLATFORM_PROFILE
|
||
|
tristate "Surface Platform Profile Driver"
|
||
|
depends on ACPI
|
||
|
depends on SURFACE_AGGREGATOR_REGISTRY
|
||
|
select ACPI_PLATFORM_PROFILE
|
||
|
help
|
||
|
Provides support for the ACPI platform profile on 5th- and later
|
||
|
generation Microsoft Surface devices.
|
||
|
|
||
|
More specifically, this driver provides ACPI platform profile support
|
||
|
on Microsoft Surface devices with a Surface System Aggregator Module
|
||
|
(SSAM) connected via the Surface Serial Hub (SSH / SAM-over-SSH). In
|
||
|
other words, this driver provides platform profile support on the
|
||
|
Surface Pro 5, Surface Book 2, Surface Laptop, Surface Laptop Go and
|
||
|
later. On those devices, the platform profile can significantly
|
||
|
influence cooling behavior, e.g. setting it to 'quiet' (default) or
|
||
|
'low-power' can significantly limit performance of the discrete GPU on
|
||
|
Surface Books, while in turn leading to lower power consumption and/or
|
||
|
less fan noise.
|
||
|
|
||
|
Select M or Y here, if you want to include ACPI platform profile
|
||
|
support on the above mentioned devices.
|
||
|
|
||
|
config SURFACE_PRO3_BUTTON
|
||
|
tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
|
||
|
depends on ACPI
|
||
|
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
|