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 156e6aac75SThomas Abraham #include <linux/of.h> 166e6aac75SThomas Abraham 17034c097cSArnd Bergmann void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1); 186e6aac75SThomas Abraham void exynos_init_time(void); 1992744274SThomas Abraham extern unsigned long xxti_f, xusbxti_f; 20906c789cSKukjin Kim 2106853ae4SMarc Zyngier struct map_desc; 22cc511b8dSKukjin Kim void exynos_init_io(struct map_desc *mach_desc, int size); 23cc511b8dSKukjin Kim void exynos4_init_irq(void); 2494c7ca71SKukjin Kim void exynos5_init_irq(void); 25906c789cSKukjin Kim void exynos4_restart(char mode, const char *cmd); 2694c7ca71SKukjin Kim void exynos5_restart(char mode, const char *cmd); 27bb13fabcSShawn Guo void exynos_init_late(void); 28bb13fabcSShawn Guo 296e6aac75SThomas Abraham /* ToDo: remove these after migrating legacy exynos4 platforms to dt */ 3025e56ebaSArnd Bergmann void exynos4_clk_init(struct device_node *np, int is_exynos4210, void __iomem *reg_base, unsigned long xom); 316e6aac75SThomas Abraham void exynos4_clk_register_fixed_ext(unsigned long, unsigned long); 326e6aac75SThomas Abraham 33bb13fabcSShawn Guo #ifdef CONFIG_PM_GENERIC_DOMAINS 34bb13fabcSShawn Guo int exynos_pm_late_initcall(void); 35bb13fabcSShawn Guo #else 36d0c2e4e4SOlof Johansson static inline int exynos_pm_late_initcall(void) { return 0; } 37bb13fabcSShawn Guo #endif 38cc511b8dSKukjin Kim 39a855039eSKukjin Kim #ifdef CONFIG_ARCH_EXYNOS4 40cc511b8dSKukjin Kim void exynos4_register_clocks(void); 41cc511b8dSKukjin Kim void exynos4_setup_clocks(void); 42cc511b8dSKukjin Kim 43a855039eSKukjin Kim #else 44a855039eSKukjin Kim #define exynos4_register_clocks() 45a855039eSKukjin Kim #define exynos4_setup_clocks() 46a855039eSKukjin Kim #endif 47a855039eSKukjin Kim 4894c7ca71SKukjin Kim #ifdef CONFIG_ARCH_EXYNOS5 4994c7ca71SKukjin Kim void exynos5_register_clocks(void); 5094c7ca71SKukjin Kim void exynos5_setup_clocks(void); 5194c7ca71SKukjin Kim 5294c7ca71SKukjin Kim #else 5394c7ca71SKukjin Kim #define exynos5_register_clocks() 5494c7ca71SKukjin Kim #define exynos5_setup_clocks() 5594c7ca71SKukjin Kim #endif 5694c7ca71SKukjin Kim 57906c789cSKukjin Kim #ifdef CONFIG_CPU_EXYNOS4210 58906c789cSKukjin Kim void exynos4210_register_clocks(void); 59cc511b8dSKukjin Kim 60cc511b8dSKukjin Kim #else 61906c789cSKukjin Kim #define exynos4210_register_clocks() 62906c789cSKukjin Kim #endif 63906c789cSKukjin Kim 64906c789cSKukjin Kim #ifdef CONFIG_SOC_EXYNOS4212 65906c789cSKukjin Kim void exynos4212_register_clocks(void); 66906c789cSKukjin Kim 67906c789cSKukjin Kim #else 68906c789cSKukjin Kim #define exynos4212_register_clocks() 69cc511b8dSKukjin Kim #endif 70cc511b8dSKukjin Kim 71a900e5d9SRob Herring struct device_node; 726761dcfeSArnd Bergmann void combiner_init(void __iomem *combiner_base, struct device_node *np, 736761dcfeSArnd Bergmann unsigned int max_nr); 74a900e5d9SRob Herring 7506853ae4SMarc Zyngier extern struct smp_operations exynos_smp_ops; 7606853ae4SMarc Zyngier 7706853ae4SMarc Zyngier extern void exynos_cpu_die(unsigned int cpu); 7806853ae4SMarc Zyngier 79ccd458c1SKukjin Kim /* PMU(Power Management Unit) support */ 80ccd458c1SKukjin Kim 81ccd458c1SKukjin Kim #define PMU_TABLE_END NULL 82ccd458c1SKukjin Kim 83ccd458c1SKukjin Kim enum sys_powerdown { 84ccd458c1SKukjin Kim SYS_AFTR, 85ccd458c1SKukjin Kim SYS_LPA, 86ccd458c1SKukjin Kim SYS_SLEEP, 87ccd458c1SKukjin Kim NUM_SYS_POWERDOWN, 88ccd458c1SKukjin Kim }; 89ccd458c1SKukjin Kim 90ccd458c1SKukjin Kim extern unsigned long l2x0_regs_phys; 91ccd458c1SKukjin Kim struct exynos_pmu_conf { 92ccd458c1SKukjin Kim void __iomem *reg; 93ccd458c1SKukjin Kim unsigned int val[NUM_SYS_POWERDOWN]; 94ccd458c1SKukjin Kim }; 95ccd458c1SKukjin Kim 96ccd458c1SKukjin Kim extern void exynos_sys_powerdown_conf(enum sys_powerdown mode); 97ccd458c1SKukjin Kim extern void s3c_cpu_resume(void); 98ccd458c1SKukjin Kim 99cc511b8dSKukjin Kim #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */ 100