xref: /openbmc/linux/arch/arm/mach-exynos/common.h (revision 3681bafe)
1cc511b8dSKukjin Kim /*
2cc511b8dSKukjin Kim  * Copyright (c) 2011 Samsung Electronics Co., Ltd.
3cc511b8dSKukjin Kim  *		http://www.samsung.com
4cc511b8dSKukjin Kim  *
5cc511b8dSKukjin Kim  * Common Header for EXYNOS machines
6cc511b8dSKukjin Kim  *
7cc511b8dSKukjin Kim  * This program is free software; you can redistribute it and/or modify
8cc511b8dSKukjin Kim  * it under the terms of the GNU General Public License version 2 as
9cc511b8dSKukjin Kim  * published by the Free Software Foundation.
10cc511b8dSKukjin Kim  */
11cc511b8dSKukjin Kim 
12cc511b8dSKukjin Kim #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
13cc511b8dSKukjin Kim #define __ARCH_ARM_MACH_EXYNOS_COMMON_H
14cc511b8dSKukjin Kim 
157b6d864bSRobin Holt #include <linux/reboot.h>
166e6aac75SThomas Abraham #include <linux/of.h>
176e6aac75SThomas Abraham 
18034c097cSArnd Bergmann void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1);
19906c789cSKukjin Kim 
2006853ae4SMarc Zyngier struct map_desc;
21b3205deaSSachin Kamat extern void __iomem *sysram_ns_base_addr;
220e2238ecSArnd Bergmann void exynos_init_io(void);
23cbf08b9eSSachin Kamat void exynos_restart(enum reboot_mode mode, const char *cmd);
2435baa336SBartlomiej Zolnierkiewicz void exynos_cpuidle_init(void);
25d568b6f7SLukasz Majewski void exynos_cpufreq_init(void);
26bb13fabcSShawn Guo void exynos_init_late(void);
27bb13fabcSShawn Guo 
28bca28f8fSTomasz Figa void exynos_firmware_init(void);
29bca28f8fSTomasz Figa 
30d710aa31STomasz Figa #ifdef CONFIG_PINCTRL_EXYNOS
31d710aa31STomasz Figa extern u32 exynos_get_eint_wake_mask(void);
32d710aa31STomasz Figa #else
33d710aa31STomasz Figa static inline u32 exynos_get_eint_wake_mask(void) { return 0xffffffff; }
34d710aa31STomasz Figa #endif
35d710aa31STomasz Figa 
36559ba237STomasz Figa #ifdef CONFIG_PM_SLEEP
37559ba237STomasz Figa extern void __init exynos_pm_init(void);
38559ba237STomasz Figa #else
39559ba237STomasz Figa static inline void exynos_pm_init(void) {}
40559ba237STomasz Figa #endif
41559ba237STomasz Figa 
42d710aa31STomasz Figa extern void exynos_cpu_resume(void);
43d710aa31STomasz Figa 
4406853ae4SMarc Zyngier extern struct smp_operations exynos_smp_ops;
4506853ae4SMarc Zyngier 
4606853ae4SMarc Zyngier extern void exynos_cpu_die(unsigned int cpu);
4706853ae4SMarc Zyngier 
48ccd458c1SKukjin Kim /* PMU(Power Management Unit) support */
49ccd458c1SKukjin Kim 
50ccd458c1SKukjin Kim #define PMU_TABLE_END	NULL
51ccd458c1SKukjin Kim 
52ccd458c1SKukjin Kim enum sys_powerdown {
53ccd458c1SKukjin Kim 	SYS_AFTR,
54ccd458c1SKukjin Kim 	SYS_LPA,
55ccd458c1SKukjin Kim 	SYS_SLEEP,
56ccd458c1SKukjin Kim 	NUM_SYS_POWERDOWN,
57ccd458c1SKukjin Kim };
58ccd458c1SKukjin Kim 
59ccd458c1SKukjin Kim extern unsigned long l2x0_regs_phys;
60ccd458c1SKukjin Kim struct exynos_pmu_conf {
61ccd458c1SKukjin Kim 	void __iomem *reg;
62ccd458c1SKukjin Kim 	unsigned int val[NUM_SYS_POWERDOWN];
63ccd458c1SKukjin Kim };
64ccd458c1SKukjin Kim 
65ccd458c1SKukjin Kim extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
66d3af6976SLeela Krishna Amudala extern void exynos_cpu_power_down(int cpu);
67d3af6976SLeela Krishna Amudala extern void exynos_cpu_power_up(int cpu);
68d3af6976SLeela Krishna Amudala extern int  exynos_cpu_power_state(int cpu);
69096d21c6SAbhilash Kesavan extern void exynos_cluster_power_down(int cluster);
70096d21c6SAbhilash Kesavan extern void exynos_cluster_power_up(int cluster);
71096d21c6SAbhilash Kesavan extern int  exynos_cluster_power_state(int cluster);
723681bafeSDaniel Lezcano extern void exynos_enter_aftr(void);
73ccd458c1SKukjin Kim 
74cc511b8dSKukjin Kim #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
75