This series adds support for the type cover of the Surface Pro 8. On the Pro 8, the type cover is (unlike on previous generations) handled via the Surface System Aggregator Module (SSAM). As the type cover is detachable, care needs to be taken and the respective SSAM (HID) client devices need to be properly removed when detached and re-initialized when attached. Therefore, this series does three things: 1. Improve hot-removal support for SSAM client devices. When hot-removing clients, subsequent communication may time out. In the worst case, this can lead to problems when devices are detached and re-attached quickly, before we can remove their respective kernel representations. This can then lead to devices being in an uninitialized state, preventing, for example, touchpad gestures from working properly as the required HID feature report has not been sent. Therefore, handle hot-removal of devices more gracefully by avoiding communication once it has been detected and ensure that devices are actually removed. 2. Generify SSAM subsystem hubs and add a KIP hub. On the Surface Pro 8, the KIP subsystem (only that abbreviation is known) is responsible for managing type-cover devices. This hub acts as the controller for device removal similar to the BAS (detachable base) subsystem hub on the Surface Book 3 (therefore we can share most of the code between them). 3. Add the (HID) type-cover clients of the Surface Pro 8 to the aggregator registry. Regards, Max Maximilian Luz (10): platform/surface: aggregator: Allow devices to be marked as hot-removed platform/surface: aggregator: Allow notifiers to avoid communication on unregistering platform/surface: aggregator_registry: Use client device wrappers for notifier registration power/supply: surface_charger: Use client device wrappers for notifier registration power/supply: surface_battery: Use client device wrappers for notifier registration HID: surface-hid: Add support for hot-removal platform/surface: aggregator: Add comment for KIP subsystem category platform/surface: aggregator_registry: Generify subsystem hub functionality platform/surface: aggregator_registry: Add KIP device hub platform/surface: aggregator_registry: Add support for keyboard cover on Surface Pro 8 .../driver-api/surface_aggregator/client.rst | 6 +- drivers/hid/surface-hid/surface_hid_core.c | 38 +- .../platform/surface/aggregator/controller.c | 53 ++- .../surface/surface_aggregator_registry.c | 401 +++++++++++++----- drivers/power/supply/surface_battery.c | 4 +- drivers/power/supply/surface_charger.c | 4 +- include/linux/surface_aggregator/controller.h | 24 +- include/linux/surface_aggregator/device.h | 114 ++++- include/linux/surface_aggregator/serial_hub.h | 2 +- 9 files changed, 501 insertions(+), 145 deletions(-) -- 2.36.1