xref: /linux/drivers/platform/surface/Kconfig (revision b78b4982d7637ededbc40b5f4aa59394acee8a60)
11e3a2bc8SMaximilian Luz# SPDX-License-Identifier: GPL-2.0-only
21e3a2bc8SMaximilian Luz#
31e3a2bc8SMaximilian Luz# Microsoft Surface Platform-Specific Drivers
41e3a2bc8SMaximilian Luz#
51e3a2bc8SMaximilian Luz
61e3a2bc8SMaximilian Luzmenuconfig SURFACE_PLATFORMS
71e3a2bc8SMaximilian Luz	bool "Microsoft Surface Platform-Specific Device Drivers"
8e4a02c7aSGeert Uytterhoeven	depends on ACPI
91e3a2bc8SMaximilian Luz	default y
101e3a2bc8SMaximilian Luz	help
111e3a2bc8SMaximilian Luz	  Say Y here to get to see options for platform-specific device drivers
121e3a2bc8SMaximilian Luz	  for Microsoft Surface devices. This option alone does not add any
131e3a2bc8SMaximilian Luz	  kernel code.
141e3a2bc8SMaximilian Luz
151e3a2bc8SMaximilian Luz	  If you say N, all options in this submenu will be skipped and disabled.
16f23027caSMaximilian Luz
17f23027caSMaximilian Luzif SURFACE_PLATFORMS
18f23027caSMaximilian Luz
19f23027caSMaximilian Luzconfig SURFACE3_WMI
20f23027caSMaximilian Luz	tristate "Surface 3 WMI Driver"
21f23027caSMaximilian Luz	depends on ACPI_WMI
22f23027caSMaximilian Luz	depends on DMI
23f23027caSMaximilian Luz	depends on INPUT
24f23027caSMaximilian Luz	depends on SPI
25f23027caSMaximilian Luz	help
26f23027caSMaximilian Luz	  Say Y here if you have a Surface 3.
27f23027caSMaximilian Luz
28f23027caSMaximilian Luz	  To compile this driver as a module, choose M here: the module will
29f23027caSMaximilian Luz	  be called surface3-wmi.
30f23027caSMaximilian Luz
314df56c36SMaximilian Luzconfig SURFACE_3_BUTTON
324df56c36SMaximilian Luz	tristate "Power/home/volume buttons driver for Microsoft Surface 3 tablet"
33e4a02c7aSGeert Uytterhoeven	depends on KEYBOARD_GPIO && I2C
344df56c36SMaximilian Luz	help
354df56c36SMaximilian Luz	  This driver handles the power/home/volume buttons on the Microsoft Surface 3 tablet.
364df56c36SMaximilian Luz
3785f7582cSMaximilian Luzconfig SURFACE_3_POWER_OPREGION
3885f7582cSMaximilian Luz	tristate "Surface 3 battery platform operation region support"
39e4a02c7aSGeert Uytterhoeven	depends on I2C
4085f7582cSMaximilian Luz	help
4185f7582cSMaximilian Luz	  This driver provides support for ACPI operation
4285f7582cSMaximilian Luz	  region of the Surface 3 battery platform driver.
4385f7582cSMaximilian Luz
44fc00bc8aSMaximilian Luzconfig SURFACE_ACPI_NOTIFY
45fc00bc8aSMaximilian Luz	tristate "Surface ACPI Notify Driver"
46fc00bc8aSMaximilian Luz	depends on SURFACE_AGGREGATOR
47fc00bc8aSMaximilian Luz	help
48fc00bc8aSMaximilian Luz	  Surface ACPI Notify (SAN) driver for Microsoft Surface devices.
49fc00bc8aSMaximilian Luz
50fc00bc8aSMaximilian Luz	  This driver provides support for the ACPI interface (called SAN) of
51fc00bc8aSMaximilian Luz	  the Surface System Aggregator Module (SSAM) EC. This interface is used
52fc00bc8aSMaximilian Luz	  on 5th- and 6th-generation Microsoft Surface devices (including
53fc00bc8aSMaximilian Luz	  Surface Pro 5 and 6, Surface Book 2, Surface Laptops 1 and 2, and in
54fc00bc8aSMaximilian Luz	  reduced functionality on the Surface Laptop 3) to execute SSAM
55fc00bc8aSMaximilian Luz	  requests directly from ACPI code, as well as receive SSAM events and
56fc00bc8aSMaximilian Luz	  turn them into ACPI notifications. It essentially acts as a
57fc00bc8aSMaximilian Luz	  translation layer between the SSAM controller and ACPI.
58fc00bc8aSMaximilian Luz
59fc00bc8aSMaximilian Luz	  Specifically, this driver may be needed for battery status reporting,
60fc00bc8aSMaximilian Luz	  thermal sensor access, and real-time clock information, depending on
61fc00bc8aSMaximilian Luz	  the Surface device in question.
62fc00bc8aSMaximilian Luz
63178f6ab7SMaximilian Luzconfig SURFACE_AGGREGATOR_CDEV
64178f6ab7SMaximilian Luz	tristate "Surface System Aggregator Module User-Space Interface"
65178f6ab7SMaximilian Luz	depends on SURFACE_AGGREGATOR
66178f6ab7SMaximilian Luz	help
67178f6ab7SMaximilian Luz	  Provides a misc-device interface to the Surface System Aggregator
68178f6ab7SMaximilian Luz	  Module (SSAM) controller.
69178f6ab7SMaximilian Luz
70178f6ab7SMaximilian Luz	  This option provides a module (called surface_aggregator_cdev), that,
71178f6ab7SMaximilian Luz	  when loaded, will add a client device (and its respective driver) to
72178f6ab7SMaximilian Luz	  the SSAM controller. Said client device manages a misc-device
73178f6ab7SMaximilian Luz	  interface (/dev/surface/aggregator), which can be used by user-space
74178f6ab7SMaximilian Luz	  tools to directly communicate with the SSAM EC by sending requests and
75178f6ab7SMaximilian Luz	  receiving the corresponding responses.
76178f6ab7SMaximilian Luz
77178f6ab7SMaximilian Luz	  The provided interface is intended for debugging and development only,
78178f6ab7SMaximilian Luz	  and should not be used otherwise.
79178f6ab7SMaximilian Luz
80fc622b3dSMaximilian Luzconfig SURFACE_AGGREGATOR_REGISTRY
81fc622b3dSMaximilian Luz	tristate "Surface System Aggregator Module Device Registry"
82fc622b3dSMaximilian Luz	depends on SURFACE_AGGREGATOR
83fc622b3dSMaximilian Luz	depends on SURFACE_AGGREGATOR_BUS
84fc622b3dSMaximilian Luz	help
85fc622b3dSMaximilian Luz	  Device-registry and device-hubs for Surface System Aggregator Module
86fc622b3dSMaximilian Luz	  (SSAM) devices.
87fc622b3dSMaximilian Luz
88fc622b3dSMaximilian Luz	  Provides a module and driver which act as a device-registry for SSAM
89fc622b3dSMaximilian Luz	  client devices that cannot be detected automatically, e.g. via ACPI.
90fc622b3dSMaximilian Luz	  Such devices are instead provided via this registry and attached via
91fc622b3dSMaximilian Luz	  device hubs, also provided in this module.
92fc622b3dSMaximilian Luz
93fc622b3dSMaximilian Luz	  Devices provided via this registry are:
94fc622b3dSMaximilian Luz	  - Platform profile (performance-/cooling-mode) device (5th- and later
95fc622b3dSMaximilian Luz	    generations).
96fc622b3dSMaximilian Luz	  - Battery/AC devices (7th-generation).
97fc622b3dSMaximilian Luz	  - HID input devices (7th-generation).
98fc622b3dSMaximilian Luz
99fc622b3dSMaximilian Luz	  Select M (recommended) or Y here if you want support for the above
100fc622b3dSMaximilian Luz	  mentioned devices on the corresponding Surface models. Without this
101fc622b3dSMaximilian Luz	  module, the respective devices will not be instantiated and thus any
102fc622b3dSMaximilian Luz	  functionality provided by them will be missing, even when drivers for
103fc622b3dSMaximilian Luz	  these devices are present. In other words, this module only provides
104fc622b3dSMaximilian Luz	  the respective client devices. Drivers for these devices still need to
105fc622b3dSMaximilian Luz	  be selected via the other options.
106fc622b3dSMaximilian Luz
107274335f1SMaximilian Luzconfig SURFACE_GPE
108274335f1SMaximilian Luz	tristate "Surface GPE/Lid Support Driver"
109274335f1SMaximilian Luz	depends on DMI
110274335f1SMaximilian Luz	help
111274335f1SMaximilian Luz	  This driver marks the GPEs related to the ACPI lid device found on
112274335f1SMaximilian Luz	  Microsoft Surface devices as wakeup sources and prepares them
113274335f1SMaximilian Luz	  accordingly. It is required on those devices to allow wake-ups from
114274335f1SMaximilian Luz	  suspend by opening the lid.
115274335f1SMaximilian Luz
116bd69bcceSMaximilian Luzconfig SURFACE_HOTPLUG
117bd69bcceSMaximilian Luz	tristate "Surface Hot-Plug Driver"
118bd69bcceSMaximilian Luz	depends on GPIOLIB
119bd69bcceSMaximilian Luz	help
120bd69bcceSMaximilian Luz	  Driver for out-of-band hot-plug event signaling on Microsoft Surface
121bd69bcceSMaximilian Luz	  devices with hot-pluggable PCIe cards.
122bd69bcceSMaximilian Luz
123bd69bcceSMaximilian Luz	  This driver is used on Surface Book (2 and 3) devices with a
124bd69bcceSMaximilian Luz	  hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those
125bd69bcceSMaximilian Luz	  devices can enter D3cold, which prevents in-band (standard) PCIe
126bd69bcceSMaximilian Luz	  hot-plug signaling. Thus, without this driver, detaching the base
127bd69bcceSMaximilian Luz	  containing the dGPU will not correctly update the state of the
128bd69bcceSMaximilian Luz	  corresponding PCIe device if it is in D3cold. This driver adds support
129bd69bcceSMaximilian Luz	  for out-of-band hot-plug notifications, ensuring that the device state
130bd69bcceSMaximilian Luz	  is properly updated even when the device in question is in D3cold.
131bd69bcceSMaximilian Luz
132bd69bcceSMaximilian Luz	  Select M or Y here, if you want to (fully) support hot-plugging of
133bd69bcceSMaximilian Luz	  dGPU devices on the Surface Book 2 and/or 3 during D3cold.
134bd69bcceSMaximilian Luz
135*b78b4982SMaximilian Luzconfig SURFACE_PLATFORM_PROFILE
136*b78b4982SMaximilian Luz	tristate "Surface Platform Profile Driver"
137*b78b4982SMaximilian Luz	depends on SURFACE_AGGREGATOR_REGISTRY
138*b78b4982SMaximilian Luz	select ACPI_PLATFORM_PROFILE
139*b78b4982SMaximilian Luz	help
140*b78b4982SMaximilian Luz	  Provides support for the ACPI platform profile on 5th- and later
141*b78b4982SMaximilian Luz	  generation Microsoft Surface devices.
142*b78b4982SMaximilian Luz
143*b78b4982SMaximilian Luz	  More specifically, this driver provides ACPI platform profile support
144*b78b4982SMaximilian Luz	  on Microsoft Surface devices with a Surface System Aggregator Module
145*b78b4982SMaximilian Luz	  (SSAM) connected via the Surface Serial Hub (SSH / SAM-over-SSH). In
146*b78b4982SMaximilian Luz	  other words, this driver provides platform profile support on the
147*b78b4982SMaximilian Luz	  Surface Pro 5, Surface Book 2, Surface Laptop, Surface Laptop Go and
148*b78b4982SMaximilian Luz	  later. On those devices, the platform profile can significantly
149*b78b4982SMaximilian Luz	  influence cooling behavior, e.g. setting it to 'quiet' (default) or
150*b78b4982SMaximilian Luz	  'low-power' can significantly limit performance of the discrete GPU on
151*b78b4982SMaximilian Luz	  Surface Books, while in turn leading to lower power consumption and/or
152*b78b4982SMaximilian Luz	  less fan noise.
153*b78b4982SMaximilian Luz
154*b78b4982SMaximilian Luz	  Select M or Y here, if you want to include ACPI platform profile
155*b78b4982SMaximilian Luz	  support on the above mentioned devices.
156*b78b4982SMaximilian Luz
157411269baSMaximilian Luzconfig SURFACE_PRO3_BUTTON
158411269baSMaximilian Luz	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
159e4a02c7aSGeert Uytterhoeven	depends on INPUT
160411269baSMaximilian Luz	help
161411269baSMaximilian Luz	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
162411269baSMaximilian Luz
163c167b9c7SMaximilian Luzsource "drivers/platform/surface/aggregator/Kconfig"
164c167b9c7SMaximilian Luz
165f23027caSMaximilian Luzendif # SURFACE_PLATFORMS
166