15a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 25a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * 35a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * Intel Management Engine Interface (Intel MEI) Linux driver 4733ba91cc0d5b0a3cc012431b8c5b354697b57c1Tomas Winkler * Copyright (c) 2003-2012, Intel Corporation. 55a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * 65a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * This program is free software; you can redistribute it and/or modify it 75a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * under the terms and conditions of the GNU General Public License, 85a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * version 2, as published by the Free Software Foundation. 95a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * 105a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * This program is distributed in the hope it will be useful, but WITHOUT 115a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 125a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 135a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * more details. 145a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * 155a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 165a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 175a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#ifndef _MEI_HW_TYPES_H_ 185a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define _MEI_HW_TYPES_H_ 195a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 205a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#include <linux/uuid.h> 215a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 225a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 233870c3206b96c900ce29c8068bd5ad46fae71f5bTomas Winkler * Timeouts in Seconds 245a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 257d93e58d5374aef9cd895a7bb1a8903ffdb7c4b4Tomas Winkler#define MEI_HW_READY_TIMEOUT 2 /* Timeout on ready message */ 263870c3206b96c900ce29c8068bd5ad46fae71f5bTomas Winkler#define MEI_CONNECT_TIMEOUT 3 /* HPS: at least 2 seconds */ 275a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 283870c3206b96c900ce29c8068bd5ad46fae71f5bTomas Winkler#define MEI_CL_CONNECT_TIMEOUT 15 /* HPS: Client Connect Timeout */ 293870c3206b96c900ce29c8068bd5ad46fae71f5bTomas Winkler#define MEI_CLIENTS_INIT_TIMEOUT 15 /* HPS: Clients Enumeration Timeout */ 305a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 313870c3206b96c900ce29c8068bd5ad46fae71f5bTomas Winkler#define MEI_IAMTHIF_STALL_TIMER 12 /* HPS */ 323870c3206b96c900ce29c8068bd5ad46fae71f5bTomas Winkler#define MEI_IAMTHIF_READ_TIMER 10 /* HPS */ 335a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 34ba9cdd0e1ad88004c68395697fb2ec6b9b4ff020Tomas Winkler#define MEI_PGI_TIMEOUT 1 /* PG Isolation time response 1 sec */ 357d93e58d5374aef9cd895a7bb1a8903ffdb7c4b4Tomas Winkler#define MEI_HBM_TIMEOUT 1 /* 1 second */ 365a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 375a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 385a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * MEI Version 395a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 4061a1aea7c7cb40de071e202cfaa31fa2c1fca8baTomas Winkler#define HBM_MINOR_VERSION 1 415a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HBM_MAJOR_VERSION 1 425a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 43ee7e5afd2c369b64ffcf419d38ce7ad1c709a53eTomas Winkler/* 44ee7e5afd2c369b64ffcf419d38ce7ad1c709a53eTomas Winkler * MEI version with PGI support 45ee7e5afd2c369b64ffcf419d38ce7ad1c709a53eTomas Winkler */ 46ee7e5afd2c369b64ffcf419d38ce7ad1c709a53eTomas Winkler#define HBM_MINOR_VERSION_PGI 1 47ee7e5afd2c369b64ffcf419d38ce7ad1c709a53eTomas Winkler#define HBM_MAJOR_VERSION_PGI 1 48ee7e5afd2c369b64ffcf419d38ce7ad1c709a53eTomas Winkler 491ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler/* Host bus message command opcode */ 501ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler#define MEI_HBM_CMD_OP_MSK 0x7f 511ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler/* Host bus message command RESPONSE */ 521ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler#define MEI_HBM_CMD_RES_MSK 0x80 531ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler 545a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 555a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * MEI Bus Message Command IDs 565a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 575a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_START_REQ_CMD 0x01 585a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_START_RES_CMD 0x81 595a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 605a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_STOP_REQ_CMD 0x02 615a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_STOP_RES_CMD 0x82 625a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 635a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define ME_STOP_REQ_CMD 0x03 645a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 655a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_ENUM_REQ_CMD 0x04 665a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_ENUM_RES_CMD 0x84 675a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 685a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_CLIENT_PROPERTIES_REQ_CMD 0x05 695a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define HOST_CLIENT_PROPERTIES_RES_CMD 0x85 705a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 715a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define CLIENT_CONNECT_REQ_CMD 0x06 725a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define CLIENT_CONNECT_RES_CMD 0x86 735a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 745a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define CLIENT_DISCONNECT_REQ_CMD 0x07 755a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define CLIENT_DISCONNECT_RES_CMD 0x87 765a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 771ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler#define MEI_FLOW_CONTROL_CMD 0x08 785a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 794fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler#define MEI_PG_ISOLATION_ENTRY_REQ_CMD 0x0a 804fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler#define MEI_PG_ISOLATION_ENTRY_RES_CMD 0x8a 814fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler#define MEI_PG_ISOLATION_EXIT_REQ_CMD 0x0b 824fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler#define MEI_PG_ISOLATION_EXIT_RES_CMD 0x8b 834fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler 845a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 855a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * MEI Stop Reason 865a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * used by hbm_host_stop_request.reason 875a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 885a6003f25f83b47f38a0f52a6202f18013287996Oren Weilenum mei_stop_reason_types { 895a6003f25f83b47f38a0f52a6202f18013287996Oren Weil DRIVER_STOP_REQUEST = 0x00, 905a6003f25f83b47f38a0f52a6202f18013287996Oren Weil DEVICE_D1_ENTRY = 0x01, 915a6003f25f83b47f38a0f52a6202f18013287996Oren Weil DEVICE_D2_ENTRY = 0x02, 925a6003f25f83b47f38a0f52a6202f18013287996Oren Weil DEVICE_D3_ENTRY = 0x03, 935a6003f25f83b47f38a0f52a6202f18013287996Oren Weil SYSTEM_S1_ENTRY = 0x04, 945a6003f25f83b47f38a0f52a6202f18013287996Oren Weil SYSTEM_S2_ENTRY = 0x05, 955a6003f25f83b47f38a0f52a6202f18013287996Oren Weil SYSTEM_S3_ENTRY = 0x06, 965a6003f25f83b47f38a0f52a6202f18013287996Oren Weil SYSTEM_S4_ENTRY = 0x07, 975a6003f25f83b47f38a0f52a6202f18013287996Oren Weil SYSTEM_S5_ENTRY = 0x08 985a6003f25f83b47f38a0f52a6202f18013287996Oren Weil}; 995a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 10089778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler 10189778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler/** 102a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * enum mei_hbm_status - mei host bus messages return values 10389778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler * 104a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_SUCCESS : status success 105a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_CLIENT_NOT_FOUND : client not found 106a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_ALREADY_EXISTS : connection already established 107a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_REJECTED : connection is rejected 108a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_INVALID_PARAMETER : invalid parameter 109a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_NOT_ALLOWED : operation not allowed 110a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_ALREADY_STARTED : system is already started 111a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @MEI_HBMS_NOT_STARTED : system not started 112ce23139c6c2ee92d5eace20f6f10d716cf295a5bAlexander Usyskin * 113ce23139c6c2ee92d5eace20f6f10d716cf295a5bAlexander Usyskin * @MEI_HBMS_MAX : sentinel 11489778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler */ 11589778d6e2a39027977e2de822808bd82afd6ea46Tomas Winklerenum mei_hbm_status { 11689778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_SUCCESS = 0, 11789778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_CLIENT_NOT_FOUND = 1, 11889778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_ALREADY_EXISTS = 2, 11989778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_REJECTED = 3, 12089778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_INVALID_PARAMETER = 4, 12189778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_NOT_ALLOWED = 5, 12289778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_ALREADY_STARTED = 6, 12389778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_NOT_STARTED = 7, 12489778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler 12589778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_HBMS_MAX 12689778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler}; 12789778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler 12889778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler 1295a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 1305a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * Client Connect Status 1315a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * used by hbm_client_connect_response.status 1325a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 133285e2996655b7bbfb5eb83076a7d7e6f03e2f5c2Alexander Usyskinenum mei_cl_connect_status { 13489778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_CL_CONN_SUCCESS = MEI_HBMS_SUCCESS, 13589778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_CL_CONN_NOT_FOUND = MEI_HBMS_CLIENT_NOT_FOUND, 13689778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_CL_CONN_ALREADY_STARTED = MEI_HBMS_ALREADY_EXISTS, 13789778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_CL_CONN_OUT_OF_RESOURCES = MEI_HBMS_REJECTED, 13889778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_CL_CONN_MESSAGE_SMALL = MEI_HBMS_INVALID_PARAMETER, 1395a6003f25f83b47f38a0f52a6202f18013287996Oren Weil}; 1405a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1415a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 1425a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * Client Disconnect Status 1435a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 144285e2996655b7bbfb5eb83076a7d7e6f03e2f5c2Alexander Usyskinenum mei_cl_disconnect_status { 14589778d6e2a39027977e2de822808bd82afd6ea46Tomas Winkler MEI_CL_DISCONN_SUCCESS = MEI_HBMS_SUCCESS 1465a6003f25f83b47f38a0f52a6202f18013287996Oren Weil}; 1475a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1485a6003f25f83b47f38a0f52a6202f18013287996Oren Weil/* 1495a6003f25f83b47f38a0f52a6202f18013287996Oren Weil * MEI BUS Interface Section 1505a6003f25f83b47f38a0f52a6202f18013287996Oren Weil */ 1515a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct mei_msg_hdr { 1525a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u32 me_addr:8; 1535a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u32 host_addr:8; 1545a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u32 length:9; 155479327fc42737234a1f76f20010334c99110d256Tomas Winkler u32 reserved:5; 156479327fc42737234a1f76f20010334c99110d256Tomas Winkler u32 internal:1; 1575a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u32 msg_complete:1; 1585a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 1595a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1605a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1615a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct mei_bus_message { 1621ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 1631ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 data[0]; 1645a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 1655a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 166cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler/** 167cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler * struct hbm_cl_cmd - client specific host bus command 168cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler * CONNECT, DISCONNECT, and FlOW CONTROL 169cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler * 170a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @hbm_cmd: bus message command header 171a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @me_addr: address of the client in ME 172a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @host_addr: address of the client in the driver 173a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @data: generic data 174cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler */ 175cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winklerstruct mei_hbm_cl_cmd { 176cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler u8 hbm_cmd; 177cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler u8 me_addr; 178cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler u8 host_addr; 179cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler u8 data; 180cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler}; 181cd51ed649fa4bd55c6a78db52b57260797ed56b4Tomas Winkler 1825a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_version { 1835a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 minor_version; 1845a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 major_version; 1855a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 1865a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1875a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_host_version_request { 1881ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 1895a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved; 1905a6003f25f83b47f38a0f52a6202f18013287996Oren Weil struct hbm_version host_version; 1915a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 1925a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1935a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_host_version_response { 1941ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 1954b00706cd9499652051918305e70c7152d0cfd0eTomas Winkler u8 host_version_supported; 1965a6003f25f83b47f38a0f52a6202f18013287996Oren Weil struct hbm_version me_max_version; 1975a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 1985a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 1995a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_host_stop_request { 2001ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2015a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reason; 2025a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[2]; 2035a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2045a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2055a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_host_stop_response { 2061ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2075a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[3]; 2085a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2095a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2105a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_me_stop_request { 2111ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2125a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reason; 2135a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[2]; 2145a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2155a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2165a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_host_enum_request { 2171ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2185a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[3]; 2195a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2205a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2215a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_host_enum_response { 2221ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2235a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[3]; 2245a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 valid_addresses[32]; 2255a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2265a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2275a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct mei_client_properties { 2285a6003f25f83b47f38a0f52a6202f18013287996Oren Weil uuid_le protocol_name; 2295a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 protocol_version; 2305a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 max_number_of_connections; 2315a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 fixed_address; 2325a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 single_recv_buf; 2335a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u32 max_msg_length; 2345a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2355a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2365a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_props_request { 2371ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2383438c1f3b7b3f18a85ea7ed3c2f70ffe387aeee9Tomas Winkler u8 me_addr; 2395a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[2]; 2405a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2415a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2425a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_props_response { 2431ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2443438c1f3b7b3f18a85ea7ed3c2f70ffe387aeee9Tomas Winkler u8 me_addr; 2455a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 status; 2465a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[1]; 2475a6003f25f83b47f38a0f52a6202f18013287996Oren Weil struct mei_client_properties client_properties; 2485a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2495a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 250aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler/** 2514fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler * struct hbm_power_gate - power gate request/response 2524fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler * 253a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @hbm_cmd: bus message command header 254a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @reserved: reserved 2554fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler */ 2564fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winklerstruct hbm_power_gate { 2574fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler u8 hbm_cmd; 2584fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler u8 reserved[3]; 2594fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler} __packed; 2604fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler 2614fcbc99b7565f915bea58e14b5e6f089bf9abf16Tomas Winkler/** 262aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler * struct hbm_client_connect_request - connect/disconnect request 263aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler * 264a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @hbm_cmd: bus message command header 265a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @me_addr: address of the client in ME 266a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @host_addr: address of the client in the driver 267a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @reserved: reserved 268aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler */ 2695a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_client_connect_request { 2701ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2715a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 me_addr; 2725a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 host_addr; 2735a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved; 2745a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2755a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 276aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler/** 277aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler * struct hbm_client_connect_response - connect/disconnect response 278aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler * 279a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @hbm_cmd: bus message command header 280a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @me_addr: address of the client in ME 281a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @host_addr: address of the client in the driver 282a8605ea2c20c2b97a54d7746c16ebef5ba29632aAlexander Usyskin * @status: status of the request 283aeba4a06f28fad11b1e61d150bd3cde3008b80c8Tomas Winkler */ 2845a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_client_connect_response { 2851ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2865a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 me_addr; 2875a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 host_addr; 2885a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 status; 2895a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 2905a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2915a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2925a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#define MEI_FC_MESSAGE_RESERVED_LENGTH 5 2935a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 2945a6003f25f83b47f38a0f52a6202f18013287996Oren Weilstruct hbm_flow_control { 2951ca7e782864222bcdbe305e543df25df4e343963Tomas Winkler u8 hbm_cmd; 2965a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 me_addr; 2975a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 host_addr; 2985a6003f25f83b47f38a0f52a6202f18013287996Oren Weil u8 reserved[MEI_FC_MESSAGE_RESERVED_LENGTH]; 2995a6003f25f83b47f38a0f52a6202f18013287996Oren Weil} __packed; 3005a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 3015a6003f25f83b47f38a0f52a6202f18013287996Oren Weil 3025a6003f25f83b47f38a0f52a6202f18013287996Oren Weil#endif 303