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