Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
2512d048
Commit
2512d048
authored
Jun 02, 2021
by
Madhukar Pappireddy
Committed by
TrustedFirmware Code Review
Jun 02, 2021
Browse files
Merge "feat(plat/imx8m): add SiP call for secondary boot" into integration
parents
203d48ad
9ce232fe
Changes
5
Hide whitespace changes
Inline
Side-by-side
plat/imx/common/imx_sip_handler.c
View file @
2512d048
...
...
@@ -14,6 +14,7 @@
#include <common/runtime_svc.h>
#include <imx_sip_svc.h>
#include <lib/el3_runtime/context_mgmt.h>
#include <lib/mmio.h>
#include <sci/sci.h>
#if defined(PLAT_imx8qm) || defined(PLAT_imx8qx)
...
...
@@ -145,6 +146,37 @@ int imx_misc_set_temp_handler(uint32_t smc_fid,
#endif
/* defined(PLAT_imx8qm) || defined(PLAT_imx8qx) */
#if defined(PLAT_imx8mm) || defined(PLAT_imx8mq)
int
imx_src_handler
(
uint32_t
smc_fid
,
u_register_t
x1
,
u_register_t
x2
,
u_register_t
x3
,
void
*
handle
)
{
uint32_t
val
;
switch
(
x1
)
{
case
IMX_SIP_SRC_SET_SECONDARY_BOOT
:
if
(
x2
!=
0U
)
{
mmio_setbits_32
(
IMX_SRC_BASE
+
SRC_GPR10_OFFSET
,
SRC_GPR10_PERSIST_SECONDARY_BOOT
);
}
else
{
mmio_clrbits_32
(
IMX_SRC_BASE
+
SRC_GPR10_OFFSET
,
SRC_GPR10_PERSIST_SECONDARY_BOOT
);
}
break
;
case
IMX_SIP_SRC_IS_SECONDARY_BOOT
:
val
=
mmio_read_32
(
IMX_SRC_BASE
+
SRC_GPR10_OFFSET
);
return
!!
(
val
&
SRC_GPR10_PERSIST_SECONDARY_BOOT
);
default:
return
SMC_UNK
;
};
return
0
;
}
#endif
/* defined(PLAT_imx8mm) || defined(PLAT_imx8mq) */
static
uint64_t
imx_get_commit_hash
(
u_register_t
x2
,
u_register_t
x3
,
u_register_t
x4
)
...
...
plat/imx/common/imx_sip_svc.c
View file @
2512d048
...
...
@@ -47,6 +47,11 @@ static uintptr_t imx_sip_handler(unsigned int smc_fid,
return
imx_otp_handler
(
smc_fid
,
handle
,
x1
,
x2
);
case
IMX_SIP_MISC_SET_TEMP
:
SMC_RET1
(
handle
,
imx_misc_set_temp_handler
(
smc_fid
,
x1
,
x2
,
x3
,
x4
));
#endif
#if defined(PLAT_imx8mm) || defined(PLAT_imx8mq)
case
IMX_SIP_SRC
:
SMC_RET1
(
handle
,
imx_src_handler
(
smc_fid
,
x1
,
x2
,
x3
,
handle
));
break
;
#endif
case
IMX_SIP_BUILDINFO
:
SMC_RET1
(
handle
,
imx_buildinfo_handler
(
smc_fid
,
x1
,
x2
,
x3
,
x4
));
...
...
plat/imx/common/include/imx_sip_svc.h
View file @
2512d048
...
...
@@ -17,6 +17,10 @@
#define IMX_SIP_BUILDINFO 0xC2000003
#define IMX_SIP_BUILDINFO_GET_COMMITHASH 0x00
#define IMX_SIP_SRC 0xC2000005
#define IMX_SIP_SRC_SET_SECONDARY_BOOT 0x10
#define IMX_SIP_SRC_IS_SECONDARY_BOOT 0x11
#define IMX_SIP_GET_SOC_INFO 0xC2000006
#define IMX_SIP_WAKEUP_SRC 0xC2000009
...
...
@@ -38,6 +42,11 @@ int imx_soc_info_handler(uint32_t smc_fid, u_register_t x1,
u_register_t
x2
,
u_register_t
x3
);
#endif
#if defined(PLAT_imx8mm) || defined(PLAT_imx8mq)
int
imx_src_handler
(
uint32_t
smc_fid
,
u_register_t
x1
,
u_register_t
x2
,
u_register_t
x3
,
void
*
handle
);
#endif
#if (defined(PLAT_imx8qm) || defined(PLAT_imx8qx))
int
imx_cpufreq_handler
(
uint32_t
smc_fid
,
u_register_t
x1
,
u_register_t
x2
,
u_register_t
x3
);
...
...
plat/imx/imx8m/imx8mm/include/platform_def.h
View file @
2512d048
...
...
@@ -124,6 +124,8 @@
#define SRC_OTG1PHY_SCR U(0x20)
#define SRC_OTG2PHY_SCR U(0x24)
#define SRC_GPR1_OFFSET U(0x74)
#define SRC_GPR10_OFFSET U(0x98)
#define SRC_GPR10_PERSIST_SECONDARY_BOOT BIT(30)
#define SNVS_LPCR U(0x38)
#define SNVS_LPCR_SRTC_ENV BIT(0)
...
...
plat/imx/imx8m/imx8mq/include/platform_def.h
View file @
2512d048
...
...
@@ -103,6 +103,8 @@
#define SRC_OTG1PHY_SCR U(0x20)
#define SRC_OTG2PHY_SCR U(0x24)
#define SRC_GPR1_OFFSET U(0x74)
#define SRC_GPR10_OFFSET U(0x98)
#define SRC_GPR10_PERSIST_SECONDARY_BOOT BIT(30)
#define SNVS_LPCR U(0x38)
#define SNVS_LPCR_SRTC_ENV BIT(0)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment