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