| 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 |  | 
|---|