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