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