diff options
Diffstat (limited to 'include/linux/firmware/imx/ipc.h')
-rw-r--r-- | include/linux/firmware/imx/ipc.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/include/linux/firmware/imx/ipc.h b/include/linux/firmware/imx/ipc.h new file mode 100644 index 000000000000..6312c8cb084a --- /dev/null +++ b/include/linux/firmware/imx/ipc.h | |||
@@ -0,0 +1,59 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0+ */ | ||
2 | /* | ||
3 | * Copyright 2018 NXP | ||
4 | * | ||
5 | * Header file for the IPC implementation. | ||
6 | */ | ||
7 | |||
8 | #ifndef _SC_IPC_H | ||
9 | #define _SC_IPC_H | ||
10 | |||
11 | #include <linux/device.h> | ||
12 | #include <linux/types.h> | ||
13 | |||
14 | #define IMX_SC_RPC_VERSION 1 | ||
15 | #define IMX_SC_RPC_MAX_MSG 8 | ||
16 | |||
17 | struct imx_sc_ipc; | ||
18 | |||
19 | enum imx_sc_rpc_svc { | ||
20 | IMX_SC_RPC_SVC_UNKNOWN = 0, | ||
21 | IMX_SC_RPC_SVC_RETURN = 1, | ||
22 | IMX_SC_RPC_SVC_PM = 2, | ||
23 | IMX_SC_RPC_SVC_RM = 3, | ||
24 | IMX_SC_RPC_SVC_TIMER = 5, | ||
25 | IMX_SC_RPC_SVC_PAD = 6, | ||
26 | IMX_SC_RPC_SVC_MISC = 7, | ||
27 | IMX_SC_RPC_SVC_IRQ = 8, | ||
28 | IMX_SC_RPC_SVC_ABORT = 9 | ||
29 | }; | ||
30 | |||
31 | struct imx_sc_rpc_msg { | ||
32 | uint8_t ver; | ||
33 | uint8_t size; | ||
34 | uint8_t svc; | ||
35 | uint8_t func; | ||
36 | }; | ||
37 | |||
38 | /* | ||
39 | * This is an function to send an RPC message over an IPC channel. | ||
40 | * It is called by client-side SCFW API function shims. | ||
41 | * | ||
42 | * @param[in] ipc IPC handle | ||
43 | * @param[in,out] msg handle to a message | ||
44 | * @param[in] have_resp response flag | ||
45 | * | ||
46 | * If have_resp is true then this function waits for a response | ||
47 | * and returns the result in msg. | ||
48 | */ | ||
49 | int imx_scu_call_rpc(struct imx_sc_ipc *ipc, void *msg, bool have_resp); | ||
50 | |||
51 | /* | ||
52 | * This function gets the default ipc handle used by SCU | ||
53 | * | ||
54 | * @param[out] ipc sc ipc handle | ||
55 | * | ||
56 | * @return Returns an error code (0 = success, failed if < 0) | ||
57 | */ | ||
58 | int imx_scu_get_handle(struct imx_sc_ipc **ipc); | ||
59 | #endif /* _SC_IPC_H */ | ||