1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright(c) 2016 Google Inc. All rights reserved. 4*4882a593Smuzhiyun * Copyright(c) 2016 Linaro Ltd. All rights reserved. 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef __ARPC_H 8*4882a593Smuzhiyun #define __ARPC_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* APBridgeA RPC (ARPC) */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun enum arpc_result { 13*4882a593Smuzhiyun ARPC_SUCCESS = 0x00, 14*4882a593Smuzhiyun ARPC_NO_MEMORY = 0x01, 15*4882a593Smuzhiyun ARPC_INVALID = 0x02, 16*4882a593Smuzhiyun ARPC_TIMEOUT = 0x03, 17*4882a593Smuzhiyun ARPC_UNKNOWN_ERROR = 0xff, 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct arpc_request_message { 21*4882a593Smuzhiyun __le16 id; /* RPC unique id */ 22*4882a593Smuzhiyun __le16 size; /* Size in bytes of header + payload */ 23*4882a593Smuzhiyun __u8 type; /* RPC type */ 24*4882a593Smuzhiyun __u8 data[]; /* ARPC data */ 25*4882a593Smuzhiyun } __packed; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun struct arpc_response_message { 28*4882a593Smuzhiyun __le16 id; /* RPC unique id */ 29*4882a593Smuzhiyun __u8 result; /* Result of RPC */ 30*4882a593Smuzhiyun } __packed; 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* ARPC requests */ 33*4882a593Smuzhiyun #define ARPC_TYPE_CPORT_CONNECTED 0x01 34*4882a593Smuzhiyun #define ARPC_TYPE_CPORT_QUIESCE 0x02 35*4882a593Smuzhiyun #define ARPC_TYPE_CPORT_CLEAR 0x03 36*4882a593Smuzhiyun #define ARPC_TYPE_CPORT_FLUSH 0x04 37*4882a593Smuzhiyun #define ARPC_TYPE_CPORT_SHUTDOWN 0x05 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun struct arpc_cport_connected_req { 40*4882a593Smuzhiyun __le16 cport_id; 41*4882a593Smuzhiyun } __packed; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun struct arpc_cport_quiesce_req { 44*4882a593Smuzhiyun __le16 cport_id; 45*4882a593Smuzhiyun __le16 peer_space; 46*4882a593Smuzhiyun __le16 timeout; 47*4882a593Smuzhiyun } __packed; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun struct arpc_cport_clear_req { 50*4882a593Smuzhiyun __le16 cport_id; 51*4882a593Smuzhiyun } __packed; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun struct arpc_cport_flush_req { 54*4882a593Smuzhiyun __le16 cport_id; 55*4882a593Smuzhiyun } __packed; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun struct arpc_cport_shutdown_req { 58*4882a593Smuzhiyun __le16 cport_id; 59*4882a593Smuzhiyun __le16 timeout; 60*4882a593Smuzhiyun __u8 phase; 61*4882a593Smuzhiyun } __packed; 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun #endif /* __ARPC_H */ 64