![Rob Herring](/assets/img/avatar_default.png)
In preparation for A15 support on ECX-2000, the direct calls to SCU registers must be conditional. The SCU power mode register is replaced by a custom register on ECX-2000. Rather than read the number of cores from the SCU, just hardcode it to 4. This removes one use of SCU and removes the need for the SCU to be statically mapped. The cpu initialization will ultimately come from DT. Signed-off-by: Rob Herring <rob.herring@calxeda.com> Acked-by: Arnd Bergmann <arnd@arndb.de>
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
/*
|
|
* Copyright 2011 Calxeda, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms and conditions of the GNU General Public License,
|
|
* version 2, as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with
|
|
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#include <linux/kernel.h>
|
|
|
|
#include <asm/cacheflush.h>
|
|
|
|
#include "core.h"
|
|
#include "sysregs.h"
|
|
|
|
extern void secondary_startup(void);
|
|
|
|
/*
|
|
* platform-specific code to shutdown a CPU
|
|
*
|
|
*/
|
|
void __ref highbank_cpu_die(unsigned int cpu)
|
|
{
|
|
flush_cache_all();
|
|
|
|
highbank_set_cpu_jump(cpu, secondary_startup);
|
|
highbank_set_core_pwr();
|
|
|
|
cpu_do_idle();
|
|
|
|
/* We should never return from idle */
|
|
panic("highbank: cpu %d unexpectedly exit from shutdown\n", cpu);
|
|
}
|