diff options
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r-- | arch/arm/mach-imx/sci/svc/irq/rpc.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/misc/rpc.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/misc/rpc_clnt.c | 23 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/pad/rpc.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/pm/rpc.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/pm/rpc_clnt.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/rm/rpc.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/seco/rpc.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-imx/sci/svc/timer/rpc.h | 2 |
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 */ |