clk: Drop the rate range on clk_put()
[linux-2.6-microblaze.git] / drivers / platform / surface / Kconfig
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.
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
30 config SURFACE_3_BUTTON
31         tristate "Power/home/volume buttons driver for Microsoft Surface 3 tablet"
32         depends on ACPI
33         depends on KEYBOARD_GPIO && I2C
34         help
35           This driver handles the power/home/volume buttons on the Microsoft Surface 3 tablet.
36
37 config SURFACE_3_POWER_OPREGION
38         tristate "Surface 3 battery platform operation region support"
39         depends on ACPI
40         depends on I2C
41         help
42           This driver provides support for ACPI operation
43           region of the Surface 3 battery platform driver.
44
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
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
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
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
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
128 config SURFACE_GPE
129         tristate "Surface GPE/Lid Support Driver"
130         depends on ACPI
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
138 config SURFACE_HOTPLUG
139         tristate "Surface Hot-Plug Driver"
140         depends on ACPI
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
158 config SURFACE_PLATFORM_PROFILE
159         tristate "Surface Platform Profile Driver"
160         depends on ACPI
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
181 config SURFACE_PRO3_BUTTON
182         tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
183         depends on ACPI
184         depends on INPUT
185         help
186           This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
187
188 source "drivers/platform/surface/aggregator/Kconfig"
189
190 endif # SURFACE_PLATFORMS