GNU Linux-libre 5.19-rc6-gnu
[releases.git] / drivers / greybus / arpc.h
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 */