This series adds a driver providing a tablet mode switch on the Surface Pro 8, Surface Pro X, and Surface Laptop Studio. These devices provide posture information via subsystems of the Surface Aggregator Module (SAM; embedded controller). While the specific subsystems used for the Pro and Laptop models differ, large parts of the respective subsystem drivers would be equal. Therefore, we essentially provide a generic framework for tablet-mode switches via the Surface Aggregator module and use that to implement specific support for the KIP and POS subsystems used on the aforementioned devices. In addition, this series first introduces some helper macros for synchronous stack-allocated SAM requests used in the subsequent patches, extending the already existing ones. Further, this series adds the respective firmware nodes to the Surface Aggregator Registry. Maximilian Luz (4): platform/surface: aggregator: Add helper macros for requests with argument and return value platform/surface: Add KIP/POS tablet-mode switch driver platform/surface: aggregator_registry: Add support for tablet mode switch on Surface Pro 8 platform/surface: aggregator_registry: Add support for tablet mode switch on Surface Laptop Studio .../sysfs-bus-surface_aggregator-tabletsw | 57 ++ MAINTAINERS | 6 + drivers/platform/surface/Kconfig | 23 + drivers/platform/surface/Makefile | 1 + .../surface/surface_aggregator_registry.c | 15 +- .../surface/surface_aggregator_tabletsw.c | 533 ++++++++++++++++++ include/linux/surface_aggregator/controller.h | 125 ++++ include/linux/surface_aggregator/device.h | 36 ++ 8 files changed, 795 insertions(+), 1 deletion(-) create mode 100644 Documentation/ABI/testing/sysfs-bus-surface_aggregator-tabletsw create mode 100644 drivers/platform/surface/surface_aggregator_tabletsw.c -- 2.36.1