aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2015-10-12 07:08:07 -0400
committerVineet Gupta <vgupta@synopsys.com>2015-10-28 06:43:40 -0400
commit26b8f996239884451aeb1213747e3ca808c26024 (patch)
treecbe21b30990e06a6da6cddc545016fce790c427d
parente55af4da026ebdb9ded3cb7708b8a8bd7884ad3a (diff)
ARCv2: smp: [plat-*]: No need to explicitly call mcip_init_early_smp()
MCIP now registers it's own probe callback with smp_ops.init_early_smp() which is called by ARC common code, so no need for platforms to do that. This decouples the platforms and MCIP and helps confine MCIP details to it's own file. Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
-rw-r--r--arch/arc/include/asm/mcip.h1
-rw-r--r--arch/arc/kernel/mcip.c15
-rw-r--r--arch/arc/plat-axs10x/axs10x.c5
-rw-r--r--arch/arc/plat-sim/platform.c1
4 files changed, 8 insertions, 14 deletions
diff --git a/arch/arc/include/asm/mcip.h b/arch/arc/include/asm/mcip.h
index 52c11f0bb0e5..c9b2b402a810 100644
--- a/arch/arc/include/asm/mcip.h
+++ b/arch/arc/include/asm/mcip.h
@@ -86,7 +86,6 @@ static inline void __mcip_cmd_data(unsigned int cmd, unsigned int param,
86 __mcip_cmd(cmd, param); 86 __mcip_cmd(cmd, param);
87} 87}
88 88
89extern void mcip_init_early_smp(void);
90extern void mcip_init_smp(unsigned int cpu); 89extern void mcip_init_smp(unsigned int cpu);
91 90
92#endif 91#endif
diff --git a/arch/arc/kernel/mcip.c b/arch/arc/kernel/mcip.c
index e18d36eb0af6..96b0b62ced65 100644
--- a/arch/arc/kernel/mcip.c
+++ b/arch/arc/kernel/mcip.c
@@ -97,13 +97,7 @@ static void mcip_ipi_clear(int irq)
97#endif 97#endif
98} 98}
99 99
100struct plat_smp_ops plat_smp_ops = { 100static void mcip_probe_n_setup(void)
101 .info = smp_cpuinfo_buf,
102 .ipi_send = mcip_ipi_send,
103 .ipi_clear = mcip_ipi_clear,
104};
105
106void mcip_init_early_smp(void)
107{ 101{
108 struct mcip_bcr { 102 struct mcip_bcr {
109#ifdef CONFIG_CPU_BIG_ENDIAN 103#ifdef CONFIG_CPU_BIG_ENDIAN
@@ -142,6 +136,13 @@ void mcip_init_early_smp(void)
142 panic("kernel trying to use non-existent GRTC\n"); 136 panic("kernel trying to use non-existent GRTC\n");
143} 137}
144 138
139struct plat_smp_ops plat_smp_ops = {
140 .info = smp_cpuinfo_buf,
141 .init_early_smp = mcip_probe_n_setup,
142 .ipi_send = mcip_ipi_send,
143 .ipi_clear = mcip_ipi_clear,
144};
145
145/*************************************************************************** 146/***************************************************************************
146 * ARCv2 Interrupt Distribution Unit (IDU) 147 * ARCv2 Interrupt Distribution Unit (IDU)
147 * 148 *
diff --git a/arch/arc/plat-axs10x/axs10x.c b/arch/arc/plat-axs10x/axs10x.c
index 0a77b19e1df8..9ce199963363 100644
--- a/arch/arc/plat-axs10x/axs10x.c
+++ b/arch/arc/plat-axs10x/axs10x.c
@@ -455,11 +455,6 @@ static void __init axs103_early_init(void)
455 axs10x_print_board_ver(AXC003_CREG + 4088, "AXC003 CPU Card"); 455 axs10x_print_board_ver(AXC003_CREG + 4088, "AXC003 CPU Card");
456 456
457 axs10x_early_init(); 457 axs10x_early_init();
458
459#ifdef CONFIG_ARC_MCIP
460 /* No Hardware init, but filling the smp ops callbacks */
461 mcip_init_early_smp();
462#endif
463} 458}
464#endif 459#endif
465 460
diff --git a/arch/arc/plat-sim/platform.c b/arch/arc/plat-sim/platform.c
index d9e35b4a2f08..e4128cca1b52 100644
--- a/arch/arc/plat-sim/platform.c
+++ b/arch/arc/plat-sim/platform.c
@@ -31,7 +31,6 @@ static const char *simulation_compat[] __initconst = {
31MACHINE_START(SIMULATION, "simulation") 31MACHINE_START(SIMULATION, "simulation")
32 .dt_compat = simulation_compat, 32 .dt_compat = simulation_compat,
33#ifdef CONFIG_ARC_MCIP 33#ifdef CONFIG_ARC_MCIP
34 .init_early = mcip_init_early_smp,
35 .init_smp = mcip_init_smp, 34 .init_smp = mcip_init_smp,
36#endif 35#endif
37MACHINE_END 36MACHINE_END