brintos

brintos / linux-shallow public Read only

0
0
Text · 9.7 KiB · b629e82 Raw
235 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2#3# Microsoft Surface Platform-Specific Drivers4#5 6menuconfig SURFACE_PLATFORMS7	bool "Microsoft Surface Platform-Specific Device Drivers"8	depends on ARM64 || X86 || COMPILE_TEST9	default y10	help11	  Say Y here to get to see options for platform-specific device drivers12	  for Microsoft Surface devices. This option alone does not add any13	  kernel code.14 15	  If you say N, all options in this submenu will be skipped and disabled.16 17if SURFACE_PLATFORMS18 19config SURFACE3_WMI20	tristate "Surface 3 WMI Driver"21	depends on ACPI_WMI22	depends on DMI23	depends on INPUT24	depends on SPI25	help26	  Say Y here if you have a Surface 3.27 28	  To compile this driver as a module, choose M here: the module will29	  be called surface3-wmi.30 31config SURFACE_3_POWER_OPREGION32	tristate "Surface 3 battery platform operation region support"33	depends on ACPI34	depends on I2C35	help36	  This driver provides support for ACPI operation37	  region of the Surface 3 battery platform driver.38 39config SURFACE_ACPI_NOTIFY40	tristate "Surface ACPI Notify Driver"41	depends on SURFACE_AGGREGATOR42	help43	  Surface ACPI Notify (SAN) driver for Microsoft Surface devices.44 45	  This driver provides support for the ACPI interface (called SAN) of46	  the Surface System Aggregator Module (SSAM) EC. This interface is used47	  on 5th- and 6th-generation Microsoft Surface devices (including48	  Surface Pro 5 and 6, Surface Book 2, Surface Laptops 1 and 2, and in49	  reduced functionality on the Surface Laptop 3) to execute SSAM50	  requests directly from ACPI code, as well as receive SSAM events and51	  turn them into ACPI notifications. It essentially acts as a52	  translation layer between the SSAM controller and ACPI.53 54	  Specifically, this driver may be needed for battery status reporting,55	  thermal sensor access, and real-time clock information, depending on56	  the Surface device in question.57 58config SURFACE_AGGREGATOR_CDEV59	tristate "Surface System Aggregator Module User-Space Interface"60	depends on SURFACE_AGGREGATOR61	help62	  Provides a misc-device interface to the Surface System Aggregator63	  Module (SSAM) controller.64 65	  This option provides a module (called surface_aggregator_cdev), that,66	  when loaded, will add a client device (and its respective driver) to67	  the SSAM controller. Said client device manages a misc-device68	  interface (/dev/surface/aggregator), which can be used by user-space69	  tools to directly communicate with the SSAM EC by sending requests and70	  receiving the corresponding responses.71 72	  The provided interface is intended for debugging and development only,73	  and should not be used otherwise.74 75config SURFACE_AGGREGATOR_HUB76	tristate "Surface System Aggregator Module Subsystem Device Hubs"77	depends on SURFACE_AGGREGATOR78	depends on SURFACE_AGGREGATOR_BUS79	help80	  Device-hub drivers for Surface System Aggregator Module (SSAM) subsystem81	  devices.82 83	  Provides subsystem hub drivers which manage client devices on various84	  SSAM subsystems. In some subsystems, notably the BAS subsystem managing85	  devices contained in the base of the Surface Book 3 and the KIP subsystem86	  managing type-cover devices in the Surface Pro 8 and Surface Pro X,87	  devices can be (hot-)removed. Hub devices and drivers are required to88	  manage these subdevices.89 90	  Devices managed via these hubs are:91	  - Battery/AC devices (Surface Book 3).92	  - HID input devices (7th-generation and later models with detachable93	    input devices).94 95	  Select M (recommended) or Y here if you want support for the above96	  mentioned devices on the corresponding Surface models. Without this97	  module, the respective devices mentioned above will not be instantiated98	  and thus any functionality provided by them will be missing, even when99	  drivers for these devices are present. This module only provides the100	  respective subsystem hubs. Both drivers and device specification (e.g.101	  via the Surface Aggregator Registry) for these devices still need to be102	  selected via other options.103 104config SURFACE_AGGREGATOR_REGISTRY105	tristate "Surface System Aggregator Module Device Registry"106	depends on SURFACE_AGGREGATOR107	depends on SURFACE_AGGREGATOR_BUS108	help109	  Device-registry for Surface System Aggregator Module (SSAM) devices.110 111	  Provides a module and driver which act as a device-registry for SSAM112	  client devices that cannot be detected automatically, e.g. via ACPI.113	  Such devices are instead provided and managed via this registry.114 115	  Devices provided via this registry are:116	  - Platform profile (performance-/cooling-mode) device (5th- and later117	    generations).118	  - Battery/AC devices (7th-generation).119	  - HID input devices (7th-generation).120 121	  Select M (recommended) or Y here if you want support for the above122	  mentioned devices on the corresponding Surface models. Without this123	  module, the respective devices will not be instantiated and thus any124	  functionality provided by them will be missing, even when drivers for125	  these devices are present. In other words, this module only provides126	  the respective client devices. Drivers for these devices still need to127	  be selected via the other options.128 129config SURFACE_AGGREGATOR_TABLET_SWITCH130	tristate "Surface Aggregator Generic Tablet-Mode Switch Driver"131	depends on SURFACE_AGGREGATOR132	depends on SURFACE_AGGREGATOR_BUS133	depends on INPUT134	help135	  Provides a tablet-mode switch input device on Microsoft Surface models136	  using the KIP subsystem for detachable keyboards (e.g. keyboard covers)137	  or the POS subsystem for device/screen posture changes.138 139	  The KIP subsystem is used on newer Surface generations to handle140	  detachable input peripherals, specifically the keyboard cover (containing141	  keyboard and touchpad) on the Surface Pro 8 and Surface Pro X. The POS142	  subsystem is used for device posture change notifications on the Surface143	  Laptop Studio. This module provides a driver to let user-space know when144	  the device should be considered in tablet-mode due to the keyboard cover145	  being detached or folded back (essentially signaling when the keyboard is146	  not available for input). It does so by creating a tablet-mode switch147	  input device, sending the standard SW_TABLET_MODE event on mode change.148 149	  Select M or Y here, if you want to provide tablet-mode switch input150	  events on the Surface Pro 8, Surface Pro X, and Surface Laptop Studio.151 152config SURFACE_DTX153	tristate "Surface DTX (Detachment System) Driver"154	depends on SURFACE_AGGREGATOR155	depends on INPUT156	help157	  Driver for the Surface Book clipboard detachment system (DTX).158 159	  On the Surface Book series devices, the display part containing the160	  CPU (called the clipboard) can be detached from the base (containing a161	  battery, the keyboard, and, optionally, a discrete GPU) by (if162	  necessary) unlocking and opening the latch connecting both parts.163 164	  This driver provides a user-space interface that can influence the165	  behavior of this process, which includes the option to abort it in166	  case the base is still in use or speed it up in case it is not.167 168	  Note that this module can be built without support for the Surface169	  Aggregator Bus (i.e. CONFIG_SURFACE_AGGREGATOR_BUS=n). In that case,170	  some devices, specifically the Surface Book 3, will not be supported.171 172config SURFACE_GPE173	tristate "Surface GPE/Lid Support Driver"174	depends on ACPI175	depends on DMI176	help177	  This driver marks the GPEs related to the ACPI lid device found on178	  Microsoft Surface devices as wakeup sources and prepares them179	  accordingly. It is required on those devices to allow wake-ups from180	  suspend by opening the lid.181 182config SURFACE_HOTPLUG183	tristate "Surface Hot-Plug Driver"184	depends on ACPI185	depends on GPIOLIB186	help187	  Driver for out-of-band hot-plug event signaling on Microsoft Surface188	  devices with hot-pluggable PCIe cards.189 190	  This driver is used on Surface Book (2 and 3) devices with a191	  hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those192	  devices can enter D3cold, which prevents in-band (standard) PCIe193	  hot-plug signaling. Thus, without this driver, detaching the base194	  containing the dGPU will not correctly update the state of the195	  corresponding PCIe device if it is in D3cold. This driver adds support196	  for out-of-band hot-plug notifications, ensuring that the device state197	  is properly updated even when the device in question is in D3cold.198 199	  Select M or Y here, if you want to (fully) support hot-plugging of200	  dGPU devices on the Surface Book 2 and/or 3 during D3cold.201 202config SURFACE_PLATFORM_PROFILE203	tristate "Surface Platform Profile Driver"204	depends on ACPI205	depends on SURFACE_AGGREGATOR_REGISTRY206	select ACPI_PLATFORM_PROFILE207	help208	  Provides support for the ACPI platform profile on 5th- and later209	  generation Microsoft Surface devices.210 211	  More specifically, this driver provides ACPI platform profile support212	  on Microsoft Surface devices with a Surface System Aggregator Module213	  (SSAM) connected via the Surface Serial Hub (SSH / SAM-over-SSH). In214	  other words, this driver provides platform profile support on the215	  Surface Pro 5, Surface Book 2, Surface Laptop, Surface Laptop Go and216	  later. On those devices, the platform profile can significantly217	  influence cooling behavior, e.g. setting it to 'quiet' (default) or218	  'low-power' can significantly limit performance of the discrete GPU on219	  Surface Books, while in turn leading to lower power consumption and/or220	  less fan noise.221 222	  Select M or Y here, if you want to include ACPI platform profile223	  support on the above mentioned devices.224 225config SURFACE_PRO3_BUTTON226	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"227	depends on ACPI228	depends on INPUT229	help230	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.231 232source "drivers/platform/surface/aggregator/Kconfig"233 234endif # SURFACE_PLATFORMS235