blob: e1af3a9b72a744cc754d0ce513c09b566ee9a952 [file] [log] [blame]
Kukjin Kimcc511b82011-12-27 08:18:36 +01001/*
2 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
3 * http://www.samsung.com
4 *
5 * Common Header for EXYNOS machines
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
13#define __ARCH_ARM_MACH_EXYNOS_COMMON_H
14
Kukjin Kim906c7892012-02-11 21:27:08 +090015extern struct sys_timer exynos4_timer;
16
Marc Zyngier06853ae2011-09-08 13:15:22 +010017struct map_desc;
Kukjin Kimcc511b82011-12-27 08:18:36 +010018void exynos_init_io(struct map_desc *mach_desc, int size);
19void exynos4_init_irq(void);
Kukjin Kim94c7ca72012-02-11 22:15:45 +090020void exynos5_init_irq(void);
Kukjin Kim906c7892012-02-11 21:27:08 +090021void exynos4_restart(char mode, const char *cmd);
Kukjin Kim94c7ca72012-02-11 22:15:45 +090022void exynos5_restart(char mode, const char *cmd);
Shawn Guobb13fab2012-04-26 10:35:40 +080023void exynos_init_late(void);
24
25#ifdef CONFIG_PM_GENERIC_DOMAINS
26int exynos_pm_late_initcall(void);
27#else
Olof Johanssond0c2e4e2012-12-15 09:43:47 -080028static inline int exynos_pm_late_initcall(void) { return 0; }
Shawn Guobb13fab2012-04-26 10:35:40 +080029#endif
Kukjin Kimcc511b82011-12-27 08:18:36 +010030
Kukjin Kima8550392012-03-09 14:19:10 -080031#ifdef CONFIG_ARCH_EXYNOS4
Kukjin Kimcc511b82011-12-27 08:18:36 +010032void exynos4_register_clocks(void);
33void exynos4_setup_clocks(void);
34
Kukjin Kima8550392012-03-09 14:19:10 -080035#else
36#define exynos4_register_clocks()
37#define exynos4_setup_clocks()
Kukjin Kima8550392012-03-09 14:19:10 -080038#endif
39
Kukjin Kim94c7ca72012-02-11 22:15:45 +090040#ifdef CONFIG_ARCH_EXYNOS5
41void exynos5_register_clocks(void);
42void exynos5_setup_clocks(void);
43
44#else
45#define exynos5_register_clocks()
46#define exynos5_setup_clocks()
47#endif
48
Kukjin Kim906c7892012-02-11 21:27:08 +090049#ifdef CONFIG_CPU_EXYNOS4210
50void exynos4210_register_clocks(void);
Kukjin Kimcc511b82011-12-27 08:18:36 +010051
52#else
Kukjin Kim906c7892012-02-11 21:27:08 +090053#define exynos4210_register_clocks()
54#endif
55
56#ifdef CONFIG_SOC_EXYNOS4212
57void exynos4212_register_clocks(void);
58
59#else
60#define exynos4212_register_clocks()
Kukjin Kimcc511b82011-12-27 08:18:36 +010061#endif
62
Marc Zyngier06853ae2011-09-08 13:15:22 +010063extern struct smp_operations exynos_smp_ops;
64
65extern void exynos_cpu_die(unsigned int cpu);
66
Kukjin Kimccd458c2012-12-31 10:06:48 -080067/* PMU(Power Management Unit) support */
68
69#define PMU_TABLE_END NULL
70
71enum sys_powerdown {
72 SYS_AFTR,
73 SYS_LPA,
74 SYS_SLEEP,
75 NUM_SYS_POWERDOWN,
76};
77
78extern unsigned long l2x0_regs_phys;
79struct exynos_pmu_conf {
80 void __iomem *reg;
81 unsigned int val[NUM_SYS_POWERDOWN];
82};
83
84extern void exynos_sys_powerdown_conf(enum sys_powerdown mode);
85extern void s3c_cpu_resume(void);
86
Kukjin Kimcc511b82011-12-27 08:18:36 +010087#endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */