1 /* 2 * Copyright (C) STMicroelectronics 2009 3 * Copyright (C) ST-Ericsson SA 2010 4 * 5 * License Terms: GNU General Public License v2 6 * Based on ARM realview platform 7 * 8 * Author: Sundar Iyer <sundar.iyer@stericsson.com> 9 * 10 */ 11 #include <linux/kernel.h> 12 #include <linux/errno.h> 13 #include <linux/smp.h> 14 15 #include <asm/smp_plat.h> 16 17 #include "setup.h" 18 19 /* 20 * platform-specific code to shutdown a CPU 21 * 22 * Called with IRQs disabled 23 */ ux500_cpu_die(unsigned int cpu)24void ux500_cpu_die(unsigned int cpu) 25 { 26 /* directly enter low power state, skipping secure registers */ 27 for (;;) { 28 __asm__ __volatile__("dsb\n\t" "wfi\n\t" 29 : : : "memory"); 30 if (pen_release == cpu_logical_map(cpu)) { 31 /* 32 * OK, proper wakeup, we're done 33 */ 34 break; 35 } 36 } 37 } 38