Maximilian Luz | 1e3a2bc | 2020-10-09 16:11:24 +0200 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | # |
| 3 | # Microsoft Surface Platform-Specific Drivers |
| 4 | # |
| 5 | |
| 6 | menuconfig SURFACE_PLATFORMS |
| 7 | bool "Microsoft Surface Platform-Specific Device Drivers" |
| 8 | default y |
| 9 | help |
| 10 | Say Y here to get to see options for platform-specific device drivers |
| 11 | for Microsoft Surface devices. This option alone does not add any |
| 12 | kernel code. |
| 13 | |
| 14 | If you say N, all options in this submenu will be skipped and disabled. |
Maximilian Luz | f23027c | 2020-10-09 16:11:25 +0200 | [diff] [blame] | 15 | |
| 16 | if SURFACE_PLATFORMS |
| 17 | |
| 18 | config SURFACE3_WMI |
| 19 | tristate "Surface 3 WMI Driver" |
| 20 | depends on ACPI_WMI |
| 21 | depends on DMI |
| 22 | depends on INPUT |
| 23 | depends on SPI |
| 24 | help |
| 25 | Say Y here if you have a Surface 3. |
| 26 | |
| 27 | To compile this driver as a module, choose M here: the module will |
| 28 | be called surface3-wmi. |
| 29 | |
Maximilian Luz | 4df56c3 | 2020-10-09 16:11:26 +0200 | [diff] [blame] | 30 | config SURFACE_3_BUTTON |
| 31 | tristate "Power/home/volume buttons driver for Microsoft Surface 3 tablet" |
Jarrett Schultz | 2724799 | 2021-12-02 11:16:27 -0800 | [diff] [blame] | 32 | depends on ACPI |
Geert Uytterhoeven | e4a02c7 | 2020-12-16 14:37:52 +0100 | [diff] [blame] | 33 | depends on KEYBOARD_GPIO && I2C |
Maximilian Luz | 4df56c3 | 2020-10-09 16:11:26 +0200 | [diff] [blame] | 34 | help |
| 35 | This driver handles the power/home/volume buttons on the Microsoft Surface 3 tablet. |
| 36 | |
Maximilian Luz | 85f7582 | 2020-10-09 16:11:27 +0200 | [diff] [blame] | 37 | config SURFACE_3_POWER_OPREGION |
| 38 | tristate "Surface 3 battery platform operation region support" |
Jarrett Schultz | 2724799 | 2021-12-02 11:16:27 -0800 | [diff] [blame] | 39 | depends on ACPI |
Geert Uytterhoeven | e4a02c7 | 2020-12-16 14:37:52 +0100 | [diff] [blame] | 40 | depends on I2C |
Maximilian Luz | 85f7582 | 2020-10-09 16:11:27 +0200 | [diff] [blame] | 41 | help |
| 42 | This driver provides support for ACPI operation |
| 43 | region of the Surface 3 battery platform driver. |
| 44 | |
Maximilian Luz | fc00bc8 | 2020-12-21 19:39:59 +0100 | [diff] [blame] | 45 | config SURFACE_ACPI_NOTIFY |
| 46 | tristate "Surface ACPI Notify Driver" |
| 47 | depends on SURFACE_AGGREGATOR |
| 48 | help |
| 49 | Surface ACPI Notify (SAN) driver for Microsoft Surface devices. |
| 50 | |
| 51 | This driver provides support for the ACPI interface (called SAN) of |
| 52 | the Surface System Aggregator Module (SSAM) EC. This interface is used |
| 53 | on 5th- and 6th-generation Microsoft Surface devices (including |
| 54 | Surface Pro 5 and 6, Surface Book 2, Surface Laptops 1 and 2, and in |
| 55 | reduced functionality on the Surface Laptop 3) to execute SSAM |
| 56 | requests directly from ACPI code, as well as receive SSAM events and |
| 57 | turn them into ACPI notifications. It essentially acts as a |
| 58 | translation layer between the SSAM controller and ACPI. |
| 59 | |
| 60 | Specifically, this driver may be needed for battery status reporting, |
| 61 | thermal sensor access, and real-time clock information, depending on |
| 62 | the Surface device in question. |
| 63 | |
Maximilian Luz | 178f6ab | 2020-12-21 19:39:58 +0100 | [diff] [blame] | 64 | config SURFACE_AGGREGATOR_CDEV |
| 65 | tristate "Surface System Aggregator Module User-Space Interface" |
| 66 | depends on SURFACE_AGGREGATOR |
| 67 | help |
| 68 | Provides a misc-device interface to the Surface System Aggregator |
| 69 | Module (SSAM) controller. |
| 70 | |
| 71 | This option provides a module (called surface_aggregator_cdev), that, |
| 72 | when loaded, will add a client device (and its respective driver) to |
| 73 | the SSAM controller. Said client device manages a misc-device |
| 74 | interface (/dev/surface/aggregator), which can be used by user-space |
| 75 | tools to directly communicate with the SSAM EC by sending requests and |
| 76 | receiving the corresponding responses. |
| 77 | |
| 78 | The provided interface is intended for debugging and development only, |
| 79 | and should not be used otherwise. |
| 80 | |
Maximilian Luz | fc622b3 | 2021-02-12 12:54:34 +0100 | [diff] [blame] | 81 | config SURFACE_AGGREGATOR_REGISTRY |
| 82 | tristate "Surface System Aggregator Module Device Registry" |
| 83 | depends on SURFACE_AGGREGATOR |
| 84 | depends on SURFACE_AGGREGATOR_BUS |
| 85 | help |
| 86 | Device-registry and device-hubs for Surface System Aggregator Module |
| 87 | (SSAM) devices. |
| 88 | |
| 89 | Provides a module and driver which act as a device-registry for SSAM |
| 90 | client devices that cannot be detected automatically, e.g. via ACPI. |
| 91 | Such devices are instead provided via this registry and attached via |
| 92 | device hubs, also provided in this module. |
| 93 | |
| 94 | Devices provided via this registry are: |
| 95 | - Platform profile (performance-/cooling-mode) device (5th- and later |
| 96 | generations). |
| 97 | - Battery/AC devices (7th-generation). |
| 98 | - HID input devices (7th-generation). |
| 99 | |
| 100 | Select M (recommended) or Y here if you want support for the above |
| 101 | mentioned devices on the corresponding Surface models. Without this |
| 102 | module, the respective devices will not be instantiated and thus any |
| 103 | functionality provided by them will be missing, even when drivers for |
| 104 | these devices are present. In other words, this module only provides |
| 105 | the respective client devices. Drivers for these devices still need to |
| 106 | be selected via the other options. |
| 107 | |
Maximilian Luz | 1d60999 | 2021-03-08 19:48:17 +0100 | [diff] [blame] | 108 | config SURFACE_DTX |
| 109 | tristate "Surface DTX (Detachment System) Driver" |
| 110 | depends on SURFACE_AGGREGATOR |
| 111 | depends on INPUT |
| 112 | help |
| 113 | Driver for the Surface Book clipboard detachment system (DTX). |
| 114 | |
| 115 | On the Surface Book series devices, the display part containing the |
| 116 | CPU (called the clipboard) can be detached from the base (containing a |
| 117 | battery, the keyboard, and, optionally, a discrete GPU) by (if |
| 118 | necessary) unlocking and opening the latch connecting both parts. |
| 119 | |
| 120 | This driver provides a user-space interface that can influence the |
| 121 | behavior of this process, which includes the option to abort it in |
| 122 | case the base is still in use or speed it up in case it is not. |
| 123 | |
Maximilian Luz | e893d45 | 2021-03-08 19:48:18 +0100 | [diff] [blame] | 124 | Note that this module can be built without support for the Surface |
| 125 | Aggregator Bus (i.e. CONFIG_SURFACE_AGGREGATOR_BUS=n). In that case, |
| 126 | some devices, specifically the Surface Book 3, will not be supported. |
| 127 | |
Maximilian Luz | 274335f | 2020-10-28 11:54:27 +0100 | [diff] [blame] | 128 | config SURFACE_GPE |
| 129 | tristate "Surface GPE/Lid Support Driver" |
Jarrett Schultz | 2724799 | 2021-12-02 11:16:27 -0800 | [diff] [blame] | 130 | depends on ACPI |
Maximilian Luz | 274335f | 2020-10-28 11:54:27 +0100 | [diff] [blame] | 131 | depends on DMI |
| 132 | help |
| 133 | This driver marks the GPEs related to the ACPI lid device found on |
| 134 | Microsoft Surface devices as wakeup sources and prepares them |
| 135 | accordingly. It is required on those devices to allow wake-ups from |
| 136 | suspend by opening the lid. |
| 137 | |
Maximilian Luz | bd69bcc | 2021-02-05 02:26:57 +0100 | [diff] [blame] | 138 | config SURFACE_HOTPLUG |
| 139 | tristate "Surface Hot-Plug Driver" |
Jarrett Schultz | 2724799 | 2021-12-02 11:16:27 -0800 | [diff] [blame] | 140 | depends on ACPI |
Maximilian Luz | bd69bcc | 2021-02-05 02:26:57 +0100 | [diff] [blame] | 141 | depends on GPIOLIB |
| 142 | help |
| 143 | Driver for out-of-band hot-plug event signaling on Microsoft Surface |
| 144 | devices with hot-pluggable PCIe cards. |
| 145 | |
| 146 | This driver is used on Surface Book (2 and 3) devices with a |
| 147 | hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those |
| 148 | devices can enter D3cold, which prevents in-band (standard) PCIe |
| 149 | hot-plug signaling. Thus, without this driver, detaching the base |
| 150 | containing the dGPU will not correctly update the state of the |
| 151 | corresponding PCIe device if it is in D3cold. This driver adds support |
| 152 | for out-of-band hot-plug notifications, ensuring that the device state |
| 153 | is properly updated even when the device in question is in D3cold. |
| 154 | |
| 155 | Select M or Y here, if you want to (fully) support hot-plugging of |
| 156 | dGPU devices on the Surface Book 2 and/or 3 during D3cold. |
| 157 | |
Maximilian Luz | b78b498 | 2021-02-11 21:17:03 +0100 | [diff] [blame] | 158 | config SURFACE_PLATFORM_PROFILE |
| 159 | tristate "Surface Platform Profile Driver" |
Jarrett Schultz | 2724799 | 2021-12-02 11:16:27 -0800 | [diff] [blame] | 160 | depends on ACPI |
Maximilian Luz | b78b498 | 2021-02-11 21:17:03 +0100 | [diff] [blame] | 161 | depends on SURFACE_AGGREGATOR_REGISTRY |
| 162 | select ACPI_PLATFORM_PROFILE |
| 163 | help |
| 164 | Provides support for the ACPI platform profile on 5th- and later |
| 165 | generation Microsoft Surface devices. |
| 166 | |
| 167 | More specifically, this driver provides ACPI platform profile support |
| 168 | on Microsoft Surface devices with a Surface System Aggregator Module |
| 169 | (SSAM) connected via the Surface Serial Hub (SSH / SAM-over-SSH). In |
| 170 | other words, this driver provides platform profile support on the |
| 171 | Surface Pro 5, Surface Book 2, Surface Laptop, Surface Laptop Go and |
| 172 | later. On those devices, the platform profile can significantly |
| 173 | influence cooling behavior, e.g. setting it to 'quiet' (default) or |
| 174 | 'low-power' can significantly limit performance of the discrete GPU on |
| 175 | Surface Books, while in turn leading to lower power consumption and/or |
| 176 | less fan noise. |
| 177 | |
| 178 | Select M or Y here, if you want to include ACPI platform profile |
| 179 | support on the above mentioned devices. |
| 180 | |
Maximilian Luz | 411269b | 2020-10-09 16:11:28 +0200 | [diff] [blame] | 181 | config SURFACE_PRO3_BUTTON |
| 182 | tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet" |
Jarrett Schultz | 2724799 | 2021-12-02 11:16:27 -0800 | [diff] [blame] | 183 | depends on ACPI |
Geert Uytterhoeven | e4a02c7 | 2020-12-16 14:37:52 +0100 | [diff] [blame] | 184 | depends on INPUT |
Maximilian Luz | 411269b | 2020-10-09 16:11:28 +0200 | [diff] [blame] | 185 | help |
| 186 | This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet. |
| 187 | |
Maximilian Luz | c167b9c | 2020-12-21 19:39:51 +0100 | [diff] [blame] | 188 | source "drivers/platform/surface/aggregator/Kconfig" |
| 189 | |
Maximilian Luz | f23027c | 2020-10-09 16:11:25 +0200 | [diff] [blame] | 190 | endif # SURFACE_PLATFORMS |