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
a4551739
Unverified
Commit
a4551739
authored
Jun 25, 2018
by
Dimitris Papastamos
Committed by
GitHub
Jun 25, 2018
Browse files
Merge pull request #1448 from npoushin/npoushin/sgi575-coverity-fixes
npoushin/sgi575 coverity fixes
parents
562e0e8a
8e26307d
Changes
4
Hide whitespace changes
Inline
Side-by-side
include/plat/arm/css/common/css_pm.h
View file @
a4551739
...
@@ -17,9 +17,15 @@
...
@@ -17,9 +17,15 @@
/* Macros to read the CSS power domain state */
/* Macros to read the CSS power domain state */
#define CSS_CORE_PWR_STATE(state) (state)->pwr_domain_state[ARM_PWR_LVL0]
#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_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) ?\
static
inline
unsigned
int
css_system_pwr_state
(
const
psci_power_state_t
*
state
)
(state)->pwr_domain_state[CSS_SYSTEM_PWR_DMN_LVL] : 0)
{
#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
);
int
css_pwr_domain_on
(
u_register_t
mpidr
);
void
css_pwr_domain_on_finish
(
const
psci_power_state_t
*
target_state
);
void
css_pwr_domain_on_finish
(
const
psci_power_state_t
*
target_state
);
...
...
plat/arm/css/common/css_pm.c
View file @
a4551739
...
@@ -96,7 +96,7 @@ static void css_pwr_domain_on_finisher_common(
...
@@ -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
)
void
css_pwr_domain_on_finish
(
const
psci_power_state_t
*
target_state
)
{
{
/* Assert that the system power domain need not be initialized */
/* 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 */
/* Program the gic per-cpu distributor or re-distributor interface */
plat_arm_gic_pcpu_init
();
plat_arm_gic_pcpu_init
();
...
@@ -149,7 +149,7 @@ void css_pwr_domain_suspend(const psci_power_state_t *target_state)
...
@@ -149,7 +149,7 @@ void css_pwr_domain_suspend(const psci_power_state_t *target_state)
css_power_down_common
(
target_state
);
css_power_down_common
(
target_state
);
/* Perform system domain state saving if issuing system suspend */
/* 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
();
arm_system_pwr_domain_save
();
/* Power off the Redistributor after having saved its context */
/* Power off the Redistributor after having saved its context */
...
@@ -174,7 +174,7 @@ void css_pwr_domain_suspend_finish(
...
@@ -174,7 +174,7 @@ void css_pwr_domain_suspend_finish(
return
;
return
;
/* Perform system domain restore if woken up from system suspend */
/* 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
* At this point, the Distributor must be powered on to be ready
* to have its state restored. The Redistributor will be powered
* to have its state restored. The Redistributor will be powered
...
@@ -263,12 +263,24 @@ static int css_validate_power_state(unsigned int power_state,
...
@@ -263,12 +263,24 @@ static int css_validate_power_state(unsigned int power_state,
int
rc
;
int
rc
;
rc
=
arm_validate_power_state
(
power_state
,
req_state
);
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
* Ensure that the system power domain level is never suspended
* via PSCI CPU SUSPEND API. Currently system suspend is only
* via PSCI CPU SUSPEND API. Currently system suspend is only
* supported via PSCI SYSTEM SUSPEND API.
* 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
;
return
rc
;
}
}
...
...
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)
...
@@ -87,7 +87,7 @@ void css_scp_suspend(const struct psci_power_state *target_state)
ARM_LOCAL_STATE_OFF
);
ARM_LOCAL_STATE_OFF
);
/* Check if power down at system power domain level is requested */
/* 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 */
/* Issue SCMI command for SYSTEM_SUSPEND */
ret
=
scmi_sys_pwr_state_set
(
scmi_handle
,
ret
=
scmi_sys_pwr_state_set
(
scmi_handle
,
SCMI_SYS_PWR_FORCEFUL_REQ
,
SCMI_SYS_PWR_FORCEFUL_REQ
,
...
...
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)
...
@@ -25,7 +25,7 @@ void css_scp_suspend(const struct psci_power_state *target_state)
uint32_t
system_state
=
scpi_power_on
;
uint32_t
system_state
=
scpi_power_on
;
/* Check if power down at system power domain level is requested */
/* 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
;
system_state
=
scpi_power_retention
;
/* Cluster is to be turned off, so disable coherency */
/* Cluster is to be turned off, so disable coherency */
...
...
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