summaryrefslogtreecommitdiff
path: root/plat/imx/common/sci/svc/misc/misc_rpc_clnt.c
diff options
context:
space:
mode:
Diffstat (limited to 'plat/imx/common/sci/svc/misc/misc_rpc_clnt.c')
-rw-r--r--plat/imx/common/sci/svc/misc/misc_rpc_clnt.c499
1 files changed, 241 insertions, 258 deletions
diff --git a/plat/imx/common/sci/svc/misc/misc_rpc_clnt.c b/plat/imx/common/sci/svc/misc/misc_rpc_clnt.c
index 080de6a9..d9553b7c 100644
--- a/plat/imx/common/sci/svc/misc/misc_rpc_clnt.c
+++ b/plat/imx/common/sci/svc/misc/misc_rpc_clnt.c
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2016 Freescale Semiconductor, Inc.
- * Copyright 2017-2018 NXP
+ * Copyright 2017-2019 NXP
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -19,8 +19,9 @@
#include <sci/svc/rm/sci_rm_api.h>
#include <sci/svc/misc/sci_misc_api.h>
#include <sci/sci_rpc.h>
-#include <stdlib.h>
#include "sci_misc_rpc.h"
+#include <stdlib.h>
+
/* Local Defines */
@@ -28,479 +29,461 @@
/* Local Functions */
-sc_err_t sc_misc_set_control(sc_ipc_t ipc, sc_rsrc_t resource,
- sc_ctrl_t ctrl, uint32_t val)
+sc_err_t sc_misc_set_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl,
+ uint32_t val)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SET_CONTROL;
- RPC_U32(&msg, 0U) = (uint32_t)ctrl;
- RPC_U32(&msg, 4U) = (uint32_t)val;
- RPC_U16(&msg, 8U) = (uint16_t)resource;
RPC_SIZE(&msg) = 4U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_SET_CONTROL);
+
+ RPC_U32(&msg, 0U) = U32(ctrl);
+ RPC_U32(&msg, 4U) = U32(val);
+ RPC_U16(&msg, 8U) = U16(resource);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ err = (sc_err_t)RPC_R8(&msg);
+
+ return err;
}
-sc_err_t sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource,
- sc_ctrl_t ctrl, uint32_t *val)
+sc_err_t sc_misc_get_control(sc_ipc_t ipc, sc_rsrc_t resource, sc_ctrl_t ctrl,
+ uint32_t *val)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_GET_CONTROL;
- RPC_U32(&msg, 0U) = (uint32_t)ctrl;
- RPC_U16(&msg, 4U) = (uint16_t)resource;
RPC_SIZE(&msg) = 3U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_GET_CONTROL);
+
+ RPC_U32(&msg, 0U) = U32(ctrl);
+ RPC_U16(&msg, 4U) = U16(resource);
sc_call_rpc(ipc, &msg, SC_FALSE);
- if (val != NULL)
- *val = RPC_U32(&msg, 0U);
+ err = (sc_err_t)RPC_R8(&msg);
+
+ if (val != NULL) {
+ *val = (uint32_t)RPC_U32(&msg, 0U);
+ }
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ return err;
}
sc_err_t sc_misc_set_max_dma_group(sc_ipc_t ipc, sc_rm_pt_t pt,
sc_misc_dma_group_t max)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SET_MAX_DMA_GROUP;
- RPC_U8(&msg, 0U) = (uint8_t)pt;
- RPC_U8(&msg, 1U) = (uint8_t)max;
RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_SET_MAX_DMA_GROUP);
+
+ RPC_U8(&msg, 0U) = U8(pt);
+ RPC_U8(&msg, 1U) = U8(max);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ err = (sc_err_t)RPC_R8(&msg);
+
+ return err;
}
sc_err_t sc_misc_set_dma_group(sc_ipc_t ipc, sc_rsrc_t resource,
sc_misc_dma_group_t group)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SET_DMA_GROUP;
- RPC_U16(&msg, 0U) = (uint16_t)resource;
- RPC_U8(&msg, 2U) = (uint8_t)group;
RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_SET_DMA_GROUP);
+
+ RPC_U16(&msg, 0U) = U16(resource);
+ RPC_U8(&msg, 2U) = U8(group);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ err = (sc_err_t)RPC_R8(&msg);
+
+ return err;
}
-sc_err_t sc_misc_seco_image_load(sc_ipc_t ipc, sc_faddr_t addr_src,
- sc_faddr_t addr_dst, uint32_t len,
- sc_bool_t fw)
+void sc_misc_debug_out(sc_ipc_t ipc, uint8_t ch)
{
sc_rpc_msg_t msg;
- uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_IMAGE_LOAD;
- RPC_U32(&msg, 0U) = (uint32_t)(addr_src >> 32U);
- RPC_U32(&msg, 4U) = (uint32_t)addr_src;
- RPC_U32(&msg, 8U) = (uint32_t)(addr_dst >> 32U);
- RPC_U32(&msg, 12U) = (uint32_t)addr_dst;
- RPC_U32(&msg, 16U) = (uint32_t)len;
- RPC_U8(&msg, 20U) = (uint8_t)fw;
- RPC_SIZE(&msg) = 7U;
+ RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_DEBUG_OUT);
- sc_call_rpc(ipc, &msg, SC_FALSE);
+ RPC_U8(&msg, 0U) = U8(ch);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ sc_call_rpc(ipc, &msg, SC_FALSE);
}
-sc_err_t sc_misc_seco_authenticate(sc_ipc_t ipc,
- sc_misc_seco_auth_cmd_t cmd, sc_faddr_t addr)
+sc_err_t sc_misc_waveform_capture(sc_ipc_t ipc, sc_bool_t enable)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_AUTHENTICATE;
- RPC_U32(&msg, 0U) = (uint32_t)(addr >> 32U);
- RPC_U32(&msg, 4U) = (uint32_t)addr;
- RPC_U8(&msg, 8U) = (uint8_t)cmd;
- RPC_SIZE(&msg) = 4U;
+ RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_WAVEFORM_CAPTURE);
+
+ RPC_U8(&msg, 0U) = B2U8(enable);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ err = (sc_err_t)RPC_R8(&msg);
+
+ return err;
}
-sc_err_t sc_misc_seco_fuse_write(sc_ipc_t ipc, sc_faddr_t addr)
+void sc_misc_build_info(sc_ipc_t ipc, uint32_t *build, uint32_t *commit)
{
sc_rpc_msg_t msg;
- uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_FUSE_WRITE;
- RPC_U32(&msg, 0U) = (uint32_t)(addr >> 32U);
- RPC_U32(&msg, 4U) = (uint32_t)addr;
- RPC_SIZE(&msg) = 3U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_BUILD_INFO);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ if (build != NULL) {
+ *build = (uint32_t)RPC_U32(&msg, 0U);
+ }
+ if (commit != NULL) {
+ *commit = (uint32_t)RPC_U32(&msg, 4U);
+ }
}
-sc_err_t sc_misc_seco_enable_debug(sc_ipc_t ipc, sc_faddr_t addr)
+void sc_misc_api_ver(sc_ipc_t ipc, uint16_t *cl_maj, uint16_t *cl_min,
+ uint16_t *sv_maj, uint16_t *sv_min)
{
sc_rpc_msg_t msg;
- uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_ENABLE_DEBUG;
- RPC_U32(&msg, 0U) = (uint32_t)(addr >> 32U);
- RPC_U32(&msg, 4U) = (uint32_t)addr;
- RPC_SIZE(&msg) = 3U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_API_VER);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ if (cl_maj != NULL) {
+ *cl_maj = (uint16_t)SCFW_API_VERSION_MAJOR;
+ }
+ if (cl_min != NULL) {
+ *cl_min = (uint16_t)SCFW_API_VERSION_MINOR;
+ }
+ if (sv_maj != NULL) {
+ *sv_maj = (uint16_t)RPC_U16(&msg, 4U);
+ }
+ if (sv_min != NULL) {
+ *sv_min = (uint16_t)RPC_U16(&msg, 6U);
+ }
}
-sc_err_t sc_misc_seco_forward_lifecycle(sc_ipc_t ipc, uint32_t lifecycle)
+void sc_misc_unique_id(sc_ipc_t ipc, uint32_t *id_l, uint32_t *id_h)
{
sc_rpc_msg_t msg;
- uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_FORWARD_LIFECYCLE;
- RPC_U32(&msg, 0U) = (uint32_t)lifecycle;
- RPC_SIZE(&msg) = 2U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_UNIQUE_ID);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ if (id_l != NULL) {
+ *id_l = (uint32_t)RPC_U32(&msg, 0U);
+ }
+ if (id_h != NULL) {
+ *id_h = (uint32_t)RPC_U32(&msg, 4U);
+ }
}
-sc_err_t sc_misc_seco_return_lifecycle(sc_ipc_t ipc, sc_faddr_t addr)
+sc_err_t sc_misc_set_ari(sc_ipc_t ipc, sc_rsrc_t resource,
+ sc_rsrc_t resource_mst, uint16_t ari, sc_bool_t enable)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_RETURN_LIFECYCLE;
- RPC_U32(&msg, 0U) = (uint32_t)(addr >> 32U);
- RPC_U32(&msg, 4U) = (uint32_t)addr;
RPC_SIZE(&msg) = 3U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_SET_ARI);
+
+ RPC_U16(&msg, 0U) = U16(resource);
+ RPC_U16(&msg, 2U) = U16(resource_mst);
+ RPC_U16(&msg, 4U) = U16(ari);
+ RPC_U8(&msg, 6U) = B2U8(enable);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ err = (sc_err_t)RPC_R8(&msg);
+
+ return err;
}
-void sc_misc_seco_build_info(sc_ipc_t ipc, uint32_t *version, uint32_t *commit)
+void sc_misc_boot_status(sc_ipc_t ipc, sc_misc_boot_status_t status)
{
sc_rpc_msg_t msg;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_BUILD_INFO;
- RPC_SIZE(&msg) = 1U;
-
- sc_call_rpc(ipc, &msg, SC_FALSE);
+ RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_BOOT_STATUS);
- if (version != NULL)
- *version = RPC_U32(&msg, 0U);
+ RPC_U8(&msg, 0U) = U8(status);
- if (commit != NULL)
- *commit = RPC_U32(&msg, 4U);
+ sc_call_rpc(ipc, &msg, SC_TRUE);
}
-sc_err_t sc_misc_seco_chip_info(sc_ipc_t ipc, uint16_t *lc,
- uint16_t *monotonic, uint32_t *uid_l,
- uint32_t *uid_h)
+sc_err_t sc_misc_boot_done(sc_ipc_t ipc, sc_rsrc_t cpu)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SECO_CHIP_INFO;
- RPC_SIZE(&msg) = 1U;
-
- sc_call_rpc(ipc, &msg, SC_FALSE);
-
- if (uid_l != NULL)
- *uid_l = RPC_U32(&msg, 0U);
+ RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_BOOT_DONE);
- if (uid_h != NULL)
- *uid_h = RPC_U32(&msg, 4U);
+ RPC_U16(&msg, 0U) = U16(cpu);
- if (lc != NULL)
- *lc = RPC_U16(&msg, 8U);
+ sc_call_rpc(ipc, &msg, SC_FALSE);
- if (monotonic != NULL)
- *monotonic = RPC_U16(&msg, 10U);
+ err = (sc_err_t)RPC_R8(&msg);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ return err;
}
-void sc_misc_debug_out(sc_ipc_t ipc, uint8_t ch)
+sc_err_t sc_misc_otp_fuse_read(sc_ipc_t ipc, uint32_t word, uint32_t *val)
{
sc_rpc_msg_t msg;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_DEBUG_OUT;
- RPC_U8(&msg, 0U) = (uint8_t)ch;
RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_OTP_FUSE_READ);
+
+ RPC_U32(&msg, 0U) = U32(word);
sc_call_rpc(ipc, &msg, SC_FALSE);
-}
-sc_err_t sc_misc_waveform_capture(sc_ipc_t ipc, sc_bool_t enable)
-{
- sc_rpc_msg_t msg;
- uint8_t result;
+ err = (sc_err_t)RPC_R8(&msg);
- RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_WAVEFORM_CAPTURE;
- RPC_U8(&msg, 0U) = (uint8_t)enable;
- RPC_SIZE(&msg) = 2U;
+ if (val != NULL) {
+ *val = (uint32_t)RPC_U32(&msg, 0U);
+ }
- sc_call_rpc(ipc, &msg, SC_FALSE);
-
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ return err;
}
-void sc_misc_build_info(sc_ipc_t ipc, uint32_t *build, uint32_t *commit)
+sc_err_t sc_misc_otp_fuse_write(sc_ipc_t ipc, uint32_t word, uint32_t val)
{
sc_rpc_msg_t msg;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_BUILD_INFO;
- RPC_SIZE(&msg) = 1U;
+ RPC_SIZE(&msg) = 3U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_OTP_FUSE_WRITE);
+
+ RPC_U32(&msg, 0U) = U32(word);
+ RPC_U32(&msg, 4U) = U32(val);
sc_call_rpc(ipc, &msg, SC_FALSE);
- if (build != NULL)
- *build = RPC_U32(&msg, 0U);
+ err = (sc_err_t)RPC_R8(&msg);
- if (commit != NULL)
- *commit = RPC_U32(&msg, 4U);
+ return err;
}
-void sc_misc_unique_id(sc_ipc_t ipc, uint32_t *id_l, uint32_t *id_h)
+sc_err_t sc_misc_set_temp(sc_ipc_t ipc, sc_rsrc_t resource, sc_misc_temp_t temp,
+ int16_t celsius, int8_t tenths)
{
sc_rpc_msg_t msg;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_UNIQUE_ID;
- RPC_SIZE(&msg) = 1U;
+ RPC_SIZE(&msg) = 3U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_SET_TEMP);
+
+ RPC_U16(&msg, 0U) = U16(resource);
+ RPC_I16(&msg, 2U) = I16(celsius);
+ RPC_U8(&msg, 4U) = U8(temp);
+ RPC_I8(&msg, 5U) = I8(tenths);
sc_call_rpc(ipc, &msg, SC_FALSE);
- if (id_l != NULL)
- *id_l = RPC_U32(&msg, 0U);
+ err = (sc_err_t)RPC_R8(&msg);
- if (id_h != NULL)
- *id_h = RPC_U32(&msg, 4U);
+ return err;
}
-sc_err_t sc_misc_set_ari(sc_ipc_t ipc, sc_rsrc_t resource,
- sc_rsrc_t resource_mst, uint16_t ari, sc_bool_t enable)
+sc_err_t sc_misc_get_temp(sc_ipc_t ipc, sc_rsrc_t resource, sc_misc_temp_t temp,
+ int16_t * celsius, int8_t * tenths)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SET_ARI;
- RPC_U16(&msg, 0U) = (uint16_t)resource;
- RPC_U16(&msg, 2U) = (uint16_t)resource_mst;
- RPC_U16(&msg, 4U) = (uint16_t)ari;
- RPC_U8(&msg, 6U) = (uint8_t)enable;
- RPC_SIZE(&msg) = 3U;
+ RPC_SIZE(&msg) = 2U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_GET_TEMP);
+
+ RPC_U16(&msg, 0U) = U16(resource);
+ RPC_U8(&msg, 2U) = U8(temp);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
-}
+ err = (sc_err_t)RPC_R8(&msg);
-void sc_misc_boot_status(sc_ipc_t ipc, sc_misc_boot_status_t status)
-{
- sc_rpc_msg_t msg;
+ if (celsius != NULL) {
+ *celsius = (int16_t) RPC_I16(&msg, 0U);
+ }
+ if (tenths != NULL) {
+ *tenths = (int8_t) RPC_I8(&msg, 2U);
+ }
- RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_BOOT_STATUS;
- RPC_U8(&msg, 0U) = (uint8_t)status;
- RPC_SIZE(&msg) = 2U;
-
- sc_call_rpc(ipc, &msg, SC_TRUE);
+ return err;
}
-sc_err_t sc_misc_boot_done(sc_ipc_t ipc, sc_rsrc_t cpu)
+void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t * dev)
{
sc_rpc_msg_t msg;
- uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_BOOT_DONE;
- RPC_U16(&msg, 0U) = (uint16_t)cpu;
- RPC_SIZE(&msg) = 2U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_GET_BOOT_DEV);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ if (dev != NULL) {
+ *dev = (sc_rsrc_t) RPC_U16(&msg, 0U);
+ }
}
-sc_err_t sc_misc_otp_fuse_read(sc_ipc_t ipc, uint32_t word, uint32_t *val)
+sc_err_t sc_misc_get_boot_type(sc_ipc_t ipc, sc_misc_bt_t * type)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_OTP_FUSE_READ;
- RPC_U32(&msg, 0U) = (uint32_t)word;
- RPC_SIZE(&msg) = 2U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_GET_BOOT_TYPE);
sc_call_rpc(ipc, &msg, SC_FALSE);
- if (val != NULL)
- *val = RPC_U32(&msg, 0U);
+ err = (sc_err_t)RPC_R8(&msg);
+
+ if (type != NULL) {
+ *type = (sc_misc_bt_t) RPC_U8(&msg, 0U);
+ }
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ return err;
}
-sc_err_t sc_misc_otp_fuse_write(sc_ipc_t ipc, uint32_t word, uint32_t val)
+sc_err_t sc_misc_get_boot_container(sc_ipc_t ipc, uint8_t *idx)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_OTP_FUSE_WRITE;
- RPC_U32(&msg, 0U) = (uint32_t)word;
- RPC_U32(&msg, 4U) = (uint32_t)val;
- RPC_SIZE(&msg) = 3U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_GET_BOOT_CONTAINER);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ err = (sc_err_t)RPC_R8(&msg);
+
+ if (idx != NULL) {
+ *idx = (uint8_t)RPC_U8(&msg, 0U);
+ }
+
+ return err;
}
-sc_err_t sc_misc_set_temp(sc_ipc_t ipc, sc_rsrc_t resource,
- sc_misc_temp_t temp, int16_t celsius, int8_t tenths)
+void sc_misc_get_button_status(sc_ipc_t ipc, sc_bool_t *status)
{
sc_rpc_msg_t msg;
- uint8_t result;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_SET_TEMP;
- RPC_U16(&msg, 0U) = (uint16_t)resource;
- RPC_I16(&msg, 2U) = (int16_t) celsius;
- RPC_U8(&msg, 4U) = (uint8_t)temp;
- RPC_I8(&msg, 5U) = (int8_t) tenths;
- RPC_SIZE(&msg) = 3U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_GET_BUTTON_STATUS);
sc_call_rpc(ipc, &msg, SC_FALSE);
- result = RPC_R8(&msg);
- return (sc_err_t)result;
+ if (status != NULL) {
+ *status = (sc_bool_t)U2B(RPC_U8(&msg, 0U));
+ }
}
-sc_err_t sc_misc_get_temp(sc_ipc_t ipc, sc_rsrc_t resource,
- sc_misc_temp_t temp, int16_t *celsius,
- int8_t *tenths)
+sc_err_t sc_misc_rompatch_checksum(sc_ipc_t ipc, uint32_t *checksum)
{
sc_rpc_msg_t msg;
- uint8_t result;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_GET_TEMP;
- RPC_U16(&msg, 0U) = (uint16_t)resource;
- RPC_U8(&msg, 2U) = (uint8_t)temp;
- RPC_SIZE(&msg) = 2U;
+ RPC_SIZE(&msg) = 1U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_ROMPATCH_CHECKSUM);
sc_call_rpc(ipc, &msg, SC_FALSE);
- if (celsius != NULL)
- *celsius = RPC_I16(&msg, 0U);
+ err = (sc_err_t)RPC_R8(&msg);
- result = RPC_R8(&msg);
- if (tenths != NULL)
- *tenths = RPC_I8(&msg, 2U);
+ if (checksum != NULL) {
+ *checksum = (uint32_t)RPC_U32(&msg, 0U);
+ }
- return (sc_err_t)result;
+ return err;
}
-void sc_misc_get_boot_dev(sc_ipc_t ipc, sc_rsrc_t *dev)
+sc_err_t sc_misc_board_ioctl(sc_ipc_t ipc, uint32_t *parm1, uint32_t *parm2,
+ uint32_t *parm3)
{
sc_rpc_msg_t msg;
+ sc_err_t err;
RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_GET_BOOT_DEV;
- RPC_SIZE(&msg) = 1U;
-
- sc_call_rpc(ipc, &msg, SC_FALSE);
+ RPC_SIZE(&msg) = 4U;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_BOARD_IOCTL);
- if (dev != NULL)
- *dev = RPC_U16(&msg, 0U);
-}
+ RPC_U32(&msg, 0U) = U32(*parm1);
+ RPC_U32(&msg, 4U) = U32(*parm2);
+ RPC_U32(&msg, 8U) = U32(*parm3);
-void sc_misc_get_button_status(sc_ipc_t ipc, sc_bool_t *status)
-{
- sc_rpc_msg_t msg;
+ sc_call_rpc(ipc, &msg, SC_FALSE);
- RPC_VER(&msg) = SC_RPC_VERSION;
- RPC_SVC(&msg) = (uint8_t)SC_RPC_SVC_MISC;
- RPC_FUNC(&msg) = (uint8_t)MISC_FUNC_GET_BUTTON_STATUS;
- RPC_SIZE(&msg) = 1U;
+ err = (sc_err_t)RPC_R8(&msg);
- sc_call_rpc(ipc, &msg, SC_FALSE);
+ *parm1 = (uint32_t)RPC_U32(&msg, 0U);
+ *parm2 = (uint32_t)RPC_U32(&msg, 4U);
+ *parm3 = (uint32_t)RPC_U32(&msg, 8U);
- if (status != NULL)
- *status = RPC_U8(&msg, 0U);
+ return err;
}
/**@}*/