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