/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause) */
/*
 * Copyright(c) 2016 Google Inc. All rights reserved.
 * Copyright(c) 2016 Linaro Ltd. All rights reserved.
 */

#ifndef __ARPC_H
#define __ARPC_H

/* APBridgeA RPC (ARPC) */

enum arpc_result {
	ARPC_SUCCESS		= 0x00,
	ARPC_NO_MEMORY		= 0x01,
	ARPC_INVALID		= 0x02,
	ARPC_TIMEOUT		= 0x03,
	ARPC_UNKNOWN_ERROR	= 0xff,
};

struct arpc_request_message {
	__le16	id;		/* RPC unique id */
	__le16	size;		/* Size in bytes of header + payload */
	__u8	type;		/* RPC type */
	__u8	data[];	/* ARPC data */
} __packed;

struct arpc_response_message {
	__le16	id;		/* RPC unique id */
	__u8	result;		/* Result of RPC */
} __packed;

/* ARPC requests */
#define ARPC_TYPE_CPORT_CONNECTED		0x01
#define ARPC_TYPE_CPORT_QUIESCE			0x02
#define ARPC_TYPE_CPORT_CLEAR			0x03
#define ARPC_TYPE_CPORT_FLUSH			0x04
#define ARPC_TYPE_CPORT_SHUTDOWN		0x05

struct arpc_cport_connected_req {
	__le16 cport_id;
} __packed;

struct arpc_cport_quiesce_req {
	__le16 cport_id;
	__le16 peer_space;
	__le16 timeout;
} __packed;

struct arpc_cport_clear_req {
	__le16 cport_id;
} __packed;

struct arpc_cport_flush_req {
	__le16 cport_id;
} __packed;

struct arpc_cport_shutdown_req {
	__le16 cport_id;
	__le16 timeout;
	__u8 phase;
} __packed;

#endif	/* __ARPC_H */
