1 /****************************************************************************** 2 * Intel Management Engine Interface (Intel MEI) Linux driver 3 * Intel MEI Interface Header 4 * 5 * This file is provided under a dual BSD/GPLv2 license. When using or 6 * redistributing this file, you may do so under either license. 7 * 8 * GPL LICENSE SUMMARY 9 * 10 * Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved. 11 * 12 * This program is free software; you can redistribute it and/or modify 13 * it under the terms of version 2 of the GNU General Public License as 14 * published by the Free Software Foundation. 15 * 16 * This program is distributed in the hope that it will be useful, but 17 * WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19 * General Public License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with this program; if not, write to the Free Software 23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, 24 * USA 25 * 26 * The full GNU General Public License is included in this distribution 27 * in the file called LICENSE.GPL. 28 * 29 * Contact Information: 30 * Intel Corporation. 31 * linux-mei (at) linux.intel.com 32 * http://www.intel.com 33 * 34 * BSD LICENSE 35 * 36 * Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved. 37 * All rights reserved. 38 * 39 * Redistribution and use in source and binary forms, with or without 40 * modification, are permitted provided that the following conditions 41 * are met: 42 * 43 * * Redistributions of source code must retain the above copyright 44 * notice, this list of conditions and the following disclaimer. 45 * * Redistributions in binary form must reproduce the above copyright 46 * notice, this list of conditions and the following disclaimer in 47 * the documentation and/or other materials provided with the 48 * distribution. 49 * * Neither the name Intel Corporation nor the names of its 50 * contributors may be used to endorse or promote products derived 51 * from this software without specific prior written permission. 52 * 53 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 54 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 55 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 56 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 57 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 58 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 59 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 60 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 61 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 62 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 63 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 64 * 65 *****************************************************************************/ 66 67 #ifndef _LINUX_MEI_H 68 #define _LINUX_MEI_H 69 70 #include <linux/uuid.h> 71 72 /* 73 * This IOCTL is used to associate the current file descriptor with a 74 * FW Client (given by UUID). This opens a communication channel 75 * between a host client and a FW client. From this point every read and write 76 * will communicate with the associated FW client. 77 * Only in close() (file_operation release()) the communication between 78 * the clients is disconnected 79 * 80 * The IOCTL argument is a struct with a union that contains 81 * the input parameter and the output parameter for this IOCTL. 82 * 83 * The input parameter is UUID of the FW Client. 84 * The output parameter is the properties of the FW client 85 * (FW protocol version and max message size). 86 * 87 */ 88 #define IOCTL_MEI_CONNECT_CLIENT \ 89 _IOWR('H' , 0x01, struct mei_connect_client_data) 90 91 /* 92 * Intel MEI client information struct 93 */ 94 struct mei_client { 95 __u32 max_msg_length; 96 __u8 protocol_version; 97 __u8 reserved[3]; 98 }; 99 100 /* 101 * IOCTL Connect Client Data structure 102 */ 103 struct mei_connect_client_data { 104 union { 105 uuid_le in_client_uuid; 106 struct mei_client out_client_properties; 107 }; 108 }; 109 110 /** 111 * DOC: set and unset event notification for a connected client 112 * 113 * The IOCTL argument is 1 for enabling event notification and 0 for 114 * disabling the service 115 * Return: -EOPNOTSUPP if the devices doesn't support the feature 116 */ 117 #define IOCTL_MEI_NOTIFY_SET _IOW('H', 0x02, __u32) 118 119 /** 120 * DOC: retrieve notification 121 * 122 * The IOCTL output argument is 1 if an event was is pending and 0 otherwise 123 * the ioctl has to be called in order to acknowledge pending event 124 * 125 * Return: -EOPNOTSUPP if the devices doesn't support the feature 126 */ 127 #define IOCTL_MEI_NOTIFY_GET _IOR('H', 0x03, __u32) 128 129 #endif /* _LINUX_MEI_H */ 130