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