12e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
22e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Copyright(c) 2011 Trusted Logic.   All rights reserved.
32e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *
42e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Redistribution and use in source and binary forms, with or without
52e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * modification, are permitted provided that the following conditions
62e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * are met:
72e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *
82e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *  * Redistributions of source code must retain the above copyright
92e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    notice, this list of conditions and the following disclaimer.
102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *  * Redistributions in binary form must reproduce the above copyright
112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    notice, this list of conditions and the following disclaimer in
122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    the documentation and/or other materials provided with the
132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    distribution.
142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *  * Neither the name Trusted Logic nor the names of its
152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    contributors may be used to endorse or promote products derived
162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *    from this software without specific prior written permission.
172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley *
182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifndef __SCHANNEL6_PROTOCOL_H__
322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define __SCHANNEL6_PROTOCOL_H__
332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#include "s_type.h"
352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * This header file defines some structures needed for the secure channel
382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * protocol. See your Product Reference Manual for a specification of the
392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * SChannel protocol.
402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley// jroux to do : remove
422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#undef SMC_PROTOCOL_VERSION
432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SMC_PROTOCOL_VERSION 0x06000000
442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Time representation.
472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef uint64_t SCTIME;
492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCTIME_IMMEDIATE ((uint64_t) 0x0000000000000000ULL)
512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCTIME_INFINITE  ((uint64_t) 0xFFFFFFFFFFFFFFFFULL)
522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*
542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Message types
552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_CREATE_DEVICE_CONTEXT   0x02
572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_DESTROY_DEVICE_CONTEXT  0xFD
582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_REGISTER_SHARED_MEMORY  0xF7
592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_RELEASE_SHARED_MEMORY   0xF9
602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_OPEN_CLIENT_SESSION     0xF0
612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_CLOSE_CLIENT_SESSION    0xF2
622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_INVOKE_CLIENT_COMMAND   0xF5
632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_CANCEL_CLIENT_OPERATION 0xF4
642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_MANAGEMENT              0xFE
652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*
672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Shared mem flags
682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_SHARED_MEM_FLAG_INPUT   1
702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_SHARED_MEM_FLAG_OUTPUT  2
712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_SHARED_MEM_FLAG_INOUT   3
722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*
742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Parameter types
752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_NONE                     0x0
772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_VALUE_INPUT              0x1
782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_VALUE_OUTPUT             0x2
792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_VALUE_INOUT              0x3
802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_TEMP_INPUT        0x5
812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_TEMP_OUTPUT       0x6
822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_TEMP_INOUT        0x7
832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_INPUT             0xD
842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_OUTPUT            0xE
852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_INOUT             0xF
862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_INPUT_FLAG                0x1
882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_OUTPUT_FLAG               0x2
892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_MEMREF_FLAG               0x4
902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_REGISTERED_MEMREF_FLAG    0x8
912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_PARAM_TYPE_IS_TMPREF(nParamType) (((nParamType) & (SCX_PARAM_TYPE_MEMREF_FLAG | SCX_PARAM_TYPE_REGISTERED_MEMREF_FLAG)) == SCX_PARAM_TYPE_MEMREF_FLAG)
932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_MAKE_PARAM_TYPES(t0, t1, t2, t3) ((t0) | ((t1) << 4) | ((t2) << 8) | ((t3) << 12))
952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_GET_PARAM_TYPE(t, i) (((t) >> (4*i)) & 0xF)
962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*
982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * return origins
992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
1002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_ORIGIN_COMMS       2
1012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_ORIGIN_TEE         3
1022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCX_ORIGIN_TRUSTED_APP 4
1032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/*
1052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Login types
1062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
1072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#include "schannel6_logins.h"
1082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
1102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Command parameters.
1112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
1122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    a;
1152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    b;
1162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_COMMAND_PARAM_VALUE;
1172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    nDescriptor;
1212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    nSize;
1222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    nOffset;     /* Socket: 4 weak bits of the address (for alignement checks) */
1232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_COMMAND_PARAM_TEMP_MEMREF;
1252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE    hBlock;
1292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    nSize;
1302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t    nOffset;
1312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_COMMAND_PARAM_MEMREF;
1332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef union
1352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_COMMAND_PARAM_VALUE        sValue;
1372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_COMMAND_PARAM_TEMP_MEMREF  sTempMemref;
1382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_COMMAND_PARAM_MEMREF       sMemref;
1392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} SCHANNEL6_COMMAND_PARAM;
1412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t a;
1452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t b;
1462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} SCHANNEL6_ANSWER_PARAM_VALUE;
1472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t _ignored;
1512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t nSize;
1522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} SCHANNEL6_ANSWER_PARAM_SIZE;
1532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef union
1552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_ANSWER_PARAM_SIZE  sSize;
1572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_ANSWER_PARAM_VALUE sValue;
1582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} SCHANNEL6_ANSWER_PARAM;
1592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
1612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Command messages.
1622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
1632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley typedef struct
1642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
1662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
1672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMessageInfo;
1682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
1692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_COMMAND_HEADER;
1702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
1742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
1752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMessageInfo_RFU;
1762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
1772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nDeviceContextID; /* an opaque Normal World identifier for the device context */
1782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_CREATE_DEVICE_CONTEXT_COMMAND;
1792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
1832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
1842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nParamTypes;
1852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
1862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
1872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hClientSession;
1882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint64_t                      sTimeout;
1892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nCancellationID;
1902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nClientCommandIdentifier;
1912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_COMMAND_PARAM       sParams[4];
1922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_INVOKE_CLIENT_COMMAND_COMMAND;
1932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
1942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
1952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
1962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
1972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
1982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nParamTypes;
1992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
2012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nCancellationID;
2022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCTIME                        sTimeout;
2032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_UUID                        sDestinationUUID;
2042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_COMMAND_PARAM       sParams[4];
2052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nLoginType;
2062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       sLoginData[20]; /* Size depends on the login type. */
2072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_OPEN_CLIENT_SESSION_COMMAND;
2092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
2112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
2132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
2142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMemoryFlags;
2152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
2172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nBlockID;
2182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nSharedMemSize;
2192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nSharedMemStartOffset;
2202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nSharedMemDescriptors[8];
2212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_REGISTER_SHARED_MEMORY_COMMAND;
2232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
2252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
2272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
2282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMessageInfo_RFU;
2292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
2312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hBlock;
2322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_RELEASE_SHARED_MEMORY_COMMAND;
2342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
2362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
2382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
2392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMessageInfo_RFU;
2402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
2422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hClientSession;
2432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nCancellationID;
2442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_CANCEL_CLIENT_OPERATION_COMMAND;
2462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
2482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
2502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
2512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMessageInfo_RFU;
2522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
2542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hClientSession;
2552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_CLOSE_CLIENT_SESSION_COMMAND;
2572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
2592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
2612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
2622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nMessageInfo_RFU;
2632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                      hDeviceContext;
2652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_DESTROY_DEVICE_CONTEXT_COMMAND;
2672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCHANNEL6_MANAGEMENT_COMMAND_HIBERNATE            1
2692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCHANNEL6_MANAGEMENT_COMMAND_SHUTDOWN             2
2702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCHANNEL6_MANAGEMENT_COMMAND_PREPARE_FOR_CORE_OFF 3
2712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SCHANNEL6_MANAGEMENT_COMMAND_RESUME_FROM_CORE_OFF 4
2722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
2742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageSize;
2762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                       nMessageType;
2772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                      nCommand;
2782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nOperationID; /* an opaque Normal World identifier for the operation */
2792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nW3BSize;
2802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nW3BStartOffset;
2812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifdef SCHANNEL_TRUSTZONE
2822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                      nSharedMemDescriptors[128];
2832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif
2842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_MANAGEMENT_COMMAND;
2852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef union
2872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
2882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_COMMAND_HEADER                            sHeader;
2892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_CREATE_DEVICE_CONTEXT_COMMAND             sCreateDeviceContext;
2902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_DESTROY_DEVICE_CONTEXT_COMMAND            sDestroyDeviceContext;
2912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_OPEN_CLIENT_SESSION_COMMAND               sOpenClientSession;
2922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_CLOSE_CLIENT_SESSION_COMMAND              sCloseClientSession;
2932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_REGISTER_SHARED_MEMORY_COMMAND            sRegisterSharedMemory;
2942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_RELEASE_SHARED_MEMORY_COMMAND             sReleaseSharedMemory;
2952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_INVOKE_CLIENT_COMMAND_COMMAND             sInvokeClientCommand;
2962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_CANCEL_CLIENT_OPERATION_COMMAND           sCancelClientOperation;
2972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_MANAGEMENT_COMMAND                        sManagement;
2982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
2992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_COMMAND;
3002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/**
3022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Answer messages.
3032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */
3042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo;
3092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_ANSWER_HEADER;
3122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
3182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                  hDeviceContext;
3212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_CREATE_DEVICE_CONTEXT_ANSWER;
3222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nReturnOrigin;
3282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   __nReserved;
3292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_ANSWER_PARAM    sAnswers[4];
3322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_INVOKE_CLIENT_COMMAND_ANSWER;
3342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nReturnOrigin;
3402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   __nReserved;
3412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                  hClientSession;
3442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_ANSWER_PARAM    sAnswers[4];
3452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_OPEN_CLIENT_SESSION_ANSWER;
3462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
3522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_CLOSE_CLIENT_SESSION_ANSWER;
3552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
3612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   S_HANDLE                  hBlock;
3642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_REGISTER_SHARED_MEMORY_ANSWER;
3662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
3722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nBlockID;
3752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_RELEASE_SHARED_MEMORY_ANSWER;
3772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
3832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nDeviceContextID;
3862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_DESTROY_DEVICE_CONTEXT_ANSWER;
3882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
3902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
3912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
3922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
3932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
3942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
3952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
3962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_CANCEL_CLIENT_OPERATION_ANSWER;
3982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
3992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct
4002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
4012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageSize;
4022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint8_t                   nMessageType;
4032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint16_t                  nMessageInfo_RFU;
4042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nOperationID;
4052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   uint32_t                  nErrorCode;
4062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_MANAGEMENT_ANSWER;
4082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef union
4102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{
4112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_ANSWER_HEADER                    sHeader;
4122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_CREATE_DEVICE_CONTEXT_ANSWER     sCreateDeviceContext;
4132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_OPEN_CLIENT_SESSION_ANSWER       sOpenClientSession;
4142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_REGISTER_SHARED_MEMORY_ANSWER    sRegisterSharedMemory;
4152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_RELEASE_SHARED_MEMORY_ANSWER     sReleaseSharedMemory;
4162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_INVOKE_CLIENT_COMMAND_ANSWER     sInvokeClientCommand;
4172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_DESTROY_DEVICE_CONTEXT_ANSWER    sDestroyDeviceContext;
4182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_CANCEL_CLIENT_OPERATION_ANSWER   sCancelClientOperation;
4192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_CLOSE_CLIENT_SESSION_ANSWER      sCloseClientSession;
4202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley   SCHANNEL6_MANAGEMENT_ANSWER                sManagement;
4212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley}SCHANNEL6_ANSWER;
4232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley
4252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif /* __SCHANNEL6_PROTOCOL_H__ */
426