| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # SPDX-License-Identifier: GPL-2.0+
- # Copyright (C) 2019-2022 Maximilian Luz <luzmaximilian@gmail.com>
- menuconfig SURFACE_AGGREGATOR
- tristate "Microsoft Surface System Aggregator Module Subsystem and Drivers"
- depends on SERIAL_DEV_BUS
- depends on ACPI && !RISCV
- select CRC_ITU_T
- help
- The Surface System Aggregator Module (Surface SAM or SSAM) is an
- embedded controller (EC) found on 5th- and later-generation Microsoft
- Surface devices (i.e. Surface Pro 5, Surface Book 2, Surface Laptop,
- and newer, with exception of Surface Go series devices).
- Depending on the device in question, this EC provides varying
- functionality, including:
- - EC access from ACPI via Surface ACPI Notify (5th- and 6th-generation)
- - battery status information (all devices)
- - thermal sensor access (all devices)
- - performance mode / cooling mode control (all devices)
- - clipboard detachment system control (Surface Book 2 and 3)
- - HID / keyboard input (Surface Laptops, Surface Book 3)
- This option controls whether the Surface SAM subsystem core will be
- built. This includes a driver for the Surface Serial Hub (SSH), which
- is the device responsible for the communication with the EC, and a
- basic kernel interface exposing the EC functionality to other client
- drivers, i.e. allowing them to make requests to the EC and receive
- events from it. Selecting this option alone will not provide any
- client drivers and therefore no functionality beyond the in-kernel
- interface. Said functionality is the responsibility of the respective
- client drivers.
- Note: While 4th-generation Surface devices also make use of a SAM EC,
- due to a difference in the communication interface of the controller,
- only 5th and later generations are currently supported. Specifically,
- devices using SAM-over-SSH are supported, whereas devices using
- SAM-over-HID, which is used on the 4th generation, are currently not
- supported.
- Choose m if you want to build the SAM subsystem core and SSH driver as
- module, y if you want to build it into the kernel and n if you don't
- want it at all.
- config SURFACE_AGGREGATOR_BUS
- bool "Surface System Aggregator Module Bus"
- depends on SURFACE_AGGREGATOR
- default y
- help
- Expands the Surface System Aggregator Module (SSAM) core driver by
- providing a dedicated bus and client-device type.
- This bus and device type are intended to provide and simplify support
- for non-platform and non-ACPI SSAM devices, i.e. SSAM devices that are
- not auto-detectable via the conventional means (e.g. ACPI).
- config SURFACE_AGGREGATOR_ERROR_INJECTION
- bool "Surface System Aggregator Module Error Injection Capabilities"
- depends on SURFACE_AGGREGATOR
- depends on FUNCTION_ERROR_INJECTION
- help
- Provides error-injection capabilities for the Surface System
- Aggregator Module subsystem and Surface Serial Hub driver.
- Specifically, exports error injection hooks to be used with the
- kernel's function error injection capabilities to simulate underlying
- transport and communication problems, such as invalid data sent to or
- received from the EC, dropped data, and communication timeouts.
- Intended for development and debugging.
|