Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 91111
b: refs/heads/master
c: b7b0ba9
h: refs/heads/master
i:
  91109: 11d8206
  91107: 152d049
  91103: 14af99b
v: v3
  • Loading branch information
Catalin Marinas committed Apr 18, 2008
1 parent ca06683 commit 784b8b4
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 41 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: cb170a45d69b573a08247acfbbff3b9d6e6e2f8f
refs/heads/master: b7b0ba942f7b18de678cd081902aad8a0b6581c6
43 changes: 35 additions & 8 deletions trunk/arch/arm/mach-realview/platsmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,13 @@
#include <linux/smp.h>

#include <asm/cacheflush.h>
#include <asm/hardware/arm_scu.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/mach-types.h>

#include <asm/arch/board-eb.h>
#include <asm/arch/scu.h>

extern void realview_secondary_startup(void);

/*
Expand All @@ -31,16 +33,38 @@ volatile int __cpuinitdata pen_release = -1;
static unsigned int __init get_core_count(void)
{
unsigned int ncores;
void __iomem *scu_base = 0;

if (machine_is_realview_eb() && core_tile_eb11mp())
scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE);

if (machine_is_realview_eb() && core_tile_eb11mp()) {
ncores = __raw_readl(__io_address(REALVIEW_EB11MP_SCU_BASE) + SCU_CONFIG);
if (scu_base) {
ncores = __raw_readl(scu_base + SCU_CONFIG);
ncores = (ncores & 0x03) + 1;
} else
ncores = 1;

return ncores;
}

/*
* Setup the SCU
*/
static void scu_enable(void)
{
u32 scu_ctrl;
void __iomem *scu_base;

if (machine_is_realview_eb() && core_tile_eb11mp())
scu_base = __io_address(REALVIEW_EB11MP_SCU_BASE);
else
BUG();

scu_ctrl = __raw_readl(scu_base + SCU_CTRL);
scu_ctrl |= 1;
__raw_writel(scu_ctrl, scu_base + SCU_CTRL);
}

static DEFINE_SPINLOCK(boot_lock);

void __cpuinit platform_secondary_init(unsigned int cpu)
Expand Down Expand Up @@ -210,11 +234,14 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
cpu_set(i, cpu_present_map);

/*
* Do we need any more CPUs? If so, then let them know where
* to start. Note that, on modern versions of MILO, the "poke"
* doesn't actually do anything until each individual core is
* sent a soft interrupt to get it out of WFI
* Initialise the SCU if there are more than one CPU and let
* them know where to start. Note that, on modern versions of
* MILO, the "poke" doesn't actually do anything until each
* individual core is sent a soft interrupt to get it out of
* WFI
*/
if (max_cpus > 1)
if (max_cpus > 1) {
scu_enable();
poke_milo();
}
}
14 changes: 0 additions & 14 deletions trunk/arch/arm/mm/proc-v6.S
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@
#include <asm/pgtable-hwdef.h>
#include <asm/pgtable.h>

#ifdef CONFIG_SMP
#include <asm/hardware/arm_scu.h>
#endif

#include "proc-macros.S"

#define D_CACHE_LINE_SIZE 32
Expand Down Expand Up @@ -187,19 +183,9 @@ cpu_v6_name:
*/
__v6_setup:
#ifdef CONFIG_SMP
/* Set up the SCU on core 0 only */
mrc p15, 0, r0, c0, c0, 5 @ CPU core number
ands r0, r0, #15
ldreq r0, =SCU_BASE
ldreq r5, [r0, #SCU_CTRL]
orreq r5, r5, #1
streq r5, [r0, #SCU_CTRL]

#ifndef CONFIG_CPU_DCACHE_DISABLE
mrc p15, 0, r0, c1, c0, 1 @ Enable SMP/nAMP mode
orr r0, r0, #0x20
mcr p15, 0, r0, c1, c0, 1
#endif
#endif

mov r0, #0
Expand Down
11 changes: 8 additions & 3 deletions trunk/include/asm-arm/arch-realview/scu.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
#ifndef __ASMARM_ARCH_SCU_H
#define __ASMARM_ARCH_SCU_H

#include <asm/arch/board-eb.h>

#define SCU_BASE REALVIEW_EB11MP_SCU_BASE
/*
* SCU registers
*/
#define SCU_CTRL 0x00
#define SCU_CONFIG 0x04
#define SCU_CPU_STATUS 0x08
#define SCU_INVALIDATE 0x0c
#define SCU_FPGA_REVISION 0x10

#endif
15 changes: 0 additions & 15 deletions trunk/include/asm-arm/hardware/arm_scu.h

This file was deleted.

0 comments on commit 784b8b4

Please sign in to comment.