Skip to contentSkip to conversation

ARM: shmobile: r8a7790 SMP prototype v1 (CA15 x 4)

PATCH New Magnus Damm 1 participant 1 message Jun 12, 2013

Subsystems (5)
lore
Share & tools
lore

Magnus Damm

author maintainer
#0 lore raw

PATCH 1/1 ARM: shmobile: r8a7790 SMP prototype v1 (CA15 x 4)

From: Magnus Damm <[email protected]>

Add SMP prototype support for r8a7790 by enabling 4 x Cortex-A15. This patch only adds support for booting, at this point no CPU Hotplug is included.

Needs a rewrite to support more generic handling of CPU core power domains. Not ready for merge.

Not-yet-Signed-off-by Magnus Damm <[email protected]>

---

Developed and tested on top of v3.10-rc5 and
[PATCH 01/05] ARM: shmobile: r8a73a4 SMP prototype v1 (CA15 x 4)

 arch/arm/boot/dts/r8a7790.dtsi                |   21 +++++
 arch/arm/mach-shmobile/Makefile               |    1 
 arch/arm/mach-shmobile/board-lager.c          |    1 
 arch/arm/mach-shmobile/include/mach/r8a7790.h |    1 
 arch/arm/mach-shmobile/setup-r8a7790.c        |    1 
 arch/arm/mach-shmobile/smp-r8a7790.c          |  100 +++++++++++++++++++++++++
 6 files changed, 125 insertions(+)
arch/arm/boot/dts/r8a7790.dtsi +21 -0
@@ -24,6 +24,27 @@
 			reg = <0>;
 			clock-frequency = <1300000000>;
 		};
+
+		cpu1: cpu@1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a15";
+			reg = <1>;
+			clock-frequency = <1300000000>;
+		};
+
+		cpu2: cpu@2 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a15";
+			reg = <2>;
+			clock-frequency = <1300000000>;
+		};
+
+		cpu3: cpu@3 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a15";
+			reg = <3>;
+			clock-frequency = <1300000000>;
+		};
 	};
 
 	gic: interrupt-controller@f1001000 {
arch/arm/mach-shmobile/Makefile +1 -0
@@ -20,6 +20,7 @@ smp-y				:= platsmp.o headsmp.o
 smp-$(CONFIG_ARCH_SH73A0)	+= smp-sh73a0.o headsmp-scu.o
 smp-$(CONFIG_ARCH_R8A73A4)	+= smp-r8a73a4.o
 smp-$(CONFIG_ARCH_R8A7779)	+= smp-r8a7779.o headsmp-scu.o
+smp-$(CONFIG_ARCH_R8A7790)	+= smp-r8a7790.o
 smp-$(CONFIG_ARCH_EMEV2)	+= smp-emev2.o headsmp-scu.o
 
 # IRQ objects
arch/arm/mach-shmobile/board-lager.c +1 -0
@@ -39,6 +39,7 @@ static const char *lager_boards_compat_d
 };
 
 DT_MACHINE_START(LAGER_DT, "lager")
+	.smp		= smp_ops(r8a7790_smp_ops),
 	.init_irq	= irqchip_init,
 	.init_time	= r8a7790_timer_init,
 	.init_machine	= lager_add_standard_devices,
arch/arm/mach-shmobile/include/mach/r8a7790.h +1 -0
@@ -5,5 +5,6 @@ void r8a7790_add_standard_devices(void);
 void r8a7790_clock_init(void);
 void r8a7790_pinmux_init(void);
 void r8a7790_timer_init(void);
+extern struct smp_operations r8a7790_smp_ops;
 
 #endif /* __ASM_R8A7790_H__ */
arch/arm/mach-shmobile/setup-r8a7790.c +1 -0
@@ -142,6 +142,7 @@ static const char *r8a7790_boards_compat
 };
 
 DT_MACHINE_START(R8A7790_DT, "Generic R8A7790 (Flattened Device Tree)")
+	.smp		= smp_ops(r8a7790_smp_ops),
 	.init_irq	= irqchip_init,
 	.init_machine	= r8a7790_add_standard_devices_dt,
 	.init_time	= r8a7790_timer_init,
arch/arm/mach-shmobile/smp-r8a7790.c new file +100 -0

100 lines not on this page · raw message