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
a968304f
Commit
a968304f
authored
Jan 12, 2021
by
Manish Pandey
Committed by
TrustedFirmware Code Review
Jan 12, 2021
Browse files
Merge "zynqmp: pm: Update PM version and support PM version check" into integration
parents
dccad477
19fe3c72
Changes
3
Hide whitespace changes
Inline
Side-by-side
plat/xilinx/zynqmp/pm_service/pm_defs.h
View file @
a968304f
...
...
@@ -18,7 +18,7 @@
* (PM_VERSION_MAJOR << 16) | PM_VERSION_MINOR
*/
#define PM_VERSION_MAJOR 1
#define PM_VERSION_MINOR
0
#define PM_VERSION_MINOR
1
#define PM_VERSION ((PM_VERSION_MAJOR << 16) | PM_VERSION_MINOR)
...
...
plat/xilinx/zynqmp/pm_service/pm_svc_main.c
View file @
a968304f
...
...
@@ -29,8 +29,8 @@
#define PM_SET_SUSPEND_MODE 0xa02
#define PM_GET_TRUSTZONE_VERSION 0xa03
/*
!0 - UP,
0 - DOWN */
static
int32_t
pm_up
=
0
;
/*
pm_up = !0 - UP, pm_up =
0 - DOWN */
static
int32_t
pm_up
,
ipi_irq_flag
;
#if ZYNQMP_WDT_RESTART
static
spinlock_t
inc_lock
;
...
...
@@ -210,6 +210,15 @@ int pm_setup(void)
status
=
pm_ipi_init
(
primary_proc
);
ret
=
pm_get_api_version
(
&
pm_ctx
.
api_version
);
if
(
pm_ctx
.
api_version
<
PM_VERSION
)
{
ERROR
(
"BL31: Platform Management API version error. Expected: "
"v%d.%d - Found: v%d.%d
\n
"
,
PM_VERSION_MAJOR
,
PM_VERSION_MINOR
,
pm_ctx
.
api_version
>>
16
,
pm_ctx
.
api_version
&
0xFFFF
);
return
-
EINVAL
;
}
#if ZYNQMP_WDT_RESTART
status
=
pm_wdt_restart_setup
();
if
(
status
)
...
...
@@ -321,22 +330,21 @@ uint64_t pm_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint64_t x3,
case
PM_GET_API_VERSION
:
/* Check is PM API version already verified */
if
(
pm_ctx
.
api_version
==
PM_VERSION
)
{
if
(
pm_ctx
.
api_version
>=
PM_VERSION
)
{
if
(
!
ipi_irq_flag
)
{
/*
* Enable IPI IRQ
* assume the rich OS is OK to handle callback IRQs now.
* Even if we were wrong, it would not enable the IRQ in
* the GIC.
*/
pm_ipi_irq_enable
(
primary_proc
);
ipi_irq_flag
=
1
;
}
SMC_RET1
(
handle
,
(
uint64_t
)
PM_RET_SUCCESS
|
((
uint64_t
)
PM_VERSION
<<
32
));
((
uint64_t
)
pm_ctx
.
api_version
<<
32
));
}
ret
=
pm_get_api_version
(
&
pm_ctx
.
api_version
);
/*
* Enable IPI IRQ
* assume the rich OS is OK to handle callback IRQs now.
* Even if we were wrong, it would not enable the IRQ in
* the GIC.
*/
pm_ipi_irq_enable
(
primary_proc
);
SMC_RET1
(
handle
,
(
uint64_t
)
ret
|
((
uint64_t
)
pm_ctx
.
api_version
<<
32
));
case
PM_SET_CONFIGURATION
:
ret
=
pm_set_configuration
(
pm_arg
[
0
]);
SMC_RET1
(
handle
,
(
uint64_t
)
ret
);
...
...
plat/xilinx/zynqmp/sip_svc_setup.c
View file @
a968304f
...
...
@@ -44,9 +44,7 @@ DEFINE_SVC_UUID2(zynqmp_sip_uuid,
static
int32_t
sip_svc_setup
(
void
)
{
/* PM implementation as SiP Service */
pm_setup
();
return
0
;
return
pm_setup
();
}
/**
...
...
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