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