summaryrefslogtreecommitdiff
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
authorYe Li <ye.li@nxp.com>2019-02-10 18:59:23 -0800
committerYe Li <ye.li@nxp.com>2019-02-10 22:00:02 -0800
commit2f3e58c8e9a995fddcec34e04adbafaae101303a (patch)
tree257583746622b8b25daf30148d83077c2b43c18a /arch/arm/mach-imx
parenta9fdc0e4efa5c50ae194f7862d87cf53608afd8c (diff)
MLK-20901 imx8: Sync SCFW API to latest
Sync the SCFW API to latest commit below: commit 0721a2af721fca45e9d7e9b673b669ffab9aca7f Author: Glen Wienecke <glen.wienecke@nxp.com> Date: Sun Feb 10 19:16:56 2019 -0600 SCF-296: Partition reboot should not reset FSPI/OCRAM if in use - Update ss_rsrc_reset to return BUSY error if FSPI/OCRAM in use - Update pm_update_ridx to skip power transition if FSPI/OCRAM in use - For user_mode update requests, reflect mode achieved after pm_update_ridx - Add PM SVC call to get active mode (user_mode not accurate during transitions) - Undo some MISRA updates that changed ss_rsrc_reset to void function Signed-off-by: Glen Wienecke <glen.wienecke@nxp.com> Signed-off-by: Ye Li <ye.li@nxp.com> Acked-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/sci/svc/irq/rpc.h2
-rw-r--r--arch/arm/mach-imx/sci/svc/misc/rpc.h3
-rw-r--r--arch/arm/mach-imx/sci/svc/misc/rpc_clnt.c23
-rw-r--r--arch/arm/mach-imx/sci/svc/pad/rpc.h2
-rw-r--r--arch/arm/mach-imx/sci/svc/pm/rpc.h3
-rw-r--r--arch/arm/mach-imx/sci/svc/pm/rpc_clnt.c21
-rw-r--r--arch/arm/mach-imx/sci/svc/rm/rpc.h2
-rw-r--r--arch/arm/mach-imx/sci/svc/seco/rpc.h2
-rw-r--r--arch/arm/mach-imx/sci/svc/timer/rpc.h2
9 files changed, 53 insertions, 7 deletions
diff --git a/arch/arm/mach-imx/sci/svc/irq/rpc.h b/arch/arm/mach-imx/sci/svc/irq/rpc.h
index 04bc22dfdd..687dc2866d 100644
--- a/arch/arm/mach-imx/sci/svc/irq/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/irq/rpc.h
@@ -38,7 +38,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void irq_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void irq_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_IRQ_RPC_H */
diff --git a/arch/arm/mach-imx/sci/svc/misc/rpc.h b/arch/arm/mach-imx/sci/svc/misc/rpc.h
index 614f06bd71..9a6d8ce9eb 100644
--- a/arch/arm/mach-imx/sci/svc/misc/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/misc/rpc.h
@@ -57,6 +57,7 @@
#define MISC_FUNC_GET_BOOT_TYPE 33U /*!< Index for misc_get_boot_type() RPC call */
#define MISC_FUNC_GET_BUTTON_STATUS 18U /*!< Index for misc_get_button_status() RPC call */
#define MISC_FUNC_ROMPATCH_CHECKSUM 26U /*!< Index for misc_rompatch_checksum() RPC call */
+#define MISC_FUNC_BOARD_IOCTL 34U /*!< Index for misc_board_ioctl() RPC call */
/*@}*/
/* Types */
@@ -69,7 +70,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void misc_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void misc_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_MISC_RPC_H */
diff --git a/arch/arm/mach-imx/sci/svc/misc/rpc_clnt.c b/arch/arm/mach-imx/sci/svc/misc/rpc_clnt.c
index d6d0744d75..7dd5a0575b 100644
--- a/arch/arm/mach-imx/sci/svc/misc/rpc_clnt.c
+++ b/arch/arm/mach-imx/sci/svc/misc/rpc_clnt.c
@@ -697,5 +697,28 @@ sc_err_t sc_misc_rompatch_checksum(sc_ipc_t ipc, uint32_t *checksum)
return (sc_err_t) result;
}
+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;
+ uint8_t result;
+
+ RPC_VER(&msg) = SC_RPC_VERSION;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_MISC);
+ RPC_FUNC(&msg) = U8(MISC_FUNC_BOARD_IOCTL);
+ RPC_U32(&msg, 0U) = *PTR_U32(parm1);
+ RPC_U32(&msg, 4U) = *PTR_U32(parm2);
+ RPC_U32(&msg, 8U) = *PTR_U32(parm3);
+ RPC_SIZE(&msg) = 4U;
+
+ sc_call_rpc(ipc, &msg, SC_FALSE);
+
+ *parm1 = RPC_U32(&msg, 0U);
+ *parm2 = RPC_U32(&msg, 4U);
+ *parm3 = RPC_U32(&msg, 8U);
+ result = RPC_R8(&msg);
+ return (sc_err_t) result;
+}
+
/**@}*/
diff --git a/arch/arm/mach-imx/sci/svc/pad/rpc.h b/arch/arm/mach-imx/sci/svc/pad/rpc.h
index 35983334f1..4589e1f801 100644
--- a/arch/arm/mach-imx/sci/svc/pad/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/pad/rpc.h
@@ -52,7 +52,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void pad_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void pad_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_PAD_RPC_H */
diff --git a/arch/arm/mach-imx/sci/svc/pm/rpc.h b/arch/arm/mach-imx/sci/svc/pm/rpc.h
index 0d96cd6c00..8f47daefa8 100644
--- a/arch/arm/mach-imx/sci/svc/pm/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/pm/rpc.h
@@ -42,6 +42,7 @@
#define PM_FUNC_GET_CLOCK_PARENT 15U /*!< Index for pm_get_clock_parent() RPC call */
#define PM_FUNC_RESET 13U /*!< Index for pm_reset() RPC call */
#define PM_FUNC_RESET_REASON 10U /*!< Index for pm_reset_reason() RPC call */
+#define PM_FUNC_GET_RESET_PART 26U /*!< Index for pm_get_reset_part() RPC call */
#define PM_FUNC_BOOT 8U /*!< Index for pm_boot() RPC call */
#define PM_FUNC_REBOOT 9U /*!< Index for pm_reboot() RPC call */
#define PM_FUNC_REBOOT_PARTITION 12U /*!< Index for pm_reboot_partition() RPC call */
@@ -61,7 +62,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void pm_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void pm_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_PM_RPC_H */
diff --git a/arch/arm/mach-imx/sci/svc/pm/rpc_clnt.c b/arch/arm/mach-imx/sci/svc/pm/rpc_clnt.c
index 3233729fa4..3ba8d44ad9 100644
--- a/arch/arm/mach-imx/sci/svc/pm/rpc_clnt.c
+++ b/arch/arm/mach-imx/sci/svc/pm/rpc_clnt.c
@@ -397,6 +397,27 @@ sc_err_t sc_pm_reset_reason(sc_ipc_t ipc, sc_pm_reset_reason_t *reason)
return (sc_err_t) result;
}
+sc_err_t sc_pm_get_reset_part(sc_ipc_t ipc, sc_rm_pt_t *pt)
+{
+ sc_rpc_msg_t msg;
+ uint8_t result;
+
+ RPC_VER(&msg) = SC_RPC_VERSION;
+ RPC_SVC(&msg) = U8(SC_RPC_SVC_PM);
+ RPC_FUNC(&msg) = U8(PM_FUNC_GET_RESET_PART);
+ RPC_SIZE(&msg) = 1U;
+
+ sc_call_rpc(ipc, &msg, SC_FALSE);
+
+ result = RPC_R8(&msg);
+ if (pt != NULL)
+ {
+ *pt = RPC_U8(&msg, 0U);
+ }
+
+ return (sc_err_t) result;
+}
+
sc_err_t sc_pm_boot(sc_ipc_t ipc, sc_rm_pt_t pt,
sc_rsrc_t resource_cpu, sc_faddr_t boot_addr,
sc_rsrc_t resource_mu, sc_rsrc_t resource_dev)
diff --git a/arch/arm/mach-imx/sci/svc/rm/rpc.h b/arch/arm/mach-imx/sci/svc/rm/rpc.h
index 879522c96a..d8b86fd1aa 100644
--- a/arch/arm/mach-imx/sci/svc/rm/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/rm/rpc.h
@@ -69,7 +69,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void rm_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void rm_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_RM_RPC_H */
diff --git a/arch/arm/mach-imx/sci/svc/seco/rpc.h b/arch/arm/mach-imx/sci/svc/seco/rpc.h
index f17ce22583..cfc742cf93 100644
--- a/arch/arm/mach-imx/sci/svc/seco/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/seco/rpc.h
@@ -56,7 +56,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void seco_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void seco_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_SECO_RPC_H */
diff --git a/arch/arm/mach-imx/sci/svc/timer/rpc.h b/arch/arm/mach-imx/sci/svc/timer/rpc.h
index a071f47f52..c97147c5a3 100644
--- a/arch/arm/mach-imx/sci/svc/timer/rpc.h
+++ b/arch/arm/mach-imx/sci/svc/timer/rpc.h
@@ -54,7 +54,7 @@
* @param[in] caller_pt caller partition
* @param[in] msg pointer to RPC message
*/
-void timer_dispatch(sc_rm_pt_t caller_pt, sc_rpc_msg_t *msg);
+void timer_dispatch(sc_rm_pt_t caller_pt, sc_rsrc_t mu, sc_rpc_msg_t *msg);
#endif /* SC_TIMER_RPC_H */