linux/drivers/platform/surface
Maximilian Luz fc622b3d36 platform/surface: Set up Surface Aggregator device registry
The Surface System Aggregator Module (SSAM) subsystem provides various
functionalities, which are separated by spreading them across multiple
devices and corresponding drivers. Parts of that functionality / some of
those devices, however, can (as far as we currently know) not be
auto-detected by conventional means. While older (specifically 5th- and
6th-)generation models do advertise most of their functionality via
standard platform devices in ACPI, newer generations do not.

As we are currently also not aware of any feasible way to query said
functionalities dynamically, this poses a problem. There is, however, a
device in ACPI that seems to be used by Windows for identifying
different Surface models: The Windows Surface Integration Device (WSID).
This device seems to have a HID corresponding to the overall set of
functionalities SSAM provides for the associated model.

This commit introduces a registry providing non-detectable device
information via software nodes. In addition, a SSAM platform hub driver
is introduced, which takes care of creating and managing the SSAM
devices specified in this registry. This approach allows for a
hierarchical setup akin to ACPI and is easily extendable, e.g. via
firmware node properties.

Note that this commit only provides the basis for the platform hub and
registry, and does not add any content to it. The registry will be
expanded in subsequent commits.

Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Link: https://lore.kernel.org/r/20210212115439.1525216-2-luzmaximilian@gmail.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-03-06 10:23:26 +01:00
..
aggregator platform/surface: aggregator: Fix access of unaligned value 2021-02-11 16:47:50 +01:00
Kconfig platform/surface: Set up Surface Aggregator device registry 2021-03-06 10:23:26 +01:00
Makefile platform/surface: Set up Surface Aggregator device registry 2021-03-06 10:23:26 +01:00
surface3_button.c platform/surface: Move Surface 3 Button driver to platform/surface 2020-10-27 12:51:24 +01:00
surface3_power.c platform/surface: Move Surface 3 Power OpRegion driver to platform/surface 2020-10-27 12:51:24 +01:00
surface3-wmi.c platform/surface: surface3-wmi: Fix variable 'status' set but not used compiler warning 2021-02-04 13:23:55 +01:00
surface_acpi_notify.c platform/surface: fix potential integer overflow on shift of a int 2021-01-13 10:25:10 +01:00
surface_aggregator_cdev.c platform/surface: aggregator_cdev: Add comments regarding unchecked allocation size 2021-01-13 10:30:21 +01:00
surface_aggregator_registry.c platform/surface: Set up Surface Aggregator device registry 2021-03-06 10:23:26 +01:00
surface_gpe.c platform/surface: surface_gpe: Fix non-PM_SLEEP build warnings 2021-01-04 15:54:27 +01:00
surface_hotplug.c platform/surface: Add Surface Hot-Plug driver 2021-02-08 16:59:21 +01:00
surfacepro3_button.c platform/surface: Move Surface Pro 3 Button driver to platform/surface 2020-10-27 12:51:24 +01:00