2011-12-27 08:18:36 +01:00
/*
* Copyright ( c ) 2011 Samsung Electronics Co . , Ltd .
* http : //www.samsung.com
*
* Common Header for EXYNOS machines
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
# define __ARCH_ARM_MACH_EXYNOS_COMMON_H
2013-03-09 17:03:05 +09:00
# include <linux/of.h>
2013-04-10 11:35:29 +02:00
void mct_init ( void __iomem * base , int irq_g0 , int irq_l0 , int irq_l1 ) ;
2013-03-09 17:03:05 +09:00
void exynos_init_time ( void ) ;
2013-03-09 17:03:33 +09:00
extern unsigned long xxti_f , xusbxti_f ;
2012-02-11 21:27:08 +09:00
2011-09-08 13:15:22 +01:00
struct map_desc ;
2011-12-27 08:18:36 +01:00
void exynos_init_io ( struct map_desc * mach_desc , int size ) ;
void exynos4_init_irq ( void ) ;
2012-02-11 22:15:45 +09:00
void exynos5_init_irq ( void ) ;
2012-02-11 21:27:08 +09:00
void exynos4_restart ( char mode , const char * cmd ) ;
2012-02-11 22:15:45 +09:00
void exynos5_restart ( char mode , const char * cmd ) ;
2012-04-26 10:35:40 +08:00
void exynos_init_late ( void ) ;
2013-03-09 17:03:05 +09:00
/* ToDo: remove these after migrating legacy exynos4 platforms to dt */
2013-04-10 11:31:44 +02:00
void exynos4_clk_init ( struct device_node * np , int is_exynos4210 , void __iomem * reg_base , unsigned long xom ) ;
2013-03-09 17:03:05 +09:00
void exynos4_clk_register_fixed_ext ( unsigned long , unsigned long ) ;
2012-12-11 13:58:43 +09:00
void exynos_firmware_init ( void ) ;
2012-04-26 10:35:40 +08:00
# ifdef CONFIG_PM_GENERIC_DOMAINS
int exynos_pm_late_initcall ( void ) ;
# else
2012-12-15 09:43:47 -08:00
static inline int exynos_pm_late_initcall ( void ) { return 0 ; }
2012-04-26 10:35:40 +08:00
# endif
2011-12-27 08:18:36 +01:00
2012-03-09 14:19:10 -08:00
# ifdef CONFIG_ARCH_EXYNOS4
2011-12-27 08:18:36 +01:00
void exynos4_register_clocks ( void ) ;
void exynos4_setup_clocks ( void ) ;
2012-03-09 14:19:10 -08:00
# else
# define exynos4_register_clocks()
# define exynos4_setup_clocks()
# endif
2012-02-11 22:15:45 +09:00
# ifdef CONFIG_ARCH_EXYNOS5
void exynos5_register_clocks ( void ) ;
void exynos5_setup_clocks ( void ) ;
# else
# define exynos5_register_clocks()
# define exynos5_setup_clocks()
# endif
2012-02-11 21:27:08 +09:00
# ifdef CONFIG_CPU_EXYNOS4210
void exynos4210_register_clocks ( void ) ;
2012-01-03 11:56:53 +01:00
2012-02-11 21:27:08 +09:00
# else
# define exynos4210_register_clocks()
# endif
2011-12-27 08:18:36 +01:00
2012-02-11 21:27:08 +09:00
# ifdef CONFIG_SOC_EXYNOS4212
void exynos4212_register_clocks ( void ) ;
2011-12-27 08:18:36 +01:00
# else
2012-02-11 21:27:08 +09:00
# define exynos4212_register_clocks()
2011-12-27 08:18:36 +01:00
# endif
2013-02-12 16:04:52 -06:00
struct device_node ;
2013-04-10 15:17:47 +02:00
void combiner_init ( void __iomem * combiner_base , struct device_node * np ,
2013-04-12 15:27:09 +02:00
unsigned int max_nr , int irq_base ) ;
2013-02-12 16:04:52 -06:00
2011-09-08 13:15:22 +01:00
extern struct smp_operations exynos_smp_ops ;
extern void exynos_cpu_die ( unsigned int cpu ) ;
2012-12-31 10:06:48 -08:00
/* PMU(Power Management Unit) support */
# define PMU_TABLE_END NULL
enum sys_powerdown {
SYS_AFTR ,
SYS_LPA ,
SYS_SLEEP ,
NUM_SYS_POWERDOWN ,
} ;
extern unsigned long l2x0_regs_phys ;
struct exynos_pmu_conf {
void __iomem * reg ;
unsigned int val [ NUM_SYS_POWERDOWN ] ;
} ;
extern void exynos_sys_powerdown_conf ( enum sys_powerdown mode ) ;
extern void s3c_cpu_resume ( void ) ;
2011-12-27 08:18:36 +01:00
# endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */