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