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/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()) the communication between 18 * the clients is 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 is 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 with 102 * on the tagged channel. 103 * Upone 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 protocool 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