123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- # SPDX-License-Identifier: GPL-2.0-only
- #
- # Microsoft Surface Platform-Specific Drivers
- #
- menuconfig SURFACE_PLATFORMS
- bool "Microsoft Surface Platform-Specific Device Drivers"
- depends on ARM64 || X86 || COMPILE_TEST
- default y
- help
- Say Y here to get to see options for platform-specific device drivers
- for Microsoft Surface devices. This option alone does not add any
- kernel code.
- If you say N, all options in this submenu will be skipped and disabled.
- if SURFACE_PLATFORMS
- config SURFACE3_WMI
- tristate "Surface 3 WMI Driver"
- depends on ACPI_WMI
- depends on DMI
- depends on INPUT
- depends on SPI
- help
- Say Y here if you have a Surface 3.
- To compile this driver as a module, choose M here: the module will
- be called surface3-wmi.
- config SURFACE_3_POWER_OPREGION
- tristate "Surface 3 battery platform operation region support"
- depends on ACPI
- depends on I2C
- help
- This driver provides support for ACPI operation
- region of the Surface 3 battery platform driver.
- config SURFACE_ACPI_NOTIFY
- tristate "Surface ACPI Notify Driver"
- depends on SURFACE_AGGREGATOR
- help
- Surface ACPI Notify (SAN) driver for Microsoft Surface devices.
- This driver provides support for the ACPI interface (called SAN) of
- the Surface System Aggregator Module (SSAM) EC. This interface is used
- on 5th- and 6th-generation Microsoft Surface devices (including
- Surface Pro 5 and 6, Surface Book 2, Surface Laptops 1 and 2, and in
- reduced functionality on the Surface Laptop 3) to execute SSAM
- requests directly from ACPI code, as well as receive SSAM events and
- turn them into ACPI notifications. It essentially acts as a
- translation layer between the SSAM controller and ACPI.
- Specifically, this driver may be needed for battery status reporting,
- thermal sensor access, and real-time clock information, depending on
- the Surface device in question.
- config SURFACE_AGGREGATOR_CDEV
- tristate "Surface System Aggregator Module User-Space Interface"
- depends on SURFACE_AGGREGATOR
- help
- Provides a misc-device interface to the Surface System Aggregator
- Module (SSAM) controller.
- This option provides a module (called surface_aggregator_cdev), that,
- when loaded, will add a client device (and its respective driver) to
- the SSAM controller. Said client device manages a misc-device
- interface (/dev/surface/aggregator), which can be used by user-space
- tools to directly communicate with the SSAM EC by sending requests and
- receiving the corresponding responses.
- The provided interface is intended for debugging and development only,
- and should not be used otherwise.
- config SURFACE_AGGREGATOR_HUB
- tristate "Surface System Aggregator Module Subsystem Device Hubs"
- depends on SURFACE_AGGREGATOR
- depends on SURFACE_AGGREGATOR_BUS
- help
- Device-hub drivers for Surface System Aggregator Module (SSAM) subsystem
- devices.
- Provides subsystem hub drivers which manage client devices on various
- SSAM subsystems. In some subsystems, notably the BAS subsystem managing
- devices contained in the base of the Surface Book 3 and the KIP subsystem
- managing type-cover devices in the Surface Pro 8 and Surface Pro X,
- devices can be (hot-)removed. Hub devices and drivers are required to
- manage these subdevices.
- Devices managed via these hubs are:
- - Battery/AC devices (Surface Book 3).
- - HID input devices (7th-generation and later models with detachable
- input devices).
- Select M (recommended) or Y here if you want support for the above
- mentioned devices on the corresponding Surface models. Without this
- module, the respective devices mentioned above will not be instantiated
- and thus any functionality provided by them will be missing, even when
- drivers for these devices are present. This module only provides the
- respective subsystem hubs. Both drivers and device specification (e.g.
- via the Surface Aggregator Registry) for these devices still need to be
- selected via other options.
- config SURFACE_AGGREGATOR_REGISTRY
- tristate "Surface System Aggregator Module Device Registry"
- depends on SURFACE_AGGREGATOR
- depends on SURFACE_AGGREGATOR_BUS
- help
- Device-registry for Surface System Aggregator Module (SSAM) devices.
- Provides a module and driver which act as a device-registry for SSAM
- client devices that cannot be detected automatically, e.g. via ACPI.
- Such devices are instead provided and managed via this registry.
- Devices provided via this registry are:
- - Platform profile (performance-/cooling-mode) device (5th- and later
- generations).
- - Battery/AC devices (7th-generation).
- - HID input devices (7th-generation).
- Select M (recommended) or Y here if you want support for the above
- mentioned devices on the corresponding Surface models. Without this
- module, the respective devices will not be instantiated and thus any
- functionality provided by them will be missing, even when drivers for
- these devices are present. In other words, this module only provides
- the respective client devices. Drivers for these devices still need to
- be selected via the other options.
- config SURFACE_AGGREGATOR_TABLET_SWITCH
- tristate "Surface Aggregator Generic Tablet-Mode Switch Driver"
- depends on SURFACE_AGGREGATOR
- depends on SURFACE_AGGREGATOR_BUS
- depends on INPUT
- help
- Provides a tablet-mode switch input device on Microsoft Surface models
- using the KIP subsystem for detachable keyboards (e.g. keyboard covers)
- or the POS subsystem for device/screen posture changes.
- The KIP subsystem is used on newer Surface generations to handle
- detachable input peripherals, specifically the keyboard cover (containing
- keyboard and touchpad) on the Surface Pro 8 and Surface Pro X. The POS
- subsystem is used for device posture change notifications on the Surface
- Laptop Studio. This module provides a driver to let user-space know when
- the device should be considered in tablet-mode due to the keyboard cover
- being detached or folded back (essentially signaling when the keyboard is
- not available for input). It does so by creating a tablet-mode switch
- input device, sending the standard SW_TABLET_MODE event on mode change.
- Select M or Y here, if you want to provide tablet-mode switch input
- events on the Surface Pro 8, Surface Pro X, and Surface Laptop Studio.
- config SURFACE_DTX
- tristate "Surface DTX (Detachment System) Driver"
- depends on SURFACE_AGGREGATOR
- depends on INPUT
- help
- Driver for the Surface Book clipboard detachment system (DTX).
- On the Surface Book series devices, the display part containing the
- CPU (called the clipboard) can be detached from the base (containing a
- battery, the keyboard, and, optionally, a discrete GPU) by (if
- necessary) unlocking and opening the latch connecting both parts.
- This driver provides a user-space interface that can influence the
- behavior of this process, which includes the option to abort it in
- case the base is still in use or speed it up in case it is not.
- Note that this module can be built without support for the Surface
- Aggregator Bus (i.e. CONFIG_SURFACE_AGGREGATOR_BUS=n). In that case,
- some devices, specifically the Surface Book 3, will not be supported.
- config SURFACE_GPE
- tristate "Surface GPE/Lid Support Driver"
- depends on ACPI
- depends on DMI
- help
- This driver marks the GPEs related to the ACPI lid device found on
- Microsoft Surface devices as wakeup sources and prepares them
- accordingly. It is required on those devices to allow wake-ups from
- suspend by opening the lid.
- config SURFACE_HOTPLUG
- tristate "Surface Hot-Plug Driver"
- depends on ACPI
- depends on GPIOLIB
- help
- Driver for out-of-band hot-plug event signaling on Microsoft Surface
- devices with hot-pluggable PCIe cards.
- This driver is used on Surface Book (2 and 3) devices with a
- hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those
- devices can enter D3cold, which prevents in-band (standard) PCIe
- hot-plug signaling. Thus, without this driver, detaching the base
- containing the dGPU will not correctly update the state of the
- corresponding PCIe device if it is in D3cold. This driver adds support
- for out-of-band hot-plug notifications, ensuring that the device state
- is properly updated even when the device in question is in D3cold.
- Select M or Y here, if you want to (fully) support hot-plugging of
- dGPU devices on the Surface Book 2 and/or 3 during D3cold.
- config SURFACE_PLATFORM_PROFILE
- tristate "Surface Platform Profile Driver"
- depends on ACPI
- depends on SURFACE_AGGREGATOR_REGISTRY
- select ACPI_PLATFORM_PROFILE
- help
- Provides support for the ACPI platform profile on 5th- and later
- generation Microsoft Surface devices.
- More specifically, this driver provides ACPI platform profile support
- on Microsoft Surface devices with a Surface System Aggregator Module
- (SSAM) connected via the Surface Serial Hub (SSH / SAM-over-SSH). In
- other words, this driver provides platform profile support on the
- Surface Pro 5, Surface Book 2, Surface Laptop, Surface Laptop Go and
- later. On those devices, the platform profile can significantly
- influence cooling behavior, e.g. setting it to 'quiet' (default) or
- 'low-power' can significantly limit performance of the discrete GPU on
- Surface Books, while in turn leading to lower power consumption and/or
- less fan noise.
- Select M or Y here, if you want to include ACPI platform profile
- support on the above mentioned devices.
- config SURFACE_PRO3_BUTTON
- tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
- depends on ACPI
- depends on INPUT
- help
- This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
- source "drivers/platform/surface/aggregator/Kconfig"
- endif # SURFACE_PLATFORMS
|