@@ -72,6 +72,22 @@ static struct cpuidle_driver armadaxp_cpuidle_driver = {
.state_count = 3,
};
+static struct cpuidle_driver armada370_cpuidle_driver = {
+ .name = "armada_370_idle",
+ .states[0] = ARM_CPUIDLE_WFI_STATE,
+ .states[1] = {
+ .enter = mvebu_v7_enter_idle,
+ .exit_latency = 100,
+ .power_usage = 5,
+ .target_residency = 1000,
+ .flags = (CPUIDLE_FLAG_TIME_VALID |
+ MVEBU_V7_FLAG_DEEP_IDLE),
+ .name = "Deep Idle",
+ .desc = "CPU and L2 Fabric power down",
+ },
+ .state_count = 2,
+};
+
static int mvebu_v7_cpuidle_probe(struct platform_device *pdev)
{
struct cpuidle_driver *drv;
@@ -80,6 +96,8 @@ static int mvebu_v7_cpuidle_probe(struct platform_device *pdev)
if (pcpuidle->type == CPUIDLE_ARMADA_XP)
drv = &armadaxp_cpuidle_driver;
+ else if (pcpuidle->type == CPUIDLE_ARMADA_370)
+ drv = &armada370_cpuidle_driver;
else
return -EINVAL;
@@ -16,6 +16,7 @@
enum mvebu_v7_cpuidle_types {
CPUIDLE_ARMADA_XP,
+ CPUIDLE_ARMADA_370,
};
struct mvebu_v7_cpuidle {
This commit adds the list of cpuidle states supported by the Armada 370 SoC in the cpuidle-mvebu-v7 driver, as well as the necessary logic around it to support this SoC. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> --- drivers/cpuidle/cpuidle-mvebu-v7.c | 18 ++++++++++++++++++ include/linux/mvebu-v7-cpuidle.h | 1 + 2 files changed, 19 insertions(+)