45 lines
1.8 KiB
ReStructuredText
45 lines
1.8 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0+
|
|
|
|
.. |san_client_link| replace:: :c:func:`san_client_link`
|
|
.. |san_dgpu_notifier_register| replace:: :c:func:`san_dgpu_notifier_register`
|
|
.. |san_dgpu_notifier_unregister| replace:: :c:func:`san_dgpu_notifier_unregister`
|
|
|
|
===================
|
|
Surface ACPI Notify
|
|
===================
|
|
|
|
The Surface ACPI Notify (SAN) device provides the bridge between ACPI and
|
|
SAM controller. Specifically, ACPI code can execute requests and handle
|
|
battery and thermal events via this interface. In addition to this, events
|
|
relating to the discrete GPU (dGPU) of the Surface Book 2 can be sent from
|
|
ACPI code (note: the Surface Book 3 uses a different method for this). The
|
|
only currently known event sent via this interface is a dGPU power-on
|
|
notification. While this driver handles the former part internally, it only
|
|
relays the dGPU events to any other driver interested via its public API and
|
|
does not handle them.
|
|
|
|
The public interface of this driver is split into two parts: Client
|
|
registration and notifier-block registration.
|
|
|
|
A client to the SAN interface can be linked as consumer to the SAN device
|
|
via |san_client_link|. This can be used to ensure that the a client
|
|
receiving dGPU events does not miss any events due to the SAN interface not
|
|
being set up as this forces the client driver to unbind once the SAN driver
|
|
is unbound.
|
|
|
|
Notifier-blocks can be registered by any device for as long as the module is
|
|
loaded, regardless of being linked as client or not. Registration is done
|
|
with |san_dgpu_notifier_register|. If the notifier is not needed any more, it
|
|
should be unregistered via |san_dgpu_notifier_unregister|.
|
|
|
|
Consult the API documentation below for more details.
|
|
|
|
|
|
API Documentation
|
|
=================
|
|
|
|
.. kernel-doc:: include/linux/surface_acpi_notify.h
|
|
|
|
.. kernel-doc:: drivers/platform/surface/surface_acpi_notify.c
|
|
:export:
|