xref: /rk3399_ARM-atf/plat/imx/common/sci/svc/rm/rm_rpc_clnt.c (revision 66a387d43786cf06f1b437327a7a5e475aa301c7)
1ff2743e5SAnson Huang /*
2ff2743e5SAnson Huang  * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3ff2743e5SAnson Huang  *
4ff2743e5SAnson Huang  * SPDX-License-Identifier: BSD-3-Clause
5ff2743e5SAnson Huang  */
6ff2743e5SAnson Huang 
7ff2743e5SAnson Huang /*!
8ff2743e5SAnson Huang  * File containing client-side RPC functions for the RM service. These
9ff2743e5SAnson Huang  * functions are ported to clients that communicate to the SC.
10ff2743e5SAnson Huang  *
11ff2743e5SAnson Huang  * @addtogroup RM_SVC
12ff2743e5SAnson Huang  * @{
13ff2743e5SAnson Huang  */
14ff2743e5SAnson Huang 
15ff2743e5SAnson Huang /* Includes */
16ff2743e5SAnson Huang 
17*09d40e0eSAntonio Nino Diaz #include <stdlib.h>
18*09d40e0eSAntonio Nino Diaz 
19ff2743e5SAnson Huang #include <sci/sci_types.h>
20ff2743e5SAnson Huang #include <sci/svc/rm/sci_rm_api.h>
21ff2743e5SAnson Huang #include <sci/sci_rpc.h>
22*09d40e0eSAntonio Nino Diaz 
23ff2743e5SAnson Huang #include "sci_rm_rpc.h"
24ff2743e5SAnson Huang 
25ff2743e5SAnson Huang /* Local Defines */
26ff2743e5SAnson Huang 
27ff2743e5SAnson Huang /* Local Types */
28ff2743e5SAnson Huang 
29ff2743e5SAnson Huang /* Local Functions */
30ff2743e5SAnson Huang 
sc_rm_partition_alloc(sc_ipc_t ipc,sc_rm_pt_t * pt,sc_bool_t secure,sc_bool_t isolated,sc_bool_t restricted,sc_bool_t grant,sc_bool_t coherent)31ff2743e5SAnson Huang sc_err_t sc_rm_partition_alloc(sc_ipc_t ipc, sc_rm_pt_t *pt, sc_bool_t secure,
32ff2743e5SAnson Huang 			       sc_bool_t isolated, sc_bool_t restricted,
33ff2743e5SAnson Huang 			       sc_bool_t grant, sc_bool_t coherent)
34ff2743e5SAnson Huang {
35ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
36ff2743e5SAnson Huang 	uint8_t result;
37ff2743e5SAnson Huang 
38ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
39ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
40ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_PARTITION_ALLOC;
41ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)secure;
42ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)isolated;
43ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)restricted;
44ff2743e5SAnson Huang 	RPC_U8(&msg, 3U) = (uint8_t)grant;
45ff2743e5SAnson Huang 	RPC_U8(&msg, 4U) = (uint8_t)coherent;
46ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 3U;
47ff2743e5SAnson Huang 
48ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
49ff2743e5SAnson Huang 
50ff2743e5SAnson Huang 	result = RPC_R8(&msg);
51ff2743e5SAnson Huang 	if (pt != NULL) {
52ff2743e5SAnson Huang 		*pt = RPC_U8(&msg, 0U);
53ff2743e5SAnson Huang 	}
54ff2743e5SAnson Huang 
55ff2743e5SAnson Huang 	return (sc_err_t)result;
56ff2743e5SAnson Huang }
57ff2743e5SAnson Huang 
sc_rm_set_confidential(sc_ipc_t ipc,sc_rm_pt_t pt,sc_bool_t retro)58ff2743e5SAnson Huang sc_err_t sc_rm_set_confidential(sc_ipc_t ipc, sc_rm_pt_t pt, sc_bool_t retro)
59ff2743e5SAnson Huang {
60ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
61ff2743e5SAnson Huang 	uint8_t result;
62ff2743e5SAnson Huang 
63ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
64ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
65ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_CONFIDENTIAL;
66ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt;
67ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)retro;
68ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
69ff2743e5SAnson Huang 
70ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
71ff2743e5SAnson Huang 
72ff2743e5SAnson Huang 	result = RPC_R8(&msg);
73ff2743e5SAnson Huang 	return (sc_err_t)result;
74ff2743e5SAnson Huang }
75ff2743e5SAnson Huang 
sc_rm_partition_free(sc_ipc_t ipc,sc_rm_pt_t pt)76ff2743e5SAnson Huang sc_err_t sc_rm_partition_free(sc_ipc_t ipc, sc_rm_pt_t pt)
77ff2743e5SAnson Huang {
78ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
79ff2743e5SAnson Huang 	uint8_t result;
80ff2743e5SAnson Huang 
81ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
82ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
83ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_PARTITION_FREE;
84ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt;
85ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
86ff2743e5SAnson Huang 
87ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
88ff2743e5SAnson Huang 
89ff2743e5SAnson Huang 	result = RPC_R8(&msg);
90ff2743e5SAnson Huang 	return (sc_err_t)result;
91ff2743e5SAnson Huang }
92ff2743e5SAnson Huang 
sc_rm_get_did(sc_ipc_t ipc)93ff2743e5SAnson Huang sc_rm_did_t sc_rm_get_did(sc_ipc_t ipc)
94ff2743e5SAnson Huang {
95ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
96ff2743e5SAnson Huang 	uint8_t result;
97ff2743e5SAnson Huang 
98ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
99ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
100ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_GET_DID;
101ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 1U;
102ff2743e5SAnson Huang 
103ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
104ff2743e5SAnson Huang 
105ff2743e5SAnson Huang 	result = RPC_R8(&msg);
106ff2743e5SAnson Huang 	return (sc_rm_did_t) result;
107ff2743e5SAnson Huang }
108ff2743e5SAnson Huang 
sc_rm_partition_static(sc_ipc_t ipc,sc_rm_pt_t pt,sc_rm_did_t did)109ff2743e5SAnson Huang sc_err_t sc_rm_partition_static(sc_ipc_t ipc, sc_rm_pt_t pt, sc_rm_did_t did)
110ff2743e5SAnson Huang {
111ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
112ff2743e5SAnson Huang 	uint8_t result;
113ff2743e5SAnson Huang 
114ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
115ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
116ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_PARTITION_STATIC;
117ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt;
118ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)did;
119ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
120ff2743e5SAnson Huang 
121ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
122ff2743e5SAnson Huang 
123ff2743e5SAnson Huang 	result = RPC_R8(&msg);
124ff2743e5SAnson Huang 	return (sc_err_t)result;
125ff2743e5SAnson Huang }
126ff2743e5SAnson Huang 
sc_rm_partition_lock(sc_ipc_t ipc,sc_rm_pt_t pt)127ff2743e5SAnson Huang sc_err_t sc_rm_partition_lock(sc_ipc_t ipc, sc_rm_pt_t pt)
128ff2743e5SAnson Huang {
129ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
130ff2743e5SAnson Huang 	uint8_t result;
131ff2743e5SAnson Huang 
132ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
133ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
134ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_PARTITION_LOCK;
135ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt;
136ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
137ff2743e5SAnson Huang 
138ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
139ff2743e5SAnson Huang 
140ff2743e5SAnson Huang 	result = RPC_R8(&msg);
141ff2743e5SAnson Huang 	return (sc_err_t)result;
142ff2743e5SAnson Huang }
143ff2743e5SAnson Huang 
sc_rm_get_partition(sc_ipc_t ipc,sc_rm_pt_t * pt)144ff2743e5SAnson Huang sc_err_t sc_rm_get_partition(sc_ipc_t ipc, sc_rm_pt_t *pt)
145ff2743e5SAnson Huang {
146ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
147ff2743e5SAnson Huang 	uint8_t result;
148ff2743e5SAnson Huang 
149ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
150ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
151ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_GET_PARTITION;
152ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 1U;
153ff2743e5SAnson Huang 
154ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
155ff2743e5SAnson Huang 
156ff2743e5SAnson Huang 	result = RPC_R8(&msg);
157ff2743e5SAnson Huang 	if (pt != NULL) {
158ff2743e5SAnson Huang 		*pt = RPC_U8(&msg, 0U);
159ff2743e5SAnson Huang 	}
160ff2743e5SAnson Huang 
161ff2743e5SAnson Huang 	return (sc_err_t)result;
162ff2743e5SAnson Huang }
163ff2743e5SAnson Huang 
sc_rm_set_parent(sc_ipc_t ipc,sc_rm_pt_t pt,sc_rm_pt_t pt_parent)164ff2743e5SAnson Huang sc_err_t sc_rm_set_parent(sc_ipc_t ipc, sc_rm_pt_t pt, sc_rm_pt_t pt_parent)
165ff2743e5SAnson Huang {
166ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
167ff2743e5SAnson Huang 	uint8_t result;
168ff2743e5SAnson Huang 
169ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
170ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
171ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_PARENT;
172ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt;
173ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)pt_parent;
174ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
175ff2743e5SAnson Huang 
176ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
177ff2743e5SAnson Huang 
178ff2743e5SAnson Huang 	result = RPC_R8(&msg);
179ff2743e5SAnson Huang 	return (sc_err_t)result;
180ff2743e5SAnson Huang }
181ff2743e5SAnson Huang 
sc_rm_move_all(sc_ipc_t ipc,sc_rm_pt_t pt_src,sc_rm_pt_t pt_dst,sc_bool_t move_rsrc,sc_bool_t move_pads)182ff2743e5SAnson Huang sc_err_t sc_rm_move_all(sc_ipc_t ipc, sc_rm_pt_t pt_src, sc_rm_pt_t pt_dst,
183ff2743e5SAnson Huang 			sc_bool_t move_rsrc, sc_bool_t move_pads)
184ff2743e5SAnson Huang {
185ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
186ff2743e5SAnson Huang 	uint8_t result;
187ff2743e5SAnson Huang 
188ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
189ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
190ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_MOVE_ALL;
191ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt_src;
192ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)pt_dst;
193ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)move_rsrc;
194ff2743e5SAnson Huang 	RPC_U8(&msg, 3U) = (uint8_t)move_pads;
195ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
196ff2743e5SAnson Huang 
197ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
198ff2743e5SAnson Huang 
199ff2743e5SAnson Huang 	result = RPC_R8(&msg);
200ff2743e5SAnson Huang 	return (sc_err_t)result;
201ff2743e5SAnson Huang }
202ff2743e5SAnson Huang 
sc_rm_assign_resource(sc_ipc_t ipc,sc_rm_pt_t pt,sc_rsrc_t resource)203ff2743e5SAnson Huang sc_err_t sc_rm_assign_resource(sc_ipc_t ipc, sc_rm_pt_t pt, sc_rsrc_t resource)
204ff2743e5SAnson Huang {
205ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
206ff2743e5SAnson Huang 	uint8_t result;
207ff2743e5SAnson Huang 
208ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
209ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
210ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_ASSIGN_RESOURCE;
211ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
212ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)pt;
213ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
214ff2743e5SAnson Huang 
215ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
216ff2743e5SAnson Huang 
217ff2743e5SAnson Huang 	result = RPC_R8(&msg);
218ff2743e5SAnson Huang 	return (sc_err_t)result;
219ff2743e5SAnson Huang }
220ff2743e5SAnson Huang 
sc_rm_set_resource_movable(sc_ipc_t ipc,sc_rsrc_t resource_fst,sc_rsrc_t resource_lst,sc_bool_t movable)221ff2743e5SAnson Huang sc_err_t sc_rm_set_resource_movable(sc_ipc_t ipc, sc_rsrc_t resource_fst,
222ff2743e5SAnson Huang 				    sc_rsrc_t resource_lst, sc_bool_t movable)
223ff2743e5SAnson Huang {
224ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
225ff2743e5SAnson Huang 	uint8_t result;
226ff2743e5SAnson Huang 
227ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
228ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
229ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_RESOURCE_MOVABLE;
230ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource_fst;
231ff2743e5SAnson Huang 	RPC_U16(&msg, 2U) = (uint16_t)resource_lst;
232ff2743e5SAnson Huang 	RPC_U8(&msg, 4U) = (uint8_t)movable;
233ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 3U;
234ff2743e5SAnson Huang 
235ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
236ff2743e5SAnson Huang 
237ff2743e5SAnson Huang 	result = RPC_R8(&msg);
238ff2743e5SAnson Huang 	return (sc_err_t)result;
239ff2743e5SAnson Huang }
240ff2743e5SAnson Huang 
sc_rm_set_subsys_rsrc_movable(sc_ipc_t ipc,sc_rsrc_t resource,sc_bool_t movable)241ff2743e5SAnson Huang sc_err_t sc_rm_set_subsys_rsrc_movable(sc_ipc_t ipc, sc_rsrc_t resource,
242ff2743e5SAnson Huang 				       sc_bool_t movable)
243ff2743e5SAnson Huang {
244ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
245ff2743e5SAnson Huang 	uint8_t result;
246ff2743e5SAnson Huang 
247ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
248ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
249ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_SUBSYS_RSRC_MOVABLE;
250ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
251ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)movable;
252ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
253ff2743e5SAnson Huang 
254ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
255ff2743e5SAnson Huang 
256ff2743e5SAnson Huang 	result = RPC_R8(&msg);
257ff2743e5SAnson Huang 	return (sc_err_t)result;
258ff2743e5SAnson Huang }
259ff2743e5SAnson Huang 
sc_rm_set_master_attributes(sc_ipc_t ipc,sc_rsrc_t resource,sc_rm_spa_t sa,sc_rm_spa_t pa,sc_bool_t smmu_bypass)260ff2743e5SAnson Huang sc_err_t sc_rm_set_master_attributes(sc_ipc_t ipc, sc_rsrc_t resource,
261ff2743e5SAnson Huang 				     sc_rm_spa_t sa, sc_rm_spa_t pa,
262ff2743e5SAnson Huang 				     sc_bool_t smmu_bypass)
263ff2743e5SAnson Huang {
264ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
265ff2743e5SAnson Huang 	uint8_t result;
266ff2743e5SAnson Huang 
267ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
268ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
269ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_MASTER_ATTRIBUTES;
270ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
271ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)sa;
272ff2743e5SAnson Huang 	RPC_U8(&msg, 3U) = (uint8_t)pa;
273ff2743e5SAnson Huang 	RPC_U8(&msg, 4U) = (uint8_t)smmu_bypass;
274ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 3U;
275ff2743e5SAnson Huang 
276ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
277ff2743e5SAnson Huang 
278ff2743e5SAnson Huang 	result = RPC_R8(&msg);
279ff2743e5SAnson Huang 	return (sc_err_t)result;
280ff2743e5SAnson Huang }
281ff2743e5SAnson Huang 
sc_rm_set_master_sid(sc_ipc_t ipc,sc_rsrc_t resource,sc_rm_sid_t sid)282ff2743e5SAnson Huang sc_err_t sc_rm_set_master_sid(sc_ipc_t ipc, sc_rsrc_t resource, sc_rm_sid_t sid)
283ff2743e5SAnson Huang {
284ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
285ff2743e5SAnson Huang 	uint8_t result;
286ff2743e5SAnson Huang 
287ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
288ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
289ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_MASTER_SID;
290ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
291ff2743e5SAnson Huang 	RPC_U16(&msg, 2U) = (uint16_t)sid;
292ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
293ff2743e5SAnson Huang 
294ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
295ff2743e5SAnson Huang 
296ff2743e5SAnson Huang 	result = RPC_R8(&msg);
297ff2743e5SAnson Huang 	return (sc_err_t)result;
298ff2743e5SAnson Huang }
299ff2743e5SAnson Huang 
sc_rm_set_peripheral_permissions(sc_ipc_t ipc,sc_rsrc_t resource,sc_rm_pt_t pt,sc_rm_perm_t perm)300ff2743e5SAnson Huang sc_err_t sc_rm_set_peripheral_permissions(sc_ipc_t ipc, sc_rsrc_t resource,
301ff2743e5SAnson Huang 					  sc_rm_pt_t pt, sc_rm_perm_t perm)
302ff2743e5SAnson Huang {
303ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
304ff2743e5SAnson Huang 	uint8_t result;
305ff2743e5SAnson Huang 
306ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
307ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
308ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_PERIPHERAL_PERMISSIONS;
309ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
310ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)pt;
311ff2743e5SAnson Huang 	RPC_U8(&msg, 3U) = (uint8_t)perm;
312ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
313ff2743e5SAnson Huang 
314ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
315ff2743e5SAnson Huang 
316ff2743e5SAnson Huang 	result = RPC_R8(&msg);
317ff2743e5SAnson Huang 	return (sc_err_t)result;
318ff2743e5SAnson Huang }
319ff2743e5SAnson Huang 
sc_rm_is_resource_owned(sc_ipc_t ipc,sc_rsrc_t resource)320ff2743e5SAnson Huang sc_bool_t sc_rm_is_resource_owned(sc_ipc_t ipc, sc_rsrc_t resource)
321ff2743e5SAnson Huang {
322ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
323ff2743e5SAnson Huang 	uint8_t result;
324ff2743e5SAnson Huang 
325ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
326ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
327ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_IS_RESOURCE_OWNED;
328ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
329ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
330ff2743e5SAnson Huang 
331ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
332ff2743e5SAnson Huang 
333ff2743e5SAnson Huang 	result = RPC_R8(&msg);
334ff2743e5SAnson Huang 	return (sc_bool_t)result;
335ff2743e5SAnson Huang }
336ff2743e5SAnson Huang 
sc_rm_is_resource_master(sc_ipc_t ipc,sc_rsrc_t resource)337ff2743e5SAnson Huang sc_bool_t sc_rm_is_resource_master(sc_ipc_t ipc, sc_rsrc_t resource)
338ff2743e5SAnson Huang {
339ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
340ff2743e5SAnson Huang 	uint8_t result;
341ff2743e5SAnson Huang 
342ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
343ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
344ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_IS_RESOURCE_MASTER;
345ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
346ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
347ff2743e5SAnson Huang 
348ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
349ff2743e5SAnson Huang 
350ff2743e5SAnson Huang 	result = RPC_R8(&msg);
351ff2743e5SAnson Huang 	return (sc_bool_t)result;
352ff2743e5SAnson Huang }
353ff2743e5SAnson Huang 
sc_rm_is_resource_peripheral(sc_ipc_t ipc,sc_rsrc_t resource)354ff2743e5SAnson Huang sc_bool_t sc_rm_is_resource_peripheral(sc_ipc_t ipc, sc_rsrc_t resource)
355ff2743e5SAnson Huang {
356ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
357ff2743e5SAnson Huang 	uint8_t result;
358ff2743e5SAnson Huang 
359ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
360ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
361ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_IS_RESOURCE_PERIPHERAL;
362ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
363ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
364ff2743e5SAnson Huang 
365ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
366ff2743e5SAnson Huang 
367ff2743e5SAnson Huang 	result = RPC_R8(&msg);
368ff2743e5SAnson Huang 	return (sc_bool_t)result;
369ff2743e5SAnson Huang }
370ff2743e5SAnson Huang 
sc_rm_get_resource_info(sc_ipc_t ipc,sc_rsrc_t resource,sc_rm_sid_t * sid)371ff2743e5SAnson Huang sc_err_t sc_rm_get_resource_info(sc_ipc_t ipc, sc_rsrc_t resource,
372ff2743e5SAnson Huang 				 sc_rm_sid_t *sid)
373ff2743e5SAnson Huang {
374ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
375ff2743e5SAnson Huang 	uint8_t result;
376ff2743e5SAnson Huang 
377ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
378ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
379ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_GET_RESOURCE_INFO;
380ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)resource;
381ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
382ff2743e5SAnson Huang 
383ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
384ff2743e5SAnson Huang 
385ff2743e5SAnson Huang 	if (sid != NULL) {
386ff2743e5SAnson Huang 		*sid = RPC_U16(&msg, 0U);
387ff2743e5SAnson Huang 	}
388ff2743e5SAnson Huang 
389ff2743e5SAnson Huang 	result = RPC_R8(&msg);
390ff2743e5SAnson Huang 	return (sc_err_t)result;
391ff2743e5SAnson Huang }
392ff2743e5SAnson Huang 
sc_rm_memreg_alloc(sc_ipc_t ipc,sc_rm_mr_t * mr,sc_faddr_t addr_start,sc_faddr_t addr_end)393ff2743e5SAnson Huang sc_err_t sc_rm_memreg_alloc(sc_ipc_t ipc, sc_rm_mr_t *mr,
394ff2743e5SAnson Huang 			    sc_faddr_t addr_start, sc_faddr_t addr_end)
395ff2743e5SAnson Huang {
396ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
397ff2743e5SAnson Huang 	uint8_t result;
398ff2743e5SAnson Huang 
399ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
400ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
401ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_MEMREG_ALLOC;
402ff2743e5SAnson Huang 	RPC_U32(&msg, 0U) = (uint32_t)(addr_start >> 32U);
403ff2743e5SAnson Huang 	RPC_U32(&msg, 4U) = (uint32_t)addr_start;
404ff2743e5SAnson Huang 	RPC_U32(&msg, 8U) = (uint32_t)(addr_end >> 32U);
405ff2743e5SAnson Huang 	RPC_U32(&msg, 12U) = (uint32_t)addr_end;
406ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 5U;
407ff2743e5SAnson Huang 
408ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
409ff2743e5SAnson Huang 
410ff2743e5SAnson Huang 	result = RPC_R8(&msg);
411ff2743e5SAnson Huang 	if (mr != NULL) {
412ff2743e5SAnson Huang 		*mr = RPC_U8(&msg, 0U);
413ff2743e5SAnson Huang 	}
414ff2743e5SAnson Huang 
415ff2743e5SAnson Huang 	return (sc_err_t)result;
416ff2743e5SAnson Huang }
417ff2743e5SAnson Huang 
sc_rm_memreg_split(sc_ipc_t ipc,sc_rm_mr_t mr,sc_rm_mr_t * mr_ret,sc_faddr_t addr_start,sc_faddr_t addr_end)418ff2743e5SAnson Huang sc_err_t sc_rm_memreg_split(sc_ipc_t ipc, sc_rm_mr_t mr,
419ff2743e5SAnson Huang 			    sc_rm_mr_t *mr_ret, sc_faddr_t addr_start,
420ff2743e5SAnson Huang 			    sc_faddr_t addr_end)
421ff2743e5SAnson Huang {
422ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
423ff2743e5SAnson Huang 	uint8_t result;
424ff2743e5SAnson Huang 
425ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
426ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
427ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_MEMREG_SPLIT;
428ff2743e5SAnson Huang 	RPC_U32(&msg, 0U) = (uint32_t)(addr_start >> 32U);
429ff2743e5SAnson Huang 	RPC_U32(&msg, 4U) = (uint32_t)addr_start;
430ff2743e5SAnson Huang 	RPC_U32(&msg, 8U) = (uint32_t)(addr_end >> 32U);
431ff2743e5SAnson Huang 	RPC_U32(&msg, 12U) = (uint32_t)addr_end;
432ff2743e5SAnson Huang 	RPC_U8(&msg, 16U) = (uint8_t)mr;
433ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 6U;
434ff2743e5SAnson Huang 
435ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
436ff2743e5SAnson Huang 
437ff2743e5SAnson Huang 	result = RPC_R8(&msg);
438ff2743e5SAnson Huang 	if (mr_ret != NULL) {
439ff2743e5SAnson Huang 		*mr_ret = RPC_U8(&msg, 0U);
440ff2743e5SAnson Huang 	}
441ff2743e5SAnson Huang 
442ff2743e5SAnson Huang 	return (sc_err_t)result;
443ff2743e5SAnson Huang }
444ff2743e5SAnson Huang 
sc_rm_memreg_free(sc_ipc_t ipc,sc_rm_mr_t mr)445ff2743e5SAnson Huang sc_err_t sc_rm_memreg_free(sc_ipc_t ipc, sc_rm_mr_t mr)
446ff2743e5SAnson Huang {
447ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
448ff2743e5SAnson Huang 	uint8_t result;
449ff2743e5SAnson Huang 
450ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
451ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
452ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_MEMREG_FREE;
453ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)mr;
454ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
455ff2743e5SAnson Huang 
456ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
457ff2743e5SAnson Huang 
458ff2743e5SAnson Huang 	result = RPC_R8(&msg);
459ff2743e5SAnson Huang 	return (sc_err_t)result;
460ff2743e5SAnson Huang }
461ff2743e5SAnson Huang 
sc_rm_find_memreg(sc_ipc_t ipc,sc_rm_mr_t * mr,sc_faddr_t addr_start,sc_faddr_t addr_end)462ff2743e5SAnson Huang sc_err_t sc_rm_find_memreg(sc_ipc_t ipc, sc_rm_mr_t *mr,
463ff2743e5SAnson Huang 			   sc_faddr_t addr_start, sc_faddr_t addr_end)
464ff2743e5SAnson Huang {
465ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
466ff2743e5SAnson Huang 	uint8_t result;
467ff2743e5SAnson Huang 
468ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
469ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
470ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_FIND_MEMREG;
471ff2743e5SAnson Huang 	RPC_U32(&msg, 0U) = (uint32_t)(addr_start >> 32U);
472ff2743e5SAnson Huang 	RPC_U32(&msg, 4U) = (uint32_t)addr_start;
473ff2743e5SAnson Huang 	RPC_U32(&msg, 8U) = (uint32_t)(addr_end >> 32U);
474ff2743e5SAnson Huang 	RPC_U32(&msg, 12U) = (uint32_t)addr_end;
475ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 5U;
476ff2743e5SAnson Huang 
477ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
478ff2743e5SAnson Huang 
479ff2743e5SAnson Huang 	result = RPC_R8(&msg);
480ff2743e5SAnson Huang 	if (mr != NULL) {
481ff2743e5SAnson Huang 		*mr = RPC_U8(&msg, 0U);
482ff2743e5SAnson Huang 	}
483ff2743e5SAnson Huang 
484ff2743e5SAnson Huang 	return (sc_err_t)result;
485ff2743e5SAnson Huang }
486ff2743e5SAnson Huang 
sc_rm_assign_memreg(sc_ipc_t ipc,sc_rm_pt_t pt,sc_rm_mr_t mr)487ff2743e5SAnson Huang sc_err_t sc_rm_assign_memreg(sc_ipc_t ipc, sc_rm_pt_t pt, sc_rm_mr_t mr)
488ff2743e5SAnson Huang {
489ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
490ff2743e5SAnson Huang 	uint8_t result;
491ff2743e5SAnson Huang 
492ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
493ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
494ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_ASSIGN_MEMREG;
495ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pt;
496ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)mr;
497ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
498ff2743e5SAnson Huang 
499ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
500ff2743e5SAnson Huang 
501ff2743e5SAnson Huang 	result = RPC_R8(&msg);
502ff2743e5SAnson Huang 	return (sc_err_t)result;
503ff2743e5SAnson Huang }
504ff2743e5SAnson Huang 
sc_rm_set_memreg_permissions(sc_ipc_t ipc,sc_rm_mr_t mr,sc_rm_pt_t pt,sc_rm_perm_t perm)505ff2743e5SAnson Huang sc_err_t sc_rm_set_memreg_permissions(sc_ipc_t ipc, sc_rm_mr_t mr,
506ff2743e5SAnson Huang 				      sc_rm_pt_t pt, sc_rm_perm_t perm)
507ff2743e5SAnson Huang {
508ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
509ff2743e5SAnson Huang 	uint8_t result;
510ff2743e5SAnson Huang 
511ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
512ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
513ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_MEMREG_PERMISSIONS;
514ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)mr;
515ff2743e5SAnson Huang 	RPC_U8(&msg, 1U) = (uint8_t)pt;
516ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)perm;
517ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
518ff2743e5SAnson Huang 
519ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
520ff2743e5SAnson Huang 
521ff2743e5SAnson Huang 	result = RPC_R8(&msg);
522ff2743e5SAnson Huang 	return (sc_err_t)result;
523ff2743e5SAnson Huang }
524ff2743e5SAnson Huang 
sc_rm_is_memreg_owned(sc_ipc_t ipc,sc_rm_mr_t mr)525ff2743e5SAnson Huang sc_bool_t sc_rm_is_memreg_owned(sc_ipc_t ipc, sc_rm_mr_t mr)
526ff2743e5SAnson Huang {
527ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
528ff2743e5SAnson Huang 	uint8_t result;
529ff2743e5SAnson Huang 
530ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
531ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
532ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_IS_MEMREG_OWNED;
533ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)mr;
534ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
535ff2743e5SAnson Huang 
536ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
537ff2743e5SAnson Huang 
538ff2743e5SAnson Huang 	result = RPC_R8(&msg);
539ff2743e5SAnson Huang 	return (sc_bool_t)result;
540ff2743e5SAnson Huang }
541ff2743e5SAnson Huang 
sc_rm_get_memreg_info(sc_ipc_t ipc,sc_rm_mr_t mr,sc_faddr_t * addr_start,sc_faddr_t * addr_end)542ff2743e5SAnson Huang sc_err_t sc_rm_get_memreg_info(sc_ipc_t ipc, sc_rm_mr_t mr,
543ff2743e5SAnson Huang 			       sc_faddr_t *addr_start, sc_faddr_t *addr_end)
544ff2743e5SAnson Huang {
545ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
546ff2743e5SAnson Huang 	uint8_t result;
547ff2743e5SAnson Huang 
548ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
549ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
550ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_GET_MEMREG_INFO;
551ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)mr;
552ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
553ff2743e5SAnson Huang 
554ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
555ff2743e5SAnson Huang 
556ff2743e5SAnson Huang 	if (addr_start != NULL) {
557ff2743e5SAnson Huang 		*addr_start =
558ff2743e5SAnson Huang 		    ((uint64_t) RPC_U32(&msg, 0U) << 32U) | RPC_U32(&msg, 4U);
559ff2743e5SAnson Huang 	}
560ff2743e5SAnson Huang 
561ff2743e5SAnson Huang 	if (addr_end != NULL) {
562ff2743e5SAnson Huang 		*addr_end =
563ff2743e5SAnson Huang 		    ((uint64_t) RPC_U32(&msg, 8U) << 32U) | RPC_U32(&msg, 12U);
564ff2743e5SAnson Huang 	}
565ff2743e5SAnson Huang 
566ff2743e5SAnson Huang 	result = RPC_R8(&msg);
567ff2743e5SAnson Huang 	return (sc_err_t)result;
568ff2743e5SAnson Huang }
569ff2743e5SAnson Huang 
sc_rm_assign_pad(sc_ipc_t ipc,sc_rm_pt_t pt,sc_pad_t pad)570ff2743e5SAnson Huang sc_err_t sc_rm_assign_pad(sc_ipc_t ipc, sc_rm_pt_t pt, sc_pad_t pad)
571ff2743e5SAnson Huang {
572ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
573ff2743e5SAnson Huang 	uint8_t result;
574ff2743e5SAnson Huang 
575ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
576ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
577ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_ASSIGN_PAD;
578ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)pad;
579ff2743e5SAnson Huang 	RPC_U8(&msg, 2U) = (uint8_t)pt;
580ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
581ff2743e5SAnson Huang 
582ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
583ff2743e5SAnson Huang 
584ff2743e5SAnson Huang 	result = RPC_R8(&msg);
585ff2743e5SAnson Huang 	return (sc_err_t)result;
586ff2743e5SAnson Huang }
587ff2743e5SAnson Huang 
sc_rm_set_pad_movable(sc_ipc_t ipc,sc_pad_t pad_fst,sc_pad_t pad_lst,sc_bool_t movable)588ff2743e5SAnson Huang sc_err_t sc_rm_set_pad_movable(sc_ipc_t ipc, sc_pad_t pad_fst,
589ff2743e5SAnson Huang 			       sc_pad_t pad_lst, sc_bool_t movable)
590ff2743e5SAnson Huang {
591ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
592ff2743e5SAnson Huang 	uint8_t result;
593ff2743e5SAnson Huang 
594ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
595ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
596ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_SET_PAD_MOVABLE;
597ff2743e5SAnson Huang 	RPC_U16(&msg, 0U) = (uint16_t)pad_fst;
598ff2743e5SAnson Huang 	RPC_U16(&msg, 2U) = (uint16_t)pad_lst;
599ff2743e5SAnson Huang 	RPC_U8(&msg, 4U) = (uint8_t)movable;
600ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 3U;
601ff2743e5SAnson Huang 
602ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
603ff2743e5SAnson Huang 
604ff2743e5SAnson Huang 	result = RPC_R8(&msg);
605ff2743e5SAnson Huang 	return (sc_err_t)result;
606ff2743e5SAnson Huang }
607ff2743e5SAnson Huang 
sc_rm_is_pad_owned(sc_ipc_t ipc,sc_pad_t pad)608ff2743e5SAnson Huang sc_bool_t sc_rm_is_pad_owned(sc_ipc_t ipc, sc_pad_t pad)
609ff2743e5SAnson Huang {
610ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
611ff2743e5SAnson Huang 	uint8_t result;
612ff2743e5SAnson Huang 
613ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
614ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
615ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_IS_PAD_OWNED;
616ff2743e5SAnson Huang 	RPC_U8(&msg, 0U) = (uint8_t)pad;
617ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 2U;
618ff2743e5SAnson Huang 
619ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
620ff2743e5SAnson Huang 
621ff2743e5SAnson Huang 	result = RPC_R8(&msg);
622ff2743e5SAnson Huang 	return (sc_bool_t)result;
623ff2743e5SAnson Huang }
624ff2743e5SAnson Huang 
sc_rm_dump(sc_ipc_t ipc)625ff2743e5SAnson Huang void sc_rm_dump(sc_ipc_t ipc)
626ff2743e5SAnson Huang {
627ff2743e5SAnson Huang 	sc_rpc_msg_t msg;
628ff2743e5SAnson Huang 
629ff2743e5SAnson Huang 	RPC_VER(&msg) = SC_RPC_VERSION;
630ff2743e5SAnson Huang 	RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_RM;
631ff2743e5SAnson Huang 	RPC_FUNC(&msg) = (uint8_t)RM_FUNC_DUMP;
632ff2743e5SAnson Huang 	RPC_SIZE(&msg) = 1U;
633ff2743e5SAnson Huang 
634ff2743e5SAnson Huang 	sc_call_rpc(ipc, &msg, SC_FALSE);
635ff2743e5SAnson Huang }
636ff2743e5SAnson Huang 
637ff2743e5SAnson Huang /**@}*/
638