Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
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
a4551739
Unverified
Commit
a4551739
authored
6 years ago
by
Dimitris Papastamos
Committed by
GitHub
6 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1448 from npoushin/npoushin/sgi575-coverity-fixes
npoushin/sgi575 coverity fixes
parents
562e0e8a
8e26307d
master
v2.5
v2.5-rc1
v2.5-rc0
v2.4
v2.4-rc2
v2.4-rc1
v2.4-rc0
v2.3
v2.3-rc2
v2.3-rc1
v2.3-rc0
v2.2
v2.2-rc2
v2.2-rc1
v2.2-rc0
v2.1
v2.1-rc1
v2.1-rc0
v2.0
v2.0-rc0
v1.6
v1.6-rc1
v1.6-rc0
arm_cca_v0.2
arm_cca_v0.1
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
include/plat/arm/css/common/css_pm.h
+9
-3
include/plat/arm/css/common/css_pm.h
plat/arm/css/common/css_pm.c
+16
-4
plat/arm/css/common/css_pm.c
plat/arm/css/drivers/scp/css_pm_scmi.c
+1
-1
plat/arm/css/drivers/scp/css_pm_scmi.c
plat/arm/css/drivers/scp/css_pm_scpi.c
+1
-1
plat/arm/css/drivers/scp/css_pm_scpi.c
with
27 additions
and
9 deletions
+27
-9
include/plat/arm/css/common/css_pm.h
View file @
a4551739
...
...
@@ -17,9 +17,15 @@
/* Macros to read the CSS power domain state */
#define CSS_CORE_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL0]
#define CSS_CLUSTER_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL1]
#define CSS_SYSTEM_PWR_STATE(state) \
((PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL) ?\
(state)->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL] : 0)
static
inline
unsigned
int
css_system_pwr_state
(
const
psci_power_state_t
*
state
)
{
#if (PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL)
return
state
->
pwr_domain_state
[
CSS_SYSTEM_PWR_DMN_LVL
];
#else
return
0
;
#endif
}
int
css_pwr_domain_on
(
u_register_t
mpidr
);
void
css_pwr_domain_on_finish
(
const
psci_power_state_t
*
target_state
);
...
...
This diff is collapsed.
Click to expand it.
plat/arm/css/common/css_pm.c
View file @
a4551739
...
...
@@ -96,7 +96,7 @@ static void css_pwr_domain_on_finisher_common(
void
css_pwr_domain_on_finish
(
const
psci_power_state_t
*
target_state
)
{
/* Assert that the system power domain need not be initialized */
assert
(
CSS_SYSTEM_PWR_STATE
(
target_state
)
==
ARM_LOCAL_STATE_RUN
);
assert
(
css_system_pwr_state
(
target_state
)
==
ARM_LOCAL_STATE_RUN
);
/* Program the gic per-cpu distributor or re-distributor interface */
plat_arm_gic_pcpu_init
();
...
...
@@ -149,7 +149,7 @@ void css_pwr_domain_suspend(const psci_power_state_t *target_state)
css_power_down_common
(
target_state
);
/* Perform system domain state saving if issuing system suspend */
if
(
CSS_SYSTEM_PWR_STATE
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
{
if
(
css_system_pwr_state
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
{
arm_system_pwr_domain_save
();
/* Power off the Redistributor after having saved its context */
...
...
@@ -174,7 +174,7 @@ void css_pwr_domain_suspend_finish(
return
;
/* Perform system domain restore if woken up from system suspend */
if
(
CSS_SYSTEM_PWR_STATE
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
if
(
css_system_pwr_state
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
/*
* At this point, the Distributor must be powered on to be ready
* to have its state restored. The Redistributor will be powered
...
...
@@ -263,12 +263,24 @@ static int css_validate_power_state(unsigned int power_state,
int
rc
;
rc
=
arm_validate_power_state
(
power_state
,
req_state
);
/*
* Ensure that we don't overrun the pwr_domain_state array in the case
* where the platform supported max power level is less than the system
* power level
*/
#if (PLAT_MAX_PWR_LVL == CSS_SYSTEM_PWR_DMN_LVL)
/*
* Ensure that the system power domain level is never suspended
* via PSCI CPU SUSPEND API. Currently system suspend is only
* supported via PSCI SYSTEM SUSPEND API.
*/
req_state
->
pwr_domain_state
[
CSS_SYSTEM_PWR_DMN_LVL
]
=
ARM_LOCAL_STATE_RUN
;
req_state
->
pwr_domain_state
[
CSS_SYSTEM_PWR_DMN_LVL
]
=
ARM_LOCAL_STATE_RUN
;
#endif
return
rc
;
}
...
...
This diff is collapsed.
Click to expand it.
plat/arm/css/drivers/scp/css_pm_scmi.c
View file @
a4551739
...
...
@@ -87,7 +87,7 @@ void css_scp_suspend(const struct psci_power_state *target_state)
ARM_LOCAL_STATE_OFF
);
/* Check if power down at system power domain level is requested */
if
(
CSS_SYSTEM_PWR_STATE
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
{
if
(
css_system_pwr_state
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
{
/* Issue SCMI command for SYSTEM_SUSPEND */
ret
=
scmi_sys_pwr_state_set
(
scmi_handle
,
SCMI_SYS_PWR_FORCEFUL_REQ
,
...
...
This diff is collapsed.
Click to expand it.
plat/arm/css/drivers/scp/css_pm_scpi.c
View file @
a4551739
...
...
@@ -25,7 +25,7 @@ void css_scp_suspend(const struct psci_power_state *target_state)
uint32_t
system_state
=
scpi_power_on
;
/* Check if power down at system power domain level is requested */
if
(
CSS_SYSTEM_PWR_STATE
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
if
(
css_system_pwr_state
(
target_state
)
==
ARM_LOCAL_STATE_OFF
)
system_state
=
scpi_power_retention
;
/* Cluster is to be turned off, so disable coherency */
...
...
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help