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