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