1 | /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ |
2 | /* |
3 | * Copyright(c) 2003-2015 Intel Corporation. All rights reserved. |
4 | * Intel Management Engine Interface (Intel MEI) Linux driver |
5 | * Intel MEI Interface Header |
6 | */ |
7 | #ifndef _LINUX_MEI_H |
8 | #define _LINUX_MEI_H |
9 | |
10 | #include <linux/mei_uuid.h> |
11 | |
12 | /* |
13 | * This IOCTL is used to associate the current file descriptor with a |
14 | * FW Client (given by UUID). This opens a communication channel |
15 | * between a host client and a FW client. From this point every read and write |
16 | * will communicate with the associated FW client. |
17 | * Only in close() (file_operation release()) is the communication between |
18 | * the clients disconnected. |
19 | * |
20 | * The IOCTL argument is a struct with a union that contains |
21 | * the input parameter and the output parameter for this IOCTL. |
22 | * |
23 | * The input parameter is UUID of the FW Client. |
24 | * The output parameter is the properties of the FW client |
25 | * (FW protocol version and max message size). |
26 | * |
27 | */ |
28 | #define IOCTL_MEI_CONNECT_CLIENT \ |
29 | _IOWR('H' , 0x01, struct mei_connect_client_data) |
30 | |
31 | /* |
32 | * Intel MEI client information struct |
33 | */ |
34 | struct mei_client { |
35 | __u32 max_msg_length; |
36 | __u8 protocol_version; |
37 | __u8 reserved[3]; |
38 | }; |
39 | |
40 | /* |
41 | * IOCTL Connect Client Data structure |
42 | */ |
43 | struct mei_connect_client_data { |
44 | union { |
45 | uuid_le in_client_uuid; |
46 | struct mei_client out_client_properties; |
47 | }; |
48 | }; |
49 | |
50 | /** |
51 | * DOC: set and unset event notification for a connected client |
52 | * |
53 | * The IOCTL argument is 1 for enabling event notification and 0 for |
54 | * disabling the service. |
55 | * Return: -EOPNOTSUPP if the devices doesn't support the feature |
56 | */ |
57 | #define IOCTL_MEI_NOTIFY_SET _IOW('H', 0x02, __u32) |
58 | |
59 | /** |
60 | * DOC: retrieve notification |
61 | * |
62 | * The IOCTL output argument is 1 if an event was pending and 0 otherwise. |
63 | * The ioctl has to be called in order to acknowledge pending event. |
64 | * |
65 | * Return: -EOPNOTSUPP if the devices doesn't support the feature |
66 | */ |
67 | #define IOCTL_MEI_NOTIFY_GET _IOR('H', 0x03, __u32) |
68 | |
69 | /** |
70 | * struct mei_connect_client_vtag - mei client information struct with vtag |
71 | * |
72 | * @in_client_uuid: UUID of client to connect |
73 | * @vtag: virtual tag |
74 | * @reserved: reserved for future use |
75 | */ |
76 | struct mei_connect_client_vtag { |
77 | uuid_le in_client_uuid; |
78 | __u8 vtag; |
79 | __u8 reserved[3]; |
80 | }; |
81 | |
82 | /** |
83 | * struct mei_connect_client_data_vtag - IOCTL connect data union |
84 | * |
85 | * @connect: input connect data |
86 | * @out_client_properties: output client data |
87 | */ |
88 | struct mei_connect_client_data_vtag { |
89 | union { |
90 | struct mei_connect_client_vtag connect; |
91 | struct mei_client out_client_properties; |
92 | }; |
93 | }; |
94 | |
95 | /** |
96 | * DOC: |
97 | * This IOCTL is used to associate the current file descriptor with a |
98 | * FW Client (given by UUID), and virtual tag (vtag). |
99 | * The IOCTL opens a communication channel between a host client and |
100 | * a FW client on a tagged channel. From this point on, every read |
101 | * and write will communicate with the associated FW client |
102 | * on the tagged channel. |
103 | * Upon close() the communication is terminated. |
104 | * |
105 | * The IOCTL argument is a struct with a union that contains |
106 | * the input parameter and the output parameter for this IOCTL. |
107 | * |
108 | * The input parameter is UUID of the FW Client, a vtag [0,255]. |
109 | * The output parameter is the properties of the FW client |
110 | * (FW protocol version and max message size). |
111 | * |
112 | * Clients that do not support tagged connection |
113 | * will respond with -EOPNOTSUPP. |
114 | */ |
115 | #define IOCTL_MEI_CONNECT_CLIENT_VTAG \ |
116 | _IOWR('H', 0x04, struct mei_connect_client_data_vtag) |
117 | |
118 | #endif /* _LINUX_MEI_H */ |
119 | |