提交 f50ee824 编写于 作者: G Gregory CLEMENT 提交者: Jason Cooper

cpuidle: mvebu: rename the driver from armada-370-xp to mvebu-v7

This driver will be able to manage the cpuidle for more SoCs than just
Armada 370 and XP. It will also support Armada 38x and potentially
other SoC of the Marvell Armada EBU family. To take this into account,
this patch renames the driver and its symbols.

It also changes the driver name from cpuidle-armada-370-xp to
cpuidle-armada-xp, because separate platform drivers will be
registered for the other SoC types. This change must be done
simultaneously in the cpuidle driver and in the PMSU code in order to
remain bisectable.
Signed-off-by: NGregory CLEMENT <gregory.clement@free-electrons.com>
Signed-off-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Acked-by: NDaniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lkml.kernel.org/r/1406120453-29291-12-git-send-email-thomas.petazzoni@free-electrons.comSigned-off-by: NJason Cooper <jason@lakedaemon.net>
上级 6a2b5343
...@@ -76,7 +76,7 @@ extern void armada_370_xp_cpu_resume(void); ...@@ -76,7 +76,7 @@ extern void armada_370_xp_cpu_resume(void);
static void *mvebu_cpu_resume; static void *mvebu_cpu_resume;
static struct platform_device mvebu_v7_cpuidle_device = { static struct platform_device mvebu_v7_cpuidle_device = {
.name = "cpuidle-armada-370-xp", .name = "cpuidle-armada-xp",
}; };
static struct of_device_id of_pmsu_table[] = { static struct of_device_id of_pmsu_table[] = {
......
# #
# ARM CPU Idle drivers # ARM CPU Idle drivers
# #
config ARM_ARMADA_370_XP_CPUIDLE
bool "CPU Idle Driver for Armada 370/XP family processors"
depends on ARCH_MVEBU
help
Select this to enable cpuidle on Armada 370/XP processors.
config ARM_BIG_LITTLE_CPUIDLE config ARM_BIG_LITTLE_CPUIDLE
bool "Support for ARM big.LITTLE processors" bool "Support for ARM big.LITTLE processors"
depends on ARCH_VEXPRESS_TC2_PM depends on ARCH_VEXPRESS_TC2_PM
...@@ -61,3 +55,9 @@ config ARM_EXYNOS_CPUIDLE ...@@ -61,3 +55,9 @@ config ARM_EXYNOS_CPUIDLE
depends on ARCH_EXYNOS depends on ARCH_EXYNOS
help help
Select this to enable cpuidle for Exynos processors Select this to enable cpuidle for Exynos processors
config ARM_MVEBU_V7_CPUIDLE
bool "CPU Idle Driver for mvebu v7 family processors"
depends on ARCH_MVEBU
help
Select this to enable cpuidle on Armada 370, 38x and XP processors.
...@@ -7,7 +7,7 @@ obj-$(CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED) += coupled.o ...@@ -7,7 +7,7 @@ obj-$(CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED) += coupled.o
################################################################################## ##################################################################################
# ARM SoC drivers # ARM SoC drivers
obj-$(CONFIG_ARM_ARMADA_370_XP_CPUIDLE) += cpuidle-armada-370-xp.o obj-$(CONFIG_ARM_MVEBU_V7_CPUIDLE) += cpuidle-mvebu-v7.o
obj-$(CONFIG_ARM_BIG_LITTLE_CPUIDLE) += cpuidle-big_little.o obj-$(CONFIG_ARM_BIG_LITTLE_CPUIDLE) += cpuidle-big_little.o
obj-$(CONFIG_ARM_CLPS711X_CPUIDLE) += cpuidle-clps711x.o obj-$(CONFIG_ARM_CLPS711X_CPUIDLE) += cpuidle-clps711x.o
obj-$(CONFIG_ARM_HIGHBANK_CPUIDLE) += cpuidle-calxeda.o obj-$(CONFIG_ARM_HIGHBANK_CPUIDLE) += cpuidle-calxeda.o
......
...@@ -21,12 +21,11 @@ ...@@ -21,12 +21,11 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <asm/cpuidle.h> #include <asm/cpuidle.h>
#define ARMADA_370_XP_MAX_STATES 3 #define MVEBU_V7_FLAG_DEEP_IDLE 0x10000
#define ARMADA_370_XP_FLAG_DEEP_IDLE 0x10000
static int (*armada_370_xp_cpu_suspend)(int); static int (*mvebu_v7_cpu_suspend)(int);
static int armada_370_xp_enter_idle(struct cpuidle_device *dev, static int mvebu_v7_enter_idle(struct cpuidle_device *dev,
struct cpuidle_driver *drv, struct cpuidle_driver *drv,
int index) int index)
{ {
...@@ -34,10 +33,10 @@ static int armada_370_xp_enter_idle(struct cpuidle_device *dev, ...@@ -34,10 +33,10 @@ static int armada_370_xp_enter_idle(struct cpuidle_device *dev,
bool deepidle = false; bool deepidle = false;
cpu_pm_enter(); cpu_pm_enter();
if (drv->states[index].flags & ARMADA_370_XP_FLAG_DEEP_IDLE) if (drv->states[index].flags & MVEBU_V7_FLAG_DEEP_IDLE)
deepidle = true; deepidle = true;
ret = armada_370_xp_cpu_suspend(deepidle); ret = mvebu_v7_cpu_suspend(deepidle);
if (ret) if (ret)
return ret; return ret;
...@@ -46,11 +45,11 @@ static int armada_370_xp_enter_idle(struct cpuidle_device *dev, ...@@ -46,11 +45,11 @@ static int armada_370_xp_enter_idle(struct cpuidle_device *dev,
return index; return index;
} }
static struct cpuidle_driver armada_370_xp_idle_driver = { static struct cpuidle_driver armadaxp_idle_driver = {
.name = "armada_370_xp_idle", .name = "armada_xp_idle",
.states[0] = ARM_CPUIDLE_WFI_STATE, .states[0] = ARM_CPUIDLE_WFI_STATE,
.states[1] = { .states[1] = {
.enter = armada_370_xp_enter_idle, .enter = mvebu_v7_enter_idle,
.exit_latency = 10, .exit_latency = 10,
.power_usage = 50, .power_usage = 50,
.target_residency = 100, .target_residency = 100,
...@@ -59,35 +58,35 @@ static struct cpuidle_driver armada_370_xp_idle_driver = { ...@@ -59,35 +58,35 @@ static struct cpuidle_driver armada_370_xp_idle_driver = {
.desc = "CPU power down", .desc = "CPU power down",
}, },
.states[2] = { .states[2] = {
.enter = armada_370_xp_enter_idle, .enter = mvebu_v7_enter_idle,
.exit_latency = 100, .exit_latency = 100,
.power_usage = 5, .power_usage = 5,
.target_residency = 1000, .target_residency = 1000,
.flags = CPUIDLE_FLAG_TIME_VALID | .flags = CPUIDLE_FLAG_TIME_VALID |
ARMADA_370_XP_FLAG_DEEP_IDLE, MVEBU_V7_FLAG_DEEP_IDLE,
.name = "MV CPU DEEP IDLE", .name = "MV CPU DEEP IDLE",
.desc = "CPU and L2 Fabric power down", .desc = "CPU and L2 Fabric power down",
}, },
.state_count = ARMADA_370_XP_MAX_STATES, .state_count = 3,
}; };
static int armada_370_xp_cpuidle_probe(struct platform_device *pdev) static int mvebu_v7_cpuidle_probe(struct platform_device *pdev)
{ {
armada_370_xp_cpu_suspend = (void *)(pdev->dev.platform_data); mvebu_v7_cpu_suspend = pdev->dev.platform_data;
return cpuidle_register(&armada_370_xp_idle_driver, NULL); return cpuidle_register(&armadaxp_idle_driver, NULL);
} }
static struct platform_driver armada_370_xp_cpuidle_plat_driver = { static struct platform_driver armadaxp_cpuidle_plat_driver = {
.driver = { .driver = {
.name = "cpuidle-armada-370-xp", .name = "cpuidle-armada-xp",
.owner = THIS_MODULE, .owner = THIS_MODULE,
}, },
.probe = armada_370_xp_cpuidle_probe, .probe = mvebu_v7_cpuidle_probe,
}; };
module_platform_driver(armada_370_xp_cpuidle_plat_driver); module_platform_driver(armadaxp_cpuidle_plat_driver);
MODULE_AUTHOR("Gregory CLEMENT <gregory.clement@free-electrons.com>"); MODULE_AUTHOR("Gregory CLEMENT <gregory.clement@free-electrons.com>");
MODULE_DESCRIPTION("Armada 370/XP cpu idle driver"); MODULE_DESCRIPTION("Marvell EBU v7 cpuidle driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册