xref: /openbmc/linux/arch/arm/mach-exynos/common.h (revision d568b6f7)
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;
210e2238ecSArnd Bergmann void exynos_init_io(void);
227b6d864bSRobin Holt void exynos4_restart(enum reboot_mode mode, const char *cmd);
237b6d864bSRobin Holt void exynos5_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 
30bb13fabcSShawn Guo #ifdef CONFIG_PM_GENERIC_DOMAINS
31bb13fabcSShawn Guo int exynos_pm_late_initcall(void);
32bb13fabcSShawn Guo #else
33d0c2e4e4SOlof Johansson static inline int exynos_pm_late_initcall(void) { return 0; }
34bb13fabcSShawn Guo #endif
35cc511b8dSKukjin Kim 
3606853ae4SMarc Zyngier extern struct smp_operations exynos_smp_ops;
3706853ae4SMarc Zyngier 
3806853ae4SMarc Zyngier extern void exynos_cpu_die(unsigned int cpu);
3906853ae4SMarc Zyngier 
40ccd458c1SKukjin Kim /* PMU(Power Management Unit) support */
41ccd458c1SKukjin Kim 
42ccd458c1SKukjin Kim #define PMU_TABLE_END	NULL
43ccd458c1SKukjin Kim 
44ccd458c1SKukjin Kim enum sys_powerdown {
45ccd458c1SKukjin Kim 	SYS_AFTR,
46ccd458c1SKukjin Kim 	SYS_LPA,
47ccd458c1SKukjin Kim 	SYS_SLEEP,
48ccd458c1SKukjin Kim 	NUM_SYS_POWERDOWN,
49ccd458c1SKukjin Kim };
50ccd458c1SKukjin Kim 
51ccd458c1SKukjin Kim extern unsigned long l2x0_regs_phys;
52ccd458c1SKukjin Kim struct exynos_pmu_conf {
53ccd458c1SKukjin Kim 	void __iomem *reg;
54ccd458c1SKukjin Kim 	unsigned int val[NUM_SYS_POWERDOWN];
55ccd458c1SKukjin Kim };
56ccd458c1SKukjin Kim 
57ccd458c1SKukjin Kim extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
58ccd458c1SKukjin Kim 
59cc511b8dSKukjin Kim #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
60