Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06853ae4 authored by Marc Zyngier's avatar Marc Zyngier Committed by Arnd Bergmann
Browse files

ARM: SoC: convert Exynos4 to SMP operations



Convert Exynos4 to use struct smp_operations to provide its SMP
and CPU hotplug operations.

Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
Acked-by: default avatarNicolas Pitre <nico@linaro.org>
Tested-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarKukjin Kim <kgene.kim@samsung.com>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parent a1725732
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@


extern struct sys_timer exynos4_timer;
extern struct sys_timer exynos4_timer;


struct map_desc;
void exynos_init_io(struct map_desc *mach_desc, int size);
void exynos_init_io(struct map_desc *mach_desc, int size);
void exynos4_init_irq(void);
void exynos4_init_irq(void);
void exynos5_init_irq(void);
void exynos5_init_irq(void);
@@ -59,4 +60,8 @@ void exynos4212_register_clocks(void);
#define exynos4212_register_clocks()
#define exynos4212_register_clocks()
#endif
#endif


extern struct smp_operations exynos_smp_ops;

extern void exynos_cpu_die(unsigned int cpu);

#endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
#endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
+3 −15
Original line number Original line Diff line number Diff line
@@ -21,6 +21,8 @@


#include <mach/regs-pmu.h>
#include <mach/regs-pmu.h>


#include "common.h"

extern volatile int pen_release;
extern volatile int pen_release;


static inline void cpu_enter_lowpower(void)
static inline void cpu_enter_lowpower(void)
@@ -95,17 +97,12 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
	}
	}
}
}


int platform_cpu_kill(unsigned int cpu)
{
	return 1;
}

/*
/*
 * platform-specific code to shutdown a CPU
 * platform-specific code to shutdown a CPU
 *
 *
 * Called with IRQs disabled
 * Called with IRQs disabled
 */
 */
void platform_cpu_die(unsigned int cpu)
void __ref exynos_cpu_die(unsigned int cpu)
{
{
	int spurious = 0;
	int spurious = 0;


@@ -124,12 +121,3 @@ void platform_cpu_die(unsigned int cpu)
	if (spurious)
	if (spurious)
		pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious);
		pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious);
}
}

int platform_cpu_disable(unsigned int cpu)
{
	/*
	 * we don't allow CPU 0 to be shutdown (it is still too special
	 * e.g. clock tick interrupts)
	 */
	return cpu == 0 ? -EPERM : 0;
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -199,6 +199,7 @@ static void __init armlex4210_machine_init(void)
MACHINE_START(ARMLEX4210, "ARMLEX4210")
MACHINE_START(ARMLEX4210, "ARMLEX4210")
	/* Maintainer: Alim Akhtar <alim.akhtar@samsung.com> */
	/* Maintainer: Alim Akhtar <alim.akhtar@samsung.com> */
	.atag_offset	= 0x100,
	.atag_offset	= 0x100,
	.smp		= smp_ops(exynos_smp_ops),
	.init_irq	= exynos4_init_irq,
	.init_irq	= exynos4_init_irq,
	.map_io		= armlex4210_map_io,
	.map_io		= armlex4210_map_io,
	.handle_irq	= gic_handle_irq,
	.handle_irq	= gic_handle_irq,
+1 −0
Original line number Original line Diff line number Diff line
@@ -79,6 +79,7 @@ static char const *exynos5250_dt_compat[] __initdata = {
DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
	/* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
	/* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
	.init_irq	= exynos5_init_irq,
	.init_irq	= exynos5_init_irq,
	.smp		= smp_ops(exynos_smp_ops),
	.map_io		= exynos5250_dt_map_io,
	.map_io		= exynos5250_dt_map_io,
	.handle_irq	= gic_handle_irq,
	.handle_irq	= gic_handle_irq,
	.init_machine	= exynos5250_dt_machine_init,
	.init_machine	= exynos5250_dt_machine_init,
+1 −0
Original line number Original line Diff line number Diff line
@@ -1383,6 +1383,7 @@ static void __init nuri_machine_init(void)
MACHINE_START(NURI, "NURI")
MACHINE_START(NURI, "NURI")
	/* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */
	/* Maintainer: Kyungmin Park <kyungmin.park@samsung.com> */
	.atag_offset	= 0x100,
	.atag_offset	= 0x100,
	.smp		= smp_ops(exynos_smp_ops),
	.init_irq	= exynos4_init_irq,
	.init_irq	= exynos4_init_irq,
	.map_io		= nuri_map_io,
	.map_io		= nuri_map_io,
	.handle_irq	= gic_handle_irq,
	.handle_irq	= gic_handle_irq,
Loading