xref: /openbmc/linux/arch/arm/mach-shmobile/common.h (revision d6d757c9)
1fd44aa5eSMagnus Damm #ifndef __ARCH_MACH_COMMON_H
2fd44aa5eSMagnus Damm #define __ARCH_MACH_COMMON_H
3fd44aa5eSMagnus Damm 
4fd44aa5eSMagnus Damm extern void shmobile_earlytimer_init(void);
5fd44aa5eSMagnus Damm extern void shmobile_setup_delay(unsigned int max_cpu_core_mhz,
6fd44aa5eSMagnus Damm 			 unsigned int mult, unsigned int div);
7fd44aa5eSMagnus Damm extern void shmobile_init_delay(void);
8fd44aa5eSMagnus Damm struct twd_local_timer;
9fd44aa5eSMagnus Damm extern void shmobile_setup_console(void);
10fd44aa5eSMagnus Damm extern void shmobile_boot_vector(void);
11fd44aa5eSMagnus Damm extern unsigned long shmobile_boot_fn;
12fd44aa5eSMagnus Damm extern unsigned long shmobile_boot_arg;
13fd44aa5eSMagnus Damm extern unsigned long shmobile_boot_size;
14fd44aa5eSMagnus Damm extern void shmobile_smp_boot(void);
15fd44aa5eSMagnus Damm extern void shmobile_smp_sleep(void);
16fd44aa5eSMagnus Damm extern void shmobile_smp_hook(unsigned int cpu, unsigned long fn,
17fd44aa5eSMagnus Damm 			      unsigned long arg);
18fd44aa5eSMagnus Damm extern int shmobile_smp_cpu_disable(unsigned int cpu);
19fd44aa5eSMagnus Damm extern void shmobile_invalidate_start(void);
20fd44aa5eSMagnus Damm extern void shmobile_boot_scu(void);
21fd44aa5eSMagnus Damm extern void shmobile_smp_scu_prepare_cpus(unsigned int max_cpus);
22fd44aa5eSMagnus Damm extern void shmobile_smp_scu_cpu_die(unsigned int cpu);
23fd44aa5eSMagnus Damm extern int shmobile_smp_scu_cpu_kill(unsigned int cpu);
24fd44aa5eSMagnus Damm extern void shmobile_smp_apmu_prepare_cpus(unsigned int max_cpus);
25fd44aa5eSMagnus Damm extern int shmobile_smp_apmu_boot_secondary(unsigned int cpu,
26fd44aa5eSMagnus Damm 					    struct task_struct *idle);
27fd44aa5eSMagnus Damm extern void shmobile_smp_apmu_cpu_die(unsigned int cpu);
28fd44aa5eSMagnus Damm extern int shmobile_smp_apmu_cpu_kill(unsigned int cpu);
29fd44aa5eSMagnus Damm struct clk;
30fd44aa5eSMagnus Damm extern int shmobile_clk_init(void);
31fd44aa5eSMagnus Damm extern void shmobile_handle_irq_intc(struct pt_regs *);
32fd44aa5eSMagnus Damm extern struct platform_suspend_ops shmobile_suspend_ops;
33fd44aa5eSMagnus Damm struct cpuidle_driver;
34fd44aa5eSMagnus Damm extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv);
35fd44aa5eSMagnus Damm 
36fd44aa5eSMagnus Damm #ifdef CONFIG_SUSPEND
37fd44aa5eSMagnus Damm int shmobile_suspend_init(void);
38d6d757c9Skeita kobayashi void shmobile_smp_apmu_suspend_init(void);
39fd44aa5eSMagnus Damm #else
40fd44aa5eSMagnus Damm static inline int shmobile_suspend_init(void) { return 0; }
41d6d757c9Skeita kobayashi static inline void shmobile_smp_apmu_suspend_init(void) { return 0; }
42fd44aa5eSMagnus Damm #endif
43fd44aa5eSMagnus Damm 
44fd44aa5eSMagnus Damm #ifdef CONFIG_CPU_IDLE
45fd44aa5eSMagnus Damm int shmobile_cpuidle_init(void);
46fd44aa5eSMagnus Damm #else
47fd44aa5eSMagnus Damm static inline int shmobile_cpuidle_init(void) { return 0; }
48fd44aa5eSMagnus Damm #endif
49fd44aa5eSMagnus Damm 
50fd44aa5eSMagnus Damm extern void __iomem *shmobile_scu_base;
51fd44aa5eSMagnus Damm 
52fd44aa5eSMagnus Damm static inline void __init shmobile_init_late(void)
53fd44aa5eSMagnus Damm {
54fd44aa5eSMagnus Damm 	shmobile_suspend_init();
55fd44aa5eSMagnus Damm 	shmobile_cpuidle_init();
56fd44aa5eSMagnus Damm }
57fd44aa5eSMagnus Damm 
58fd44aa5eSMagnus Damm #endif /* __ARCH_MACH_COMMON_H */
59