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