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; 220e2238ecSArnd Bergmann void exynos_init_io(void); 23906c789cSKukjin Kim void exynos4_restart(char mode, const char *cmd); 2494c7ca71SKukjin Kim void exynos5_restart(char mode, const char *cmd); 25bb13fabcSShawn Guo void exynos_init_late(void); 26bb13fabcSShawn Guo 276e6aac75SThomas Abraham /* ToDo: remove these after migrating legacy exynos4 platforms to dt */ 2825e56ebaSArnd Bergmann void exynos4_clk_init(struct device_node *np, int is_exynos4210, void __iomem *reg_base, unsigned long xom); 296e6aac75SThomas Abraham void exynos4_clk_register_fixed_ext(unsigned long, unsigned long); 306e6aac75SThomas Abraham 31bca28f8fSTomasz Figa void exynos_firmware_init(void); 32bca28f8fSTomasz Figa 3368a433f1STomasz Figa void exynos_set_timer_source(u8 channels); 3468a433f1STomasz Figa 35bb13fabcSShawn Guo #ifdef CONFIG_PM_GENERIC_DOMAINS 36bb13fabcSShawn Guo int exynos_pm_late_initcall(void); 37bb13fabcSShawn Guo #else 38d0c2e4e4SOlof Johansson static inline int exynos_pm_late_initcall(void) { return 0; } 39bb13fabcSShawn Guo #endif 40cc511b8dSKukjin Kim 41a855039eSKukjin Kim #ifdef CONFIG_ARCH_EXYNOS4 42cc511b8dSKukjin Kim void exynos4_register_clocks(void); 43cc511b8dSKukjin Kim void exynos4_setup_clocks(void); 44cc511b8dSKukjin Kim 45a855039eSKukjin Kim #else 46a855039eSKukjin Kim #define exynos4_register_clocks() 47a855039eSKukjin Kim #define exynos4_setup_clocks() 48a855039eSKukjin Kim #endif 49a855039eSKukjin Kim 5094c7ca71SKukjin Kim #ifdef CONFIG_ARCH_EXYNOS5 5194c7ca71SKukjin Kim void exynos5_register_clocks(void); 5294c7ca71SKukjin Kim void exynos5_setup_clocks(void); 5394c7ca71SKukjin Kim 5494c7ca71SKukjin Kim #else 5594c7ca71SKukjin Kim #define exynos5_register_clocks() 5694c7ca71SKukjin Kim #define exynos5_setup_clocks() 5794c7ca71SKukjin Kim #endif 5894c7ca71SKukjin Kim 59906c789cSKukjin Kim #ifdef CONFIG_CPU_EXYNOS4210 60906c789cSKukjin Kim void exynos4210_register_clocks(void); 61cc511b8dSKukjin Kim 62cc511b8dSKukjin Kim #else 63906c789cSKukjin Kim #define exynos4210_register_clocks() 64906c789cSKukjin Kim #endif 65906c789cSKukjin Kim 66906c789cSKukjin Kim #ifdef CONFIG_SOC_EXYNOS4212 67906c789cSKukjin Kim void exynos4212_register_clocks(void); 68906c789cSKukjin Kim 69906c789cSKukjin Kim #else 70906c789cSKukjin Kim #define exynos4212_register_clocks() 71cc511b8dSKukjin Kim #endif 72cc511b8dSKukjin Kim 73a900e5d9SRob Herring struct device_node; 746761dcfeSArnd Bergmann void combiner_init(void __iomem *combiner_base, struct device_node *np, 75863a08dcSArnd Bergmann unsigned int max_nr, int irq_base); 76a900e5d9SRob Herring 7706853ae4SMarc Zyngier extern struct smp_operations exynos_smp_ops; 7806853ae4SMarc Zyngier 7906853ae4SMarc Zyngier extern void exynos_cpu_die(unsigned int cpu); 8006853ae4SMarc Zyngier 81ccd458c1SKukjin Kim /* PMU(Power Management Unit) support */ 82ccd458c1SKukjin Kim 83ccd458c1SKukjin Kim #define PMU_TABLE_END NULL 84ccd458c1SKukjin Kim 85ccd458c1SKukjin Kim enum sys_powerdown { 86ccd458c1SKukjin Kim SYS_AFTR, 87ccd458c1SKukjin Kim SYS_LPA, 88ccd458c1SKukjin Kim SYS_SLEEP, 89ccd458c1SKukjin Kim NUM_SYS_POWERDOWN, 90ccd458c1SKukjin Kim }; 91ccd458c1SKukjin Kim 92ccd458c1SKukjin Kim extern unsigned long l2x0_regs_phys; 93ccd458c1SKukjin Kim struct exynos_pmu_conf { 94ccd458c1SKukjin Kim void __iomem *reg; 95ccd458c1SKukjin Kim unsigned int val[NUM_SYS_POWERDOWN]; 96ccd458c1SKukjin Kim }; 97ccd458c1SKukjin Kim 98ccd458c1SKukjin Kim extern void exynos_sys_powerdown_conf(enum sys_powerdown mode); 99ccd458c1SKukjin Kim extern void s3c_cpu_resume(void); 100ccd458c1SKukjin Kim 101cc511b8dSKukjin Kim #endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */ 102