xref: /linux/include/linux/surface_acpi_notify.h (revision d0034a7a4ac7fae708146ac0059b9c47a1543f0d)
1*fc00bc8aSMaximilian Luz /* SPDX-License-Identifier: GPL-2.0+ */
2*fc00bc8aSMaximilian Luz /*
3*fc00bc8aSMaximilian Luz  * Interface for Surface ACPI Notify (SAN) driver.
4*fc00bc8aSMaximilian Luz  *
5*fc00bc8aSMaximilian Luz  * Provides access to discrete GPU notifications sent from ACPI via the SAN
6*fc00bc8aSMaximilian Luz  * driver, which are not handled by this driver directly.
7*fc00bc8aSMaximilian Luz  *
8*fc00bc8aSMaximilian Luz  * Copyright (C) 2019-2020 Maximilian Luz <luzmaximilian@gmail.com>
9*fc00bc8aSMaximilian Luz  */
10*fc00bc8aSMaximilian Luz 
11*fc00bc8aSMaximilian Luz #ifndef _LINUX_SURFACE_ACPI_NOTIFY_H
12*fc00bc8aSMaximilian Luz #define _LINUX_SURFACE_ACPI_NOTIFY_H
13*fc00bc8aSMaximilian Luz 
14*fc00bc8aSMaximilian Luz #include <linux/notifier.h>
15*fc00bc8aSMaximilian Luz #include <linux/types.h>
16*fc00bc8aSMaximilian Luz 
17*fc00bc8aSMaximilian Luz /**
18*fc00bc8aSMaximilian Luz  * struct san_dgpu_event - Discrete GPU ACPI event.
19*fc00bc8aSMaximilian Luz  * @category: Category of the event.
20*fc00bc8aSMaximilian Luz  * @target:   Target ID of the event source.
21*fc00bc8aSMaximilian Luz  * @command:  Command ID of the event.
22*fc00bc8aSMaximilian Luz  * @instance: Instance ID of the event source.
23*fc00bc8aSMaximilian Luz  * @length:   Length of the event's payload data (in bytes).
24*fc00bc8aSMaximilian Luz  * @payload:  Pointer to the event's payload data.
25*fc00bc8aSMaximilian Luz  */
26*fc00bc8aSMaximilian Luz struct san_dgpu_event {
27*fc00bc8aSMaximilian Luz 	u8 category;
28*fc00bc8aSMaximilian Luz 	u8 target;
29*fc00bc8aSMaximilian Luz 	u8 command;
30*fc00bc8aSMaximilian Luz 	u8 instance;
31*fc00bc8aSMaximilian Luz 	u16 length;
32*fc00bc8aSMaximilian Luz 	u8 *payload;
33*fc00bc8aSMaximilian Luz };
34*fc00bc8aSMaximilian Luz 
35*fc00bc8aSMaximilian Luz int san_client_link(struct device *client);
36*fc00bc8aSMaximilian Luz int san_dgpu_notifier_register(struct notifier_block *nb);
37*fc00bc8aSMaximilian Luz int san_dgpu_notifier_unregister(struct notifier_block *nb);
38*fc00bc8aSMaximilian Luz 
39*fc00bc8aSMaximilian Luz #endif /* _LINUX_SURFACE_ACPI_NOTIFY_H */
40