f40aaf6da1
This patch contains r8a7779 SMP support V3 - now including CPU hotplug offine and online support. The r8a7779 power domain code is tied together with SMP glue code which allows us to control the power domains via CPU hotplug. At this point the kernel boots with the 4 Cortex-A9 cores in SMP mode and all CPU cores except CPU0 can be hotplugged. The code in platsmp.c is quite far from pretty, but it is kept like that intentionally to avoid creating layers of code that will go away in the near future anyway. The code needs to be updated when some per-SoC handling code will be added to the ARM architecture, see the following patch for more information: "[RFC PATCH 0/3] Per SoC descriptor" Signed-off-by: Magnus Damm <damm@opensource.se> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
78 lines
2.7 KiB
C
78 lines
2.7 KiB
C
#ifndef __ARCH_MACH_COMMON_H
|
|
#define __ARCH_MACH_COMMON_H
|
|
|
|
extern struct sys_timer shmobile_timer;
|
|
extern void shmobile_setup_console(void);
|
|
extern void shmobile_secondary_vector(void);
|
|
extern int shmobile_platform_cpu_kill(unsigned int cpu);
|
|
struct clk;
|
|
extern int clk_init(void);
|
|
extern void shmobile_handle_irq_intc(struct pt_regs *);
|
|
extern struct platform_suspend_ops shmobile_suspend_ops;
|
|
struct cpuidle_driver;
|
|
extern void (*shmobile_cpuidle_modes[])(void);
|
|
extern void (*shmobile_cpuidle_setup)(struct cpuidle_driver *drv);
|
|
|
|
extern void sh7367_init_irq(void);
|
|
extern void sh7367_add_early_devices(void);
|
|
extern void sh7367_add_standard_devices(void);
|
|
extern void sh7367_clock_init(void);
|
|
extern void sh7367_pinmux_init(void);
|
|
extern struct clk sh7367_extalb1_clk;
|
|
extern struct clk sh7367_extal2_clk;
|
|
|
|
extern void sh7377_init_irq(void);
|
|
extern void sh7377_add_early_devices(void);
|
|
extern void sh7377_add_standard_devices(void);
|
|
extern void sh7377_clock_init(void);
|
|
extern void sh7377_pinmux_init(void);
|
|
extern struct clk sh7377_extalc1_clk;
|
|
extern struct clk sh7377_extal2_clk;
|
|
|
|
extern void sh7372_init_irq(void);
|
|
extern void sh7372_add_early_devices(void);
|
|
extern void sh7372_add_standard_devices(void);
|
|
extern void sh7372_clock_init(void);
|
|
extern void sh7372_pinmux_init(void);
|
|
extern void sh7372_pm_init(void);
|
|
extern void sh7372_resume_core_standby_sysc(void);
|
|
extern int sh7372_do_idle_sysc(unsigned long sleep_mode);
|
|
extern struct clk sh7372_extal1_clk;
|
|
extern struct clk sh7372_extal2_clk;
|
|
|
|
extern void sh73a0_init_irq(void);
|
|
extern void sh73a0_add_early_devices(void);
|
|
extern void sh73a0_add_standard_devices(void);
|
|
extern void sh73a0_clock_init(void);
|
|
extern void sh73a0_pinmux_init(void);
|
|
extern struct clk sh73a0_extal1_clk;
|
|
extern struct clk sh73a0_extal2_clk;
|
|
extern struct clk sh73a0_extcki_clk;
|
|
extern struct clk sh73a0_extalr_clk;
|
|
|
|
extern unsigned int sh73a0_get_core_count(void);
|
|
extern void sh73a0_secondary_init(unsigned int cpu);
|
|
extern int sh73a0_boot_secondary(unsigned int cpu);
|
|
extern void sh73a0_smp_prepare_cpus(void);
|
|
|
|
extern void r8a7740_init_irq(void);
|
|
extern void r8a7740_add_early_devices(void);
|
|
extern void r8a7740_add_standard_devices(void);
|
|
extern void r8a7740_clock_init(u8 md_ck);
|
|
extern void r8a7740_pinmux_init(void);
|
|
|
|
extern void r8a7779_init_irq(void);
|
|
extern void r8a7779_add_early_devices(void);
|
|
extern void r8a7779_add_standard_devices(void);
|
|
extern void r8a7779_clock_init(void);
|
|
extern void r8a7779_pinmux_init(void);
|
|
extern void r8a7779_pm_init(void);
|
|
|
|
extern unsigned int r8a7779_get_core_count(void);
|
|
extern int r8a7779_platform_cpu_kill(unsigned int cpu);
|
|
extern void r8a7779_secondary_init(unsigned int cpu);
|
|
extern int r8a7779_boot_secondary(unsigned int cpu);
|
|
extern void r8a7779_smp_prepare_cpus(void);
|
|
|
|
#endif /* __ARCH_MACH_COMMON_H */
|