mei.h (3475B)
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 */ 34struct 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 */ 43struct 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 */ 76struct 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 */ 88struct 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 */