diff options
Diffstat (limited to 'arch/arm/mach-mvebu/pmsu.c')
-rw-r--r-- | arch/arm/mach-mvebu/pmsu.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/mach-mvebu/pmsu.c b/arch/arm/mach-mvebu/pmsu.c index 8b9f5e202ccf..4f4e22206ae5 100644 --- a/arch/arm/mach-mvebu/pmsu.c +++ b/arch/arm/mach-mvebu/pmsu.c | |||
@@ -415,6 +415,9 @@ static __init int armada_38x_cpuidle_init(void) | |||
415 | void __iomem *mpsoc_base; | 415 | void __iomem *mpsoc_base; |
416 | u32 reg; | 416 | u32 reg; |
417 | 417 | ||
418 | pr_warn("CPU idle is currently broken on Armada 38x: disabling"); | ||
419 | return 0; | ||
420 | |||
418 | np = of_find_compatible_node(NULL, NULL, | 421 | np = of_find_compatible_node(NULL, NULL, |
419 | "marvell,armada-380-coherency-fabric"); | 422 | "marvell,armada-380-coherency-fabric"); |
420 | if (!np) | 423 | if (!np) |
@@ -476,6 +479,16 @@ static int __init mvebu_v7_cpu_pm_init(void) | |||
476 | return 0; | 479 | return 0; |
477 | of_node_put(np); | 480 | of_node_put(np); |
478 | 481 | ||
482 | /* | ||
483 | * Currently the CPU idle support for Armada 38x is broken, as | ||
484 | * the CPU hotplug uses some of the CPU idle functions it is | ||
485 | * broken too, so let's disable it | ||
486 | */ | ||
487 | if (of_machine_is_compatible("marvell,armada380")) { | ||
488 | cpu_hotplug_disable(); | ||
489 | pr_warn("CPU hotplug support is currently broken on Armada 38x: disabling"); | ||
490 | } | ||
491 | |||
479 | if (of_machine_is_compatible("marvell,armadaxp")) | 492 | if (of_machine_is_compatible("marvell,armadaxp")) |
480 | ret = armada_xp_cpuidle_init(); | 493 | ret = armada_xp_cpuidle_init(); |
481 | else if (of_machine_is_compatible("marvell,armada370")) | 494 | else if (of_machine_is_compatible("marvell,armada370")) |
@@ -489,7 +502,8 @@ static int __init mvebu_v7_cpu_pm_init(void) | |||
489 | return ret; | 502 | return ret; |
490 | 503 | ||
491 | mvebu_v7_pmsu_enable_l2_powerdown_onidle(); | 504 | mvebu_v7_pmsu_enable_l2_powerdown_onidle(); |
492 | platform_device_register(&mvebu_v7_cpuidle_device); | 505 | if (mvebu_v7_cpuidle_device.name) |
506 | platform_device_register(&mvebu_v7_cpuidle_device); | ||
493 | cpu_pm_register_notifier(&mvebu_v7_cpu_pm_notifier); | 507 | cpu_pm_register_notifier(&mvebu_v7_cpu_pm_notifier); |
494 | 508 | ||
495 | return 0; | 509 | return 0; |