2023-08-30 17:31:07 +02:00
|
|
|
# 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
|
2023-10-24 12:59:35 +02:00
|
|
|
depends on ACPI && !RISCV
|
2023-08-30 17:31:07 +02:00
|
|
|
select CRC_CCITT
|
|
|
|
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.
|