linux/drivers/greybus/arpc.h
<<
>>
Prefs
   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
  12enum 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
  20struct 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[0];        /* ARPC data */
  25} __packed;
  26
  27struct 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
  39struct arpc_cport_connected_req {
  40        __le16 cport_id;
  41} __packed;
  42
  43struct arpc_cport_quiesce_req {
  44        __le16 cport_id;
  45        __le16 peer_space;
  46        __le16 timeout;
  47} __packed;
  48
  49struct arpc_cport_clear_req {
  50        __le16 cport_id;
  51} __packed;
  52
  53struct arpc_cport_flush_req {
  54        __le16 cport_id;
  55} __packed;
  56
  57struct arpc_cport_shutdown_req {
  58        __le16 cport_id;
  59        __le16 timeout;
  60        __u8 phase;
  61} __packed;
  62
  63#endif  /* __ARPC_H */
  64