diff options
author | Soren Brinkmann <soren.brinkmann@xilinx.com> | 2013-08-01 09:36:53 -0700 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2013-08-20 07:32:13 +0200 |
commit | b522877b53cf3f26d7f072616a45e10fe579cd19 (patch) | |
tree | c046826f16217811a59e70531c6be485fc0d62c1 /arch/arm/mach-zynq | |
parent | 3db9e86029349c2c84928b5a0f7c7cf324243b4f (diff) | |
download | talos-op-linux-b522877b53cf3f26d7f072616a45e10fe579cd19.tar.gz talos-op-linux-b522877b53cf3f26d7f072616a45e10fe579cd19.zip |
arm: zynq: hotplug: Remove unreachable code
zynq_platform_do_lowpower() does never return. Hence remove
all code which relies on that function returning and consolidate the
remains.
Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'arch/arm/mach-zynq')
-rw-r--r-- | arch/arm/mach-zynq/hotplug.c | 55 |
1 files changed, 5 insertions, 50 deletions
diff --git a/arch/arm/mach-zynq/hotplug.c b/arch/arm/mach-zynq/hotplug.c index c89672bd1de2..5052c70326e4 100644 --- a/arch/arm/mach-zynq/hotplug.c +++ b/arch/arm/mach-zynq/hotplug.c @@ -40,44 +40,6 @@ static inline void zynq_cpu_enter_lowpower(void) : "cc"); } -static inline void zynq_cpu_leave_lowpower(void) -{ - unsigned int v; - - asm volatile( - " mrc p15, 0, %0, c1, c0, 0\n" - " orr %0, %0, %1\n" - " mcr p15, 0, %0, c1, c0, 0\n" - " mrc p15, 0, %0, c1, c0, 1\n" - " orr %0, %0, #0x40\n" - " mcr p15, 0, %0, c1, c0, 1\n" - : "=&r" (v) - : "Ir" (CR_C) - : "cc"); -} - -static inline void zynq_platform_do_lowpower(unsigned int cpu, int *spurious) -{ - /* - * there is no power-control hardware on this platform, so all - * we can do is put the core into WFI; this is safe as the calling - * code will have already disabled interrupts - */ - for (;;) { - dsb(); - wfi(); - - /* - * Getting here, means that we have come out of WFI without - * having been woken up - this shouldn't happen - * - * Just note it happening - when we're woken, we can report - * its occurrence. - */ - (*spurious)++; - } -} - /* * platform-specific code to shutdown a CPU * @@ -85,20 +47,13 @@ static inline void zynq_platform_do_lowpower(unsigned int cpu, int *spurious) */ void zynq_platform_cpu_die(unsigned int cpu) { - int spurious = 0; - - /* - * we're ready for shutdown now, so do it - */ zynq_cpu_enter_lowpower(); - zynq_platform_do_lowpower(cpu, &spurious); /* - * bring this CPU back into the world of cache - * coherency, and then restore interrupts + * there is no power-control hardware on this platform, so all + * we can do is put the core into WFI; this is safe as the calling + * code will have already disabled interrupts */ - zynq_cpu_leave_lowpower(); - - if (spurious) - pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious); + for (;;) + cpu_do_idle(); } |