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 PAD service. These
9ff2743e5SAnson Huang * functions are ported to clients that communicate to the SC.
10ff2743e5SAnson Huang *
11ff2743e5SAnson Huang * @addtogroup PAD_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/svc/pad/sci_pad_api.h>
22ff2743e5SAnson Huang #include <sci/sci_rpc.h>
23ff2743e5SAnson Huang #include "sci_pad_rpc.h"
24ff2743e5SAnson Huang
25ff2743e5SAnson Huang /* Local Defines */
26ff2743e5SAnson Huang
27ff2743e5SAnson Huang /* Local Types */
28ff2743e5SAnson Huang
29ff2743e5SAnson Huang /* Local Functions */
30ff2743e5SAnson Huang
sc_pad_set_mux(sc_ipc_t ipc,sc_pad_t pad,uint8_t mux,sc_pad_config_t config,sc_pad_iso_t iso)31ff2743e5SAnson Huang sc_err_t sc_pad_set_mux(sc_ipc_t ipc, sc_pad_t pad,
32ff2743e5SAnson Huang uint8_t mux, sc_pad_config_t config, sc_pad_iso_t iso)
33ff2743e5SAnson Huang {
34ff2743e5SAnson Huang sc_rpc_msg_t msg;
35ff2743e5SAnson Huang uint8_t result;
36ff2743e5SAnson Huang
37ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
38ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
39ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_MUX;
40ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
41ff2743e5SAnson Huang RPC_U8(&msg, 2U) = (uint8_t)mux;
42ff2743e5SAnson Huang RPC_U8(&msg, 3U) = (uint8_t)config;
43ff2743e5SAnson Huang RPC_U8(&msg, 4U) = (uint8_t)iso;
44ff2743e5SAnson Huang RPC_SIZE(&msg) = 3U;
45ff2743e5SAnson Huang
46ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
47ff2743e5SAnson Huang
48ff2743e5SAnson Huang result = RPC_R8(&msg);
49ff2743e5SAnson Huang return (sc_err_t)result;
50ff2743e5SAnson Huang }
51ff2743e5SAnson Huang
sc_pad_get_mux(sc_ipc_t ipc,sc_pad_t pad,uint8_t * mux,sc_pad_config_t * config,sc_pad_iso_t * iso)52ff2743e5SAnson Huang sc_err_t sc_pad_get_mux(sc_ipc_t ipc, sc_pad_t pad,
53ff2743e5SAnson Huang uint8_t *mux, sc_pad_config_t *config,
54ff2743e5SAnson Huang sc_pad_iso_t *iso)
55ff2743e5SAnson Huang {
56ff2743e5SAnson Huang sc_rpc_msg_t msg;
57ff2743e5SAnson Huang uint8_t result;
58ff2743e5SAnson Huang
59ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
60ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
61ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_MUX;
62ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
63ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
64ff2743e5SAnson Huang
65ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
66ff2743e5SAnson Huang
67ff2743e5SAnson Huang result = RPC_R8(&msg);
68ff2743e5SAnson Huang if (mux != NULL) {
69ff2743e5SAnson Huang *mux = RPC_U8(&msg, 0U);
70ff2743e5SAnson Huang }
71ff2743e5SAnson Huang
72ff2743e5SAnson Huang if (config != NULL) {
73ff2743e5SAnson Huang *config = RPC_U8(&msg, 1U);
74ff2743e5SAnson Huang }
75ff2743e5SAnson Huang
76ff2743e5SAnson Huang if (iso != NULL) {
77ff2743e5SAnson Huang *iso = RPC_U8(&msg, 2U);
78ff2743e5SAnson Huang }
79ff2743e5SAnson Huang
80ff2743e5SAnson Huang return (sc_err_t)result;
81ff2743e5SAnson Huang }
82ff2743e5SAnson Huang
sc_pad_set_gp(sc_ipc_t ipc,sc_pad_t pad,uint32_t ctrl)83ff2743e5SAnson Huang sc_err_t sc_pad_set_gp(sc_ipc_t ipc, sc_pad_t pad, uint32_t ctrl)
84ff2743e5SAnson Huang {
85ff2743e5SAnson Huang sc_rpc_msg_t msg;
86ff2743e5SAnson Huang uint8_t result;
87ff2743e5SAnson Huang
88ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
89ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
90ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_GP;
91ff2743e5SAnson Huang RPC_U32(&msg, 0U) = (uint32_t)ctrl;
92ff2743e5SAnson Huang RPC_U16(&msg, 4U) = (uint16_t)pad;
93ff2743e5SAnson Huang RPC_SIZE(&msg) = 3U;
94ff2743e5SAnson Huang
95ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
96ff2743e5SAnson Huang
97ff2743e5SAnson Huang result = RPC_R8(&msg);
98ff2743e5SAnson Huang return (sc_err_t)result;
99ff2743e5SAnson Huang }
100ff2743e5SAnson Huang
sc_pad_get_gp(sc_ipc_t ipc,sc_pad_t pad,uint32_t * ctrl)101ff2743e5SAnson Huang sc_err_t sc_pad_get_gp(sc_ipc_t ipc, sc_pad_t pad, uint32_t *ctrl)
102ff2743e5SAnson Huang {
103ff2743e5SAnson Huang sc_rpc_msg_t msg;
104ff2743e5SAnson Huang uint8_t result;
105ff2743e5SAnson Huang
106ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
107ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
108ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_GP;
109ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
110ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
111ff2743e5SAnson Huang
112ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
113ff2743e5SAnson Huang
114ff2743e5SAnson Huang if (ctrl != NULL) {
115ff2743e5SAnson Huang *ctrl = RPC_U32(&msg, 0U);
116ff2743e5SAnson Huang }
117ff2743e5SAnson Huang
118ff2743e5SAnson Huang result = RPC_R8(&msg);
119ff2743e5SAnson Huang return (sc_err_t)result;
120ff2743e5SAnson Huang }
121ff2743e5SAnson Huang
sc_pad_set_wakeup(sc_ipc_t ipc,sc_pad_t pad,sc_pad_wakeup_t wakeup)122ff2743e5SAnson Huang sc_err_t sc_pad_set_wakeup(sc_ipc_t ipc, sc_pad_t pad, sc_pad_wakeup_t wakeup)
123ff2743e5SAnson Huang {
124ff2743e5SAnson Huang sc_rpc_msg_t msg;
125ff2743e5SAnson Huang uint8_t result;
126ff2743e5SAnson Huang
127ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
128ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
129ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_WAKEUP;
130ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
131ff2743e5SAnson Huang RPC_U8(&msg, 2U) = (uint8_t)wakeup;
132ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
133ff2743e5SAnson Huang
134ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
135ff2743e5SAnson Huang
136ff2743e5SAnson Huang result = RPC_R8(&msg);
137ff2743e5SAnson Huang return (sc_err_t)result;
138ff2743e5SAnson Huang }
139ff2743e5SAnson Huang
sc_pad_get_wakeup(sc_ipc_t ipc,sc_pad_t pad,sc_pad_wakeup_t * wakeup)140ff2743e5SAnson Huang sc_err_t sc_pad_get_wakeup(sc_ipc_t ipc, sc_pad_t pad, sc_pad_wakeup_t *wakeup)
141ff2743e5SAnson Huang {
142ff2743e5SAnson Huang sc_rpc_msg_t msg;
143ff2743e5SAnson Huang uint8_t result;
144ff2743e5SAnson Huang
145ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
146ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
147ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_WAKEUP;
148ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
149ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
150ff2743e5SAnson Huang
151ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
152ff2743e5SAnson Huang
153ff2743e5SAnson Huang result = RPC_R8(&msg);
154ff2743e5SAnson Huang if (wakeup != NULL) {
155ff2743e5SAnson Huang *wakeup = RPC_U8(&msg, 0U);
156ff2743e5SAnson Huang }
157ff2743e5SAnson Huang
158ff2743e5SAnson Huang return (sc_err_t)result;
159ff2743e5SAnson Huang }
160ff2743e5SAnson Huang
sc_pad_set_all(sc_ipc_t ipc,sc_pad_t pad,uint8_t mux,sc_pad_config_t config,sc_pad_iso_t iso,uint32_t ctrl,sc_pad_wakeup_t wakeup)161ff2743e5SAnson Huang sc_err_t sc_pad_set_all(sc_ipc_t ipc, sc_pad_t pad, uint8_t mux,
162ff2743e5SAnson Huang sc_pad_config_t config, sc_pad_iso_t iso, uint32_t ctrl,
163ff2743e5SAnson Huang sc_pad_wakeup_t wakeup)
164ff2743e5SAnson Huang {
165ff2743e5SAnson Huang sc_rpc_msg_t msg;
166ff2743e5SAnson Huang uint8_t result;
167ff2743e5SAnson Huang
168ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
169ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
170ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_ALL;
171ff2743e5SAnson Huang RPC_U32(&msg, 0U) = (uint32_t)ctrl;
172ff2743e5SAnson Huang RPC_U16(&msg, 4U) = (uint16_t)pad;
173ff2743e5SAnson Huang RPC_U8(&msg, 6U) = (uint8_t)mux;
174ff2743e5SAnson Huang RPC_U8(&msg, 7U) = (uint8_t)config;
175ff2743e5SAnson Huang RPC_U8(&msg, 8U) = (uint8_t)iso;
176ff2743e5SAnson Huang RPC_U8(&msg, 9U) = (uint8_t)wakeup;
177ff2743e5SAnson Huang RPC_SIZE(&msg) = 4U;
178ff2743e5SAnson Huang
179ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
180ff2743e5SAnson Huang
181ff2743e5SAnson Huang result = RPC_R8(&msg);
182ff2743e5SAnson Huang return (sc_err_t)result;
183ff2743e5SAnson Huang }
184ff2743e5SAnson Huang
sc_pad_get_all(sc_ipc_t ipc,sc_pad_t pad,uint8_t * mux,sc_pad_config_t * config,sc_pad_iso_t * iso,uint32_t * ctrl,sc_pad_wakeup_t * wakeup)185ff2743e5SAnson Huang sc_err_t sc_pad_get_all(sc_ipc_t ipc, sc_pad_t pad, uint8_t *mux,
186ff2743e5SAnson Huang sc_pad_config_t *config, sc_pad_iso_t *iso,
187ff2743e5SAnson Huang uint32_t *ctrl, sc_pad_wakeup_t *wakeup)
188ff2743e5SAnson Huang {
189ff2743e5SAnson Huang sc_rpc_msg_t msg;
190ff2743e5SAnson Huang uint8_t result;
191ff2743e5SAnson Huang
192ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
193ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
194ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_ALL;
195ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
196ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
197ff2743e5SAnson Huang
198ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
199ff2743e5SAnson Huang
200ff2743e5SAnson Huang if (ctrl != NULL) {
201ff2743e5SAnson Huang *ctrl = RPC_U32(&msg, 0U);
202ff2743e5SAnson Huang }
203ff2743e5SAnson Huang
204ff2743e5SAnson Huang result = RPC_R8(&msg);
205ff2743e5SAnson Huang if (mux != NULL) {
206ff2743e5SAnson Huang *mux = RPC_U8(&msg, 4U);
207ff2743e5SAnson Huang }
208ff2743e5SAnson Huang
209ff2743e5SAnson Huang if (config != NULL) {
210ff2743e5SAnson Huang *config = RPC_U8(&msg, 5U);
211ff2743e5SAnson Huang }
212ff2743e5SAnson Huang
213ff2743e5SAnson Huang if (iso != NULL) {
214ff2743e5SAnson Huang *iso = RPC_U8(&msg, 6U);
215ff2743e5SAnson Huang }
216ff2743e5SAnson Huang
217ff2743e5SAnson Huang if (wakeup != NULL) {
218ff2743e5SAnson Huang *wakeup = RPC_U8(&msg, 7U);
219ff2743e5SAnson Huang }
220ff2743e5SAnson Huang
221ff2743e5SAnson Huang return (sc_err_t)result;
222ff2743e5SAnson Huang }
223ff2743e5SAnson Huang
sc_pad_set(sc_ipc_t ipc,sc_pad_t pad,uint32_t val)224ff2743e5SAnson Huang sc_err_t sc_pad_set(sc_ipc_t ipc, sc_pad_t pad, uint32_t val)
225ff2743e5SAnson Huang {
226ff2743e5SAnson Huang sc_rpc_msg_t msg;
227ff2743e5SAnson Huang uint8_t result;
228ff2743e5SAnson Huang
229ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
230ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
231ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET;
232ff2743e5SAnson Huang RPC_U32(&msg, 0U) = (uint32_t)val;
233ff2743e5SAnson Huang RPC_U16(&msg, 4U) = (uint16_t)pad;
234ff2743e5SAnson Huang RPC_SIZE(&msg) = 3U;
235ff2743e5SAnson Huang
236ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
237ff2743e5SAnson Huang
238ff2743e5SAnson Huang result = RPC_R8(&msg);
239ff2743e5SAnson Huang return (sc_err_t)result;
240ff2743e5SAnson Huang }
241ff2743e5SAnson Huang
sc_pad_get(sc_ipc_t ipc,sc_pad_t pad,uint32_t * val)242ff2743e5SAnson Huang sc_err_t sc_pad_get(sc_ipc_t ipc, sc_pad_t pad, uint32_t *val)
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_PAD;
249ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET;
250ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
251ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
252ff2743e5SAnson Huang
253ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
254ff2743e5SAnson Huang
255ff2743e5SAnson Huang if (val != NULL) {
256ff2743e5SAnson Huang *val = RPC_U32(&msg, 0U);
257ff2743e5SAnson Huang }
258ff2743e5SAnson Huang
259ff2743e5SAnson Huang result = RPC_R8(&msg);
260ff2743e5SAnson Huang return (sc_err_t)result;
261ff2743e5SAnson Huang }
262ff2743e5SAnson Huang
sc_pad_set_gp_28fdsoi(sc_ipc_t ipc,sc_pad_t pad,sc_pad_28fdsoi_dse_t dse,sc_pad_28fdsoi_ps_t ps)263ff2743e5SAnson Huang sc_err_t sc_pad_set_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
264ff2743e5SAnson Huang sc_pad_28fdsoi_dse_t dse, sc_pad_28fdsoi_ps_t ps)
265ff2743e5SAnson Huang {
266ff2743e5SAnson Huang sc_rpc_msg_t msg;
267ff2743e5SAnson Huang uint8_t result;
268ff2743e5SAnson Huang
269ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
270ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
271ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_GP_28FDSOI;
272ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
273ff2743e5SAnson Huang RPC_U8(&msg, 2U) = (uint8_t)dse;
274ff2743e5SAnson Huang RPC_U8(&msg, 3U) = (uint8_t)ps;
275ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
276ff2743e5SAnson Huang
277ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
278ff2743e5SAnson Huang
279ff2743e5SAnson Huang result = RPC_R8(&msg);
280ff2743e5SAnson Huang return (sc_err_t)result;
281ff2743e5SAnson Huang }
282ff2743e5SAnson Huang
sc_pad_get_gp_28fdsoi(sc_ipc_t ipc,sc_pad_t pad,sc_pad_28fdsoi_dse_t * dse,sc_pad_28fdsoi_ps_t * ps)283ff2743e5SAnson Huang sc_err_t sc_pad_get_gp_28fdsoi(sc_ipc_t ipc, sc_pad_t pad,
284ff2743e5SAnson Huang sc_pad_28fdsoi_dse_t *dse,
285ff2743e5SAnson Huang sc_pad_28fdsoi_ps_t *ps)
286ff2743e5SAnson Huang {
287ff2743e5SAnson Huang sc_rpc_msg_t msg;
288ff2743e5SAnson Huang uint8_t result;
289ff2743e5SAnson Huang
290ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
291ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
292ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_GP_28FDSOI;
293ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
294ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
295ff2743e5SAnson Huang
296ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
297ff2743e5SAnson Huang
298ff2743e5SAnson Huang result = RPC_R8(&msg);
299ff2743e5SAnson Huang if (dse != NULL) {
300ff2743e5SAnson Huang *dse = RPC_U8(&msg, 0U);
301ff2743e5SAnson Huang }
302ff2743e5SAnson Huang
303ff2743e5SAnson Huang if (ps != NULL) {
304ff2743e5SAnson Huang *ps = RPC_U8(&msg, 1U);
305ff2743e5SAnson Huang }
306ff2743e5SAnson Huang
307ff2743e5SAnson Huang return (sc_err_t)result;
308ff2743e5SAnson Huang }
309ff2743e5SAnson Huang
sc_pad_set_gp_28fdsoi_hsic(sc_ipc_t ipc,sc_pad_t pad,sc_pad_28fdsoi_dse_t dse,sc_bool_t hys,sc_pad_28fdsoi_pus_t pus,sc_bool_t pke,sc_bool_t pue)310ff2743e5SAnson Huang sc_err_t sc_pad_set_gp_28fdsoi_hsic(sc_ipc_t ipc, sc_pad_t pad,
311ff2743e5SAnson Huang sc_pad_28fdsoi_dse_t dse, sc_bool_t hys,
312ff2743e5SAnson Huang sc_pad_28fdsoi_pus_t pus, sc_bool_t pke,
313ff2743e5SAnson Huang sc_bool_t pue)
314ff2743e5SAnson Huang {
315ff2743e5SAnson Huang sc_rpc_msg_t msg;
316ff2743e5SAnson Huang uint8_t result;
317ff2743e5SAnson Huang
318ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
319ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
320ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_GP_28FDSOI_HSIC;
321ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
322ff2743e5SAnson Huang RPC_U8(&msg, 2U) = (uint8_t)dse;
323ff2743e5SAnson Huang RPC_U8(&msg, 3U) = (uint8_t)pus;
324ff2743e5SAnson Huang RPC_U8(&msg, 4U) = (uint8_t)hys;
325ff2743e5SAnson Huang RPC_U8(&msg, 5U) = (uint8_t)pke;
326ff2743e5SAnson Huang RPC_U8(&msg, 6U) = (uint8_t)pue;
327ff2743e5SAnson Huang RPC_SIZE(&msg) = 3U;
328ff2743e5SAnson Huang
329ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
330ff2743e5SAnson Huang
331ff2743e5SAnson Huang result = RPC_R8(&msg);
332ff2743e5SAnson Huang return (sc_err_t)result;
333ff2743e5SAnson Huang }
334ff2743e5SAnson Huang
sc_pad_get_gp_28fdsoi_hsic(sc_ipc_t ipc,sc_pad_t pad,sc_pad_28fdsoi_dse_t * dse,sc_bool_t * hys,sc_pad_28fdsoi_pus_t * pus,sc_bool_t * pke,sc_bool_t * pue)335ff2743e5SAnson Huang sc_err_t sc_pad_get_gp_28fdsoi_hsic(sc_ipc_t ipc, sc_pad_t pad,
336ff2743e5SAnson Huang sc_pad_28fdsoi_dse_t *dse, sc_bool_t *hys,
337ff2743e5SAnson Huang sc_pad_28fdsoi_pus_t *pus, sc_bool_t *pke,
338ff2743e5SAnson Huang sc_bool_t *pue)
339ff2743e5SAnson Huang {
340ff2743e5SAnson Huang sc_rpc_msg_t msg;
341ff2743e5SAnson Huang uint8_t result;
342ff2743e5SAnson Huang
343ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
344ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
345ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_GP_28FDSOI_HSIC;
346ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
347ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
348ff2743e5SAnson Huang
349ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
350ff2743e5SAnson Huang
351ff2743e5SAnson Huang result = RPC_R8(&msg);
352ff2743e5SAnson Huang if (dse != NULL) {
353ff2743e5SAnson Huang *dse = RPC_U8(&msg, 0U);
354ff2743e5SAnson Huang }
355ff2743e5SAnson Huang
356ff2743e5SAnson Huang if (pus != NULL) {
357ff2743e5SAnson Huang *pus = RPC_U8(&msg, 1U);
358ff2743e5SAnson Huang }
359ff2743e5SAnson Huang
360ff2743e5SAnson Huang if (hys != NULL) {
361ff2743e5SAnson Huang *hys = RPC_U8(&msg, 2U);
362ff2743e5SAnson Huang }
363ff2743e5SAnson Huang
364ff2743e5SAnson Huang if (pke != NULL) {
365ff2743e5SAnson Huang *pke = RPC_U8(&msg, 3U);
366ff2743e5SAnson Huang }
367ff2743e5SAnson Huang
368ff2743e5SAnson Huang if (pue != NULL) {
369ff2743e5SAnson Huang *pue = RPC_U8(&msg, 4U);
370ff2743e5SAnson Huang }
371ff2743e5SAnson Huang
372ff2743e5SAnson Huang return (sc_err_t)result;
373ff2743e5SAnson Huang }
374ff2743e5SAnson Huang
sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc,sc_pad_t pad,uint8_t compen,sc_bool_t fastfrz,uint8_t rasrcp,uint8_t rasrcn,sc_bool_t nasrc_sel,sc_bool_t psw_ovr)375ff2743e5SAnson Huang sc_err_t sc_pad_set_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
376ff2743e5SAnson Huang uint8_t compen, sc_bool_t fastfrz,
377ff2743e5SAnson Huang uint8_t rasrcp, uint8_t rasrcn,
378ff2743e5SAnson Huang sc_bool_t nasrc_sel, sc_bool_t psw_ovr)
379ff2743e5SAnson Huang {
380ff2743e5SAnson Huang sc_rpc_msg_t msg;
381ff2743e5SAnson Huang uint8_t result;
382ff2743e5SAnson Huang
383ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
384ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
385ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_SET_GP_28FDSOI_COMP;
386ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
387ff2743e5SAnson Huang RPC_U8(&msg, 2U) = (uint8_t)compen;
388ff2743e5SAnson Huang RPC_U8(&msg, 3U) = (uint8_t)rasrcp;
389ff2743e5SAnson Huang RPC_U8(&msg, 4U) = (uint8_t)rasrcn;
390ff2743e5SAnson Huang RPC_U8(&msg, 5U) = (uint8_t)fastfrz;
391ff2743e5SAnson Huang RPC_U8(&msg, 6U) = (uint8_t)nasrc_sel;
392ff2743e5SAnson Huang RPC_U8(&msg, 7U) = (uint8_t)psw_ovr;
393ff2743e5SAnson Huang RPC_SIZE(&msg) = 3U;
394ff2743e5SAnson Huang
395ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
396ff2743e5SAnson Huang
397ff2743e5SAnson Huang result = RPC_R8(&msg);
398ff2743e5SAnson Huang return (sc_err_t)result;
399ff2743e5SAnson Huang }
400ff2743e5SAnson Huang
sc_pad_get_gp_28fdsoi_comp(sc_ipc_t ipc,sc_pad_t pad,uint8_t * compen,sc_bool_t * fastfrz,uint8_t * rasrcp,uint8_t * rasrcn,sc_bool_t * nasrc_sel,sc_bool_t * compok,uint8_t * nasrc,sc_bool_t * psw_ovr)401ff2743e5SAnson Huang sc_err_t sc_pad_get_gp_28fdsoi_comp(sc_ipc_t ipc, sc_pad_t pad,
402ff2743e5SAnson Huang uint8_t *compen, sc_bool_t *fastfrz,
403ff2743e5SAnson Huang uint8_t *rasrcp, uint8_t *rasrcn,
404ff2743e5SAnson Huang sc_bool_t *nasrc_sel, sc_bool_t *compok,
405ff2743e5SAnson Huang uint8_t *nasrc, sc_bool_t *psw_ovr)
406ff2743e5SAnson Huang {
407ff2743e5SAnson Huang sc_rpc_msg_t msg;
408ff2743e5SAnson Huang uint8_t result;
409ff2743e5SAnson Huang
410ff2743e5SAnson Huang RPC_VER(&msg) = SC_RPC_VERSION;
411ff2743e5SAnson Huang RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_PAD;
412ff2743e5SAnson Huang RPC_FUNC(&msg) = (uint8_t)PAD_FUNC_GET_GP_28FDSOI_COMP;
413ff2743e5SAnson Huang RPC_U16(&msg, 0U) = (uint16_t)pad;
414ff2743e5SAnson Huang RPC_SIZE(&msg) = 2U;
415ff2743e5SAnson Huang
416ff2743e5SAnson Huang sc_call_rpc(ipc, &msg, SC_FALSE);
417ff2743e5SAnson Huang
418ff2743e5SAnson Huang result = RPC_R8(&msg);
419ff2743e5SAnson Huang if (compen != NULL) {
420ff2743e5SAnson Huang *compen = RPC_U8(&msg, 0U);
421ff2743e5SAnson Huang }
422ff2743e5SAnson Huang
423ff2743e5SAnson Huang if (rasrcp != NULL) {
424ff2743e5SAnson Huang *rasrcp = RPC_U8(&msg, 1U);
425ff2743e5SAnson Huang }
426ff2743e5SAnson Huang
427ff2743e5SAnson Huang if (rasrcn != NULL) {
428ff2743e5SAnson Huang *rasrcn = RPC_U8(&msg, 2U);
429ff2743e5SAnson Huang }
430ff2743e5SAnson Huang
431ff2743e5SAnson Huang if (nasrc != NULL) {
432ff2743e5SAnson Huang *nasrc = RPC_U8(&msg, 3U);
433ff2743e5SAnson Huang }
434ff2743e5SAnson Huang
435ff2743e5SAnson Huang if (fastfrz != NULL) {
436ff2743e5SAnson Huang *fastfrz = RPC_U8(&msg, 4U);
437ff2743e5SAnson Huang }
438ff2743e5SAnson Huang
439ff2743e5SAnson Huang if (nasrc_sel != NULL) {
440ff2743e5SAnson Huang *nasrc_sel = RPC_U8(&msg, 5U);
441ff2743e5SAnson Huang }
442ff2743e5SAnson Huang
443ff2743e5SAnson Huang if (compok != NULL) {
444ff2743e5SAnson Huang *compok = RPC_U8(&msg, 6U);
445ff2743e5SAnson Huang }
446ff2743e5SAnson Huang
447ff2743e5SAnson Huang if (psw_ovr != NULL) {
448ff2743e5SAnson Huang *psw_ovr = RPC_U8(&msg, 7U);
449ff2743e5SAnson Huang }
450ff2743e5SAnson Huang
451ff2743e5SAnson Huang return (sc_err_t)result;
452ff2743e5SAnson Huang }
453ff2743e5SAnson Huang
454ff2743e5SAnson Huang /**@}*/
455