xref: /linux/Documentation/driver-api/surface_aggregator/clients/san.rst (revision d0034a7a4ac7fae708146ac0059b9c47a1543f0d)
1fc00bc8aSMaximilian Luz.. SPDX-License-Identifier: GPL-2.0+
2fc00bc8aSMaximilian Luz
3fc00bc8aSMaximilian Luz.. |san_client_link| replace:: :c:func:`san_client_link`
4fc00bc8aSMaximilian Luz.. |san_dgpu_notifier_register| replace:: :c:func:`san_dgpu_notifier_register`
5fc00bc8aSMaximilian Luz.. |san_dgpu_notifier_unregister| replace:: :c:func:`san_dgpu_notifier_unregister`
6fc00bc8aSMaximilian Luz
7fc00bc8aSMaximilian Luz===================
8fc00bc8aSMaximilian LuzSurface ACPI Notify
9fc00bc8aSMaximilian Luz===================
10fc00bc8aSMaximilian Luz
11fc00bc8aSMaximilian LuzThe Surface ACPI Notify (SAN) device provides the bridge between ACPI and
12fc00bc8aSMaximilian LuzSAM controller. Specifically, ACPI code can execute requests and handle
13fc00bc8aSMaximilian Luzbattery and thermal events via this interface. In addition to this, events
14fc00bc8aSMaximilian Luzrelating to the discrete GPU (dGPU) of the Surface Book 2 can be sent from
15fc00bc8aSMaximilian LuzACPI code (note: the Surface Book 3 uses a different method for this). The
16fc00bc8aSMaximilian Luzonly currently known event sent via this interface is a dGPU power-on
17fc00bc8aSMaximilian Luznotification. While this driver handles the former part internally, it only
18fc00bc8aSMaximilian Luzrelays the dGPU events to any other driver interested via its public API and
19fc00bc8aSMaximilian Luzdoes not handle them.
20fc00bc8aSMaximilian Luz
21fc00bc8aSMaximilian LuzThe public interface of this driver is split into two parts: Client
22fc00bc8aSMaximilian Luzregistration and notifier-block registration.
23fc00bc8aSMaximilian Luz
24fc00bc8aSMaximilian LuzA client to the SAN interface can be linked as consumer to the SAN device
25fc00bc8aSMaximilian Luzvia |san_client_link|. This can be used to ensure that the a client
26fc00bc8aSMaximilian Luzreceiving dGPU events does not miss any events due to the SAN interface not
27fc00bc8aSMaximilian Luzbeing set up as this forces the client driver to unbind once the SAN driver
28fc00bc8aSMaximilian Luzis unbound.
29fc00bc8aSMaximilian Luz
30fc00bc8aSMaximilian LuzNotifier-blocks can be registered by any device for as long as the module is
31fc00bc8aSMaximilian Luzloaded, regardless of being linked as client or not. Registration is done
32fc00bc8aSMaximilian Luzwith |san_dgpu_notifier_register|. If the notifier is not needed any more, it
33fc00bc8aSMaximilian Luzshould be unregistered via |san_dgpu_notifier_unregister|.
34fc00bc8aSMaximilian Luz
35fc00bc8aSMaximilian LuzConsult the API documentation below for more details.
36fc00bc8aSMaximilian Luz
37fc00bc8aSMaximilian Luz
38fc00bc8aSMaximilian LuzAPI Documentation
39fc00bc8aSMaximilian Luz=================
40fc00bc8aSMaximilian Luz
41fc00bc8aSMaximilian Luz.. kernel-doc:: include/linux/surface_acpi_notify.h
42fc00bc8aSMaximilian Luz
43fc00bc8aSMaximilian Luz.. kernel-doc:: drivers/platform/surface/surface_acpi_notify.c
44fc00bc8aSMaximilian Luz    :export:
45