1 # SPDX-License-Identifier: GPL-2.0-only
3 # Microsoft Surface Platform-Specific Drivers
6 menuconfig SURFACE_PLATFORMS
7 bool "Microsoft Surface Platform-Specific Device Drivers"
8 depends on ARM64 || X86 || COMPILE_TEST
11 Say Y here to get to see options for platform-specific device drivers
12 for Microsoft Surface devices. This option alone does not add any
15 If you say N, all options in this submenu will be skipped and disabled.
20 tristate "Surface 3 WMI Driver"
26 Say Y here if you have a Surface 3.
28 To compile this driver as a module, choose M here: the module will
29 be called surface3-wmi.
31 config SURFACE_3_POWER_OPREGION
32 tristate "Surface 3 battery platform operation region support"
36 This driver provides support for ACPI operation
37 region of the Surface 3 battery platform driver.
39 config SURFACE_ACPI_NOTIFY
40 tristate "Surface ACPI Notify Driver"
41 depends on SURFACE_AGGREGATOR
43 Surface ACPI Notify (SAN) driver for Microsoft Surface devices.
45 This driver provides support for the ACPI interface (called SAN) of
46 the Surface System Aggregator Module (SSAM) EC. This interface is used
47 on 5th- and 6th-generation Microsoft Surface devices (including
48 Surface Pro 5 and 6, Surface Book 2, Surface Laptops 1 and 2, and in
49 reduced functionality on the Surface Laptop 3) to execute SSAM
50 requests directly from ACPI code, as well as receive SSAM events and
51 turn them into ACPI notifications. It essentially acts as a
52 translation layer between the SSAM controller and ACPI.
54 Specifically, this driver may be needed for battery status reporting,
55 thermal sensor access, and real-time clock information, depending on
56 the Surface device in question.
58 config SURFACE_AGGREGATOR_CDEV
59 tristate "Surface System Aggregator Module User-Space Interface"
60 depends on SURFACE_AGGREGATOR
62 Provides a misc-device interface to the Surface System Aggregator
63 Module (SSAM) controller.
65 This option provides a module (called surface_aggregator_cdev), that,
66 when loaded, will add a client device (and its respective driver) to
67 the SSAM controller. Said client device manages a misc-device
68 interface (/dev/surface/aggregator), which can be used by user-space
69 tools to directly communicate with the SSAM EC by sending requests and
70 receiving the corresponding responses.
72 The provided interface is intended for debugging and development only,
73 and should not be used otherwise.
75 config SURFACE_AGGREGATOR_REGISTRY
76 tristate "Surface System Aggregator Module Device Registry"
77 depends on SURFACE_AGGREGATOR
78 depends on SURFACE_AGGREGATOR_BUS
80 Device-registry and device-hubs for Surface System Aggregator Module
83 Provides a module and driver which act as a device-registry for SSAM
84 client devices that cannot be detected automatically, e.g. via ACPI.
85 Such devices are instead provided via this registry and attached via
86 device hubs, also provided in this module.
88 Devices provided via this registry are:
89 - Platform profile (performance-/cooling-mode) device (5th- and later
91 - Battery/AC devices (7th-generation).
92 - HID input devices (7th-generation).
94 Select M (recommended) or Y here if you want support for the above
95 mentioned devices on the corresponding Surface models. Without this
96 module, the respective devices will not be instantiated and thus any
97 functionality provided by them will be missing, even when drivers for
98 these devices are present. In other words, this module only provides
99 the respective client devices. Drivers for these devices still need to
100 be selected via the other options.
103 tristate "Surface DTX (Detachment System) Driver"
104 depends on SURFACE_AGGREGATOR
107 Driver for the Surface Book clipboard detachment system (DTX).
109 On the Surface Book series devices, the display part containing the
110 CPU (called the clipboard) can be detached from the base (containing a
111 battery, the keyboard, and, optionally, a discrete GPU) by (if
112 necessary) unlocking and opening the latch connecting both parts.
114 This driver provides a user-space interface that can influence the
115 behavior of this process, which includes the option to abort it in
116 case the base is still in use or speed it up in case it is not.
118 Note that this module can be built without support for the Surface
119 Aggregator Bus (i.e. CONFIG_SURFACE_AGGREGATOR_BUS=n). In that case,
120 some devices, specifically the Surface Book 3, will not be supported.
123 tristate "Surface GPE/Lid Support Driver"
127 This driver marks the GPEs related to the ACPI lid device found on
128 Microsoft Surface devices as wakeup sources and prepares them
129 accordingly. It is required on those devices to allow wake-ups from
130 suspend by opening the lid.
132 config SURFACE_HOTPLUG
133 tristate "Surface Hot-Plug Driver"
137 Driver for out-of-band hot-plug event signaling on Microsoft Surface
138 devices with hot-pluggable PCIe cards.
140 This driver is used on Surface Book (2 and 3) devices with a
141 hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those
142 devices can enter D3cold, which prevents in-band (standard) PCIe
143 hot-plug signaling. Thus, without this driver, detaching the base
144 containing the dGPU will not correctly update the state of the
145 corresponding PCIe device if it is in D3cold. This driver adds support
146 for out-of-band hot-plug notifications, ensuring that the device state
147 is properly updated even when the device in question is in D3cold.
149 Select M or Y here, if you want to (fully) support hot-plugging of
150 dGPU devices on the Surface Book 2 and/or 3 during D3cold.
152 config SURFACE_PLATFORM_PROFILE
153 tristate "Surface Platform Profile Driver"
155 depends on SURFACE_AGGREGATOR_REGISTRY
156 select ACPI_PLATFORM_PROFILE
158 Provides support for the ACPI platform profile on 5th- and later
159 generation Microsoft Surface devices.
161 More specifically, this driver provides ACPI platform profile support
162 on Microsoft Surface devices with a Surface System Aggregator Module
163 (SSAM) connected via the Surface Serial Hub (SSH / SAM-over-SSH). In
164 other words, this driver provides platform profile support on the
165 Surface Pro 5, Surface Book 2, Surface Laptop, Surface Laptop Go and
166 later. On those devices, the platform profile can significantly
167 influence cooling behavior, e.g. setting it to 'quiet' (default) or
168 'low-power' can significantly limit performance of the discrete GPU on
169 Surface Books, while in turn leading to lower power consumption and/or
172 Select M or Y here, if you want to include ACPI platform profile
173 support on the above mentioned devices.
175 config SURFACE_PRO3_BUTTON
176 tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
180 This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
182 source "drivers/platform/surface/aggregator/Kconfig"
184 endif # SURFACE_PLATFORMS