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
7bcbb962
Commit
7bcbb962
authored
Jul 07, 2015
by
Achin Gupta
Browse files
Merge pull request #329 from vwadekar/tegra-system-suspend-v3
Implement get_sys_suspend_power_state() handler for Tegra
parents
484bb385
94c672e7
Changes
4
Show whitespace changes
Inline
Side-by-side
docs/plat/nvidia-tegra.md
View file @
7bcbb962
...
@@ -28,3 +28,10 @@ Preparing the BL31 image to run on Tegra SoCs
...
@@ -28,3 +28,10 @@ Preparing the BL31 image to run on Tegra SoCs
CROSS_COMPILE=
<path-to-aarch64-gcc>
/bin/aarch64-none-elf- make PLAT=tegra
\
CROSS_COMPILE=
<path-to-aarch64-gcc>
/bin/aarch64-none-elf- make PLAT=tegra
\
TARGET_SOC=
<target-soc
e.g.
t210
>
BL32=
<path-to-trusted-os-binary>
\
TARGET_SOC=
<target-soc
e.g.
t210
>
BL32=
<path-to-trusted-os-binary>
\
SPD=
<dispatcher
e.g.
tlkd
>
all
SPD=
<dispatcher
e.g.
tlkd
>
all
Power Management
================
The PSCI implementation expects each platform to expose the 'power state'
parameter to be used during the 'SYSTEM SUSPEND' call. The state-id field
is implementation defined on Tegra SoCs and is preferably defined by
tegra_def.h.
plat/nvidia/tegra/common/tegra_pm.c
View file @
7bcbb962
...
@@ -113,6 +113,22 @@ void tegra_affinst_standby(unsigned int power_state)
...
@@ -113,6 +113,22 @@ void tegra_affinst_standby(unsigned int power_state)
wfi
();
wfi
();
}
}
/*******************************************************************************
* This handler is called by the PSCI implementation during the `SYSTEM_SUSPEND`
* call to get the `power_state` parameter. This allows the platform to encode
* the appropriate State-ID field within the `power_state` parameter which can
* be utilized in `affinst_suspend()` to suspend to system affinity level.
******************************************************************************/
unsigned
int
tegra_get_sys_suspend_power_state
(
void
)
{
unsigned
int
power_state
;
power_state
=
psci_make_powerstate
(
PLAT_SYS_SUSPEND_STATE_ID
,
PSTATE_TYPE_POWERDOWN
,
MPIDR_AFFLVL2
);
return
power_state
;
}
/*******************************************************************************
/*******************************************************************************
* Handler called to check the validity of the power state parameter.
* Handler called to check the validity of the power state parameter.
******************************************************************************/
******************************************************************************/
...
@@ -310,7 +326,8 @@ static const plat_pm_ops_t tegra_plat_pm_ops = {
...
@@ -310,7 +326,8 @@ static const plat_pm_ops_t tegra_plat_pm_ops = {
.
affinst_suspend_finish
=
tegra_affinst_suspend_finish
,
.
affinst_suspend_finish
=
tegra_affinst_suspend_finish
,
.
system_off
=
tegra_system_off
,
.
system_off
=
tegra_system_off
,
.
system_reset
=
tegra_system_reset
,
.
system_reset
=
tegra_system_reset
,
.
validate_power_state
=
tegra_validate_power_state
.
validate_power_state
=
tegra_validate_power_state
,
.
get_sys_suspend_power_state
=
tegra_get_sys_suspend_power_state
};
};
/*******************************************************************************
/*******************************************************************************
...
...
plat/nvidia/tegra/include/t210/tegra_def.h
View file @
7bcbb962
...
@@ -33,6 +33,20 @@
...
@@ -33,6 +33,20 @@
#include <platform_def.h>
#include <platform_def.h>
/*******************************************************************************
* Power down state IDs
******************************************************************************/
#define PSTATE_ID_CORE_POWERDN 7
#define PSTATE_ID_CLUSTER_IDLE 16
#define PSTATE_ID_CLUSTER_POWERDN 17
#define PSTATE_ID_SOC_POWERDN 27
/*******************************************************************************
* This value is used by the PSCI implementation during the `SYSTEM_SUSPEND`
* call as the `state-id` field in the 'power state' parameter.
******************************************************************************/
#define PLAT_SYS_SUSPEND_STATE_ID PSTATE_ID_SOC_POWERDN
/*******************************************************************************
/*******************************************************************************
* Implementation defined ACTLR_EL3 bit definitions
* Implementation defined ACTLR_EL3 bit definitions
******************************************************************************/
******************************************************************************/
...
...
plat/nvidia/tegra/soc/t210/plat_psci_handlers.c
View file @
7bcbb962
...
@@ -40,12 +40,6 @@
...
@@ -40,12 +40,6 @@
#include <tegra_def.h>
#include <tegra_def.h>
#include <tegra_private.h>
#include <tegra_private.h>
/* Power down state IDs */
#define PSTATE_ID_CORE_POWERDN 7
#define PSTATE_ID_CLUSTER_IDLE 16
#define PSTATE_ID_CLUSTER_POWERDN 17
#define PSTATE_ID_SOC_POWERDN 27
static
int
cpu_powergate_mask
[
PLATFORM_MAX_CPUS_PER_CLUSTER
];
static
int
cpu_powergate_mask
[
PLATFORM_MAX_CPUS_PER_CLUSTER
];
int
tegra_prepare_cpu_suspend
(
unsigned
int
id
,
unsigned
int
afflvl
)
int
tegra_prepare_cpu_suspend
(
unsigned
int
id
,
unsigned
int
afflvl
)
...
...
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