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