summaryrefslogtreecommitdiff
path: root/arch/arm/include/asm/mach-imx/sci/rpc.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/include/asm/mach-imx/sci/rpc.h')
-rw-r--r--arch/arm/include/asm/mach-imx/sci/rpc.h38
1 files changed, 10 insertions, 28 deletions
diff --git a/arch/arm/include/asm/mach-imx/sci/rpc.h b/arch/arm/include/asm/mach-imx/sci/rpc.h
index 5c46855344..4105bde1f4 100644
--- a/arch/arm/include/asm/mach-imx/sci/rpc.h
+++ b/arch/arm/include/asm/mach-imx/sci/rpc.h
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Freescale Semiconductor, Inc.
- * Copyright 2017-2018 NXP
+ * Copyright 2017-2019 NXP
*
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -20,7 +20,7 @@
/* Defines */
#define SCFW_API_VERSION_MAJOR 1U
-#define SCFW_API_VERSION_MINOR 7U
+#define SCFW_API_VERSION_MINOR 15U
#define SC_RPC_VERSION 1U
@@ -31,9 +31,13 @@
#define RPC_SVC(MESG) ((MESG)->svc)
#define RPC_FUNC(MESG) ((MESG)->func)
#define RPC_R8(MESG) ((MESG)->func)
+#define RPC_I64(MESG, IDX) (I64(RPC_U32((MESG), (IDX))) << 32ULL) \
+ | I64(RPC_U32((MESG), (IDX) + 4U))
#define RPC_I32(MESG, IDX) ((MESG)->DATA.i32[(IDX) / 4U])
#define RPC_I16(MESG, IDX) ((MESG)->DATA.i16[(IDX) / 2U])
#define RPC_I8(MESG, IDX) ((MESG)->DATA.i8[(IDX)])
+#define RPC_U64(MESG, IDX) (U64(RPC_U32((MESG), (IDX))) << 32ULL) \
+ | U64(RPC_U32((MESG), (IDX) + 4U))
#define RPC_U32(MESG, IDX) ((MESG)->DATA.u32[(IDX) / 4U])
#define RPC_U16(MESG, IDX) ((MESG)->DATA.u16[(IDX) / 2U])
#define RPC_U8(MESG, IDX) ((MESG)->DATA.u8[(IDX)])
@@ -56,11 +60,15 @@
#define SC_RPC_ASYNC_STATE_WR_ACTIVE 4U
#define SC_RPC_ASYNC_STATE_WR_DONE 5U
+/* SC -> Client general-purpose MU IRQs */
#define SC_RPC_MU_GIR_SVC 0x1U
#define SC_RPC_MU_GIR_WAKE 0x2U
#define SC_RPC_MU_GIR_BOOT 0x4U
#define SC_RPC_MU_GIR_DBG 0x8U
+/* Client -> SC general-purpose MU IRQs */
+#define SC_RPC_MU_GIR_RST 0x1U
+
#define I8(X) ((int8_t) (X))
#define I16(X) ((int16_t) (X))
#define I32(X) ((int32_t) (X))
@@ -131,31 +139,5 @@ typedef struct
*/
void sc_call_rpc(sc_ipc_t ipc, sc_rpc_msg_t *msg, sc_bool_t no_resp);
-/*!
- * This is an internal function to dispath an RPC call that has
- * arrived via IPC over an MU. It is called by server-side SCFW.
- *
- * @param[in] mu MU message arrived on
- * @param[in,out] msg handle to a message
- *
- * The function result is returned in \a msg.
- */
-void sc_rpc_dispatch(sc_rsrc_t mu, sc_rpc_msg_t *msg);
-
-/*!
- * This function translates an RPC message and forwards on to the
- * normal RPC API. It is used only by hypervisors.
- *
- * @param[in] ipc IPC handle
- * @param[in,out] msg handle to a message
- *
- * This function decodes a message, calls macros to translate the
- * resources, pads, addresses, partitions, memory regions, etc. and
- * then forwards on to the hypervisors SCFW API.Return results are
- * translated back abd placed back into the message to be returned
- * to the original API.
- */
-void sc_rpc_xlate(sc_ipc_t ipc, sc_rpc_msg_t *msg);
-
#endif /* SC_RPC_H */