linux/Documentation/driver-api
Maximilian Luz fc00bc8ac1 platform/surface: Add Surface ACPI Notify driver
The Surface ACPI Notify (SAN) device provides an ACPI interface to the
Surface Aggregator EC, specifically the Surface Serial Hub interface.
This interface allows EC requests to be made from ACPI code and can
convert a subset of EC events back to ACPI notifications.

Specifically, this interface provides a GenericSerialBus operation
region ACPI code can execute a request by writing the request command
data and payload to this operation region and reading back the
corresponding response via a write-then-read operation. Furthermore,
this interface provides a _DSM method to be called when certain events
from the EC have been received, essentially turning them into ACPI
notifications.

The driver provided in this commit essentially takes care of translating
the request data written to the operation region, executing the request,
waiting for it to finish, and finally writing and translating back the
response (if the request has one). Furthermore, this driver takes care
of enabling the events handled via ACPI _DSM calls. Lastly, this driver
also exposes an interface providing discrete GPU (dGPU) power-on
notifications on the Surface Book 2, which are also received via the
operation region interface (but not handled by the SAN driver directly),
making them accessible to other drivers (such as a dGPU hot-plug driver
that may be added later on).

On 5th and 6th generation Surface devices (Surface Pro 5/2017, Pro 6,
Book 2, Laptop 1 and 2), the SAN interface provides full battery and
thermal subsystem access, as well as other EC based functionality. On
those models, battery and thermal sensor devices are implemented as
standard ACPI devices of that type, however, forward ACPI calls to the
corresponding Surface Aggregator EC request via the SAN interface and
receive corresponding notifications (e.g. battery information change)
from it. This interface is therefore required to provide said
functionality on those devices.

Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20201221183959.1186143-10-luzmaximilian@gmail.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2021-01-07 00:06:39 +01:00
..
80211 docs: net: 80211: reduce docs build time 2020-10-08 10:41:49 +02:00
acpi Replace HTTP links with HTTPS ones: documentation 2020-06-08 09:30:19 -06:00
backlight
dmaengine dmaengine: doc: client: Update for dmaengine_get_dma_device() usage 2020-12-11 21:20:08 +05:30
driver-model rtc: rework rtc_register_device() resource management 2020-11-19 12:50:12 +01:00
early-userspace Replace HTTP links with HTTPS ones: Documentation/driver-api 2020-06-26 11:09:04 -06:00
firmware docs: driver-api: firmware: fallback-mechanisms: Fix rendering of bullet point 2020-09-08 13:32:06 +02:00
fpga docs: fpga: replace :c:member: macros 2020-10-15 07:49:43 +02:00
gpio Documentation: gpio: fix typo and unclear legacy API section 2020-12-05 20:23:34 +01:00
i3c docs: driver-api: i3c: Replace HTTP links with HTTPS ones 2020-07-13 09:32:36 -06:00
iio docs: get rid of :c:type explicit declarations for structs 2020-10-15 07:49:40 +02:00
md
media media: Documentation: ccs: Reorder SPDX and copyright notice lines 2020-12-03 10:39:24 +01:00
mei docs updates for v5.10-rc1 2020-10-16 15:02:21 -07:00
memory-devices Replace HTTP links with HTTPS ones: Documentation/driver-api 2020-06-26 11:09:04 -06:00
mmc Replace HTTP links with HTTPS ones: Documentation/driver-api 2020-06-26 11:09:04 -06:00
mtd MTD core: 2020-12-16 14:58:35 -08:00
nfc
nvdimm docs: add some new files to their respective index.rst files 2020-09-10 10:48:20 -06:00
pci
phy
pldmfw Add pldmfw library for PLDM firmware update 2020-07-28 17:07:06 -07:00
pm docs: devices.rst: fix a C reference markup 2020-10-15 07:49:44 +02:00
rapidio Replace HTTP links with HTTPS ones: Documentation/driver-api 2020-06-26 11:09:04 -06:00
serial tty: vt: Replace HTTP links with HTTPS ones 2020-07-21 20:04:54 +02:00
soundwire docs: soundwire: fix some identation at stream.rst 2020-09-10 10:49:29 -06:00
surface_aggregator platform/surface: Add Surface ACPI Notify driver 2021-01-07 00:06:39 +01:00
thermal Power management updates for 5.11-rc1 2020-12-15 16:30:31 -08:00
usb usb: docs: document altmode register/unregister functions 2020-10-15 07:49:48 +02:00
xilinx
auxiliary_bus.rst driver core: auxiliary bus: make remove function return void 2020-12-04 13:30:48 +01:00
basics.rst docs: basics.rst: avoid duplicated C function declaration 2020-10-15 07:49:45 +02:00
clk.rst
component.rst
connector.rst net/connector: Add const qualifier to cb_id 2020-12-16 11:06:49 -08:00
console.rst
dcdbas.rst
devfreq.rst
device_link.rst docs: device_link.rst: remove duplicated kernel-doc include 2020-10-15 07:49:42 +02:00
device-io.rst Driver-API: Documentation: Replace deprecated :c:func: Usage 2020-07-13 09:56:03 -06:00
dma-buf.rst dma-buf: Fix kerneldoc formatting 2020-12-15 10:57:29 +01:00
edac.rst
eisa.rst
firewire.rst
frame-buffer.rst
generic-counter.rst Documentation/driver-api: generic-counter: drop doubled word 2020-07-07 20:24:07 +01:00
hsi.rst
i2c.rst
index.rst docs: driver-api: Add Surface Aggregator subsystem documentation 2021-01-07 00:06:39 +01:00
infiniband.rst RDMA/core: Remove FMR pool API 2020-06-02 20:32:53 -03:00
infrastructure.rst docs: infrastructure.rst: exclude device_link_state from device.h 2020-10-15 07:49:46 +02:00
input.rst Input: remove input_polled_dev implementation 2020-12-02 12:35:14 -08:00
interconnect.rst
io_ordering.rst
io-mapping.rst io-mapping: Provide iomap_local variant 2020-11-24 14:42:09 +01:00
ioctl.rst
ipmb.rst
ipmi.rst Minor cleanups to the IPMI driver for 5.9 2020-08-08 09:32:18 -07:00
isa.rst
isapnp.rst
libata.rst docs: libata.rst: fix a wrong usage of :c:type: tag 2020-10-15 07:49:44 +02:00
lightnvm-pblk.rst
mailbox.rst docs: move mailbox.txt to driver-api and rename it 2020-06-26 11:33:38 -06:00
men-chameleon-bus.rst
message-based.rst
misc_devices.rst
miscellaneous.rst
mtdnand.rst docs: mtd: Avoid htmldocs warnings 2020-12-10 22:37:32 +01:00
ntb.rst Documentation/driver-api: ntb: drop doubled word 2020-07-13 11:18:17 -06:00
nvmem.rst
parport-lowlevel.rst
pinctl.rst
pps.rst
pti_intel_mid.rst
ptp.rst docs: ptp.rst: add support for Renesas (IDT) ClockMatrix 2020-07-17 10:25:21 -07:00
pwm.rst
regulator.rst docs: get rid of :c:type explicit declarations for structs 2020-10-15 07:49:40 +02:00
reset.rst docs: add a reset controller chapter to the driver API docs 2020-12-08 10:48:04 -07:00
rfkill.rst
s390-drivers.rst
scsi.rst
slimbus.rst
sm501.rst
spi.rst
switchtec.rst
sync_file.rst
target.rst docs: scsi: target.rst: remove iSCSI transport class kernel-doc markup 2020-10-15 07:49:42 +02:00
uio-howto.rst Documentation/driver-api: uio-howto: drop doubled word 2020-07-10 14:58:01 +02:00
vfio-mediated-device.rst
vfio.rst
vme.rst
w1.rst
xillybus.rst Documentation/driver-api: xillybus: drop doubled word 2020-07-10 14:58:01 +02:00
zorro.rst