forked from Minki/linux
bb9055b274
These continue the multiplatform support for exynos, adding support for building most of the essential drivers (clocksource, clk, irqchip) when combined with other platforms. As a result, it should become really easy to add full multiplatform exynos support in 3.11, although we don't yet enable it for 3.10. The changes were not included in the earlier multiplatform series in order to avoid clashes with the other Exynos updates. This also includes work from Tomasz Figa to fix the pwm clocksource code on Exynos, which is not strictly required for multiplatform, but related to the other patches in this set and needed as a bug fix for at least one board. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIVAwUAUYgmgWCrR//JCVInAQIp6A//cb87A7biCHo0hd64v7RtX2dIvYTc8ZDh 7O9yH7NuAtbSI7FF7cVQGGK6nCRqmwO2SM/KLFgbt2MF36FLgQKKZhJIDM/qB4jb 3DCHHH814eqExf4MFfZL4Yxl4FaMqxzSwYX8fD28GmpeVxLeHjh0yQCKmPejz5MW WgkMcBJS3IPqbhhKMcMZmXteLrEzEm43Uj6dxkZP7RbinyuWzHvx3IWWv4gQ6ITz 3jcCvZC5JWBo9MEPH43vlmOd8qsAn0OvkbtbYiy2Tre5VerqOgbEEXU2U0A2zUSj YTmRvwIGsIylL2EkVsJTkMj8KJ8TAHZjHyNUY8m2UzWuS+9EdZjf6rXeKIdUz9Wa 0dmiWJEOEvejk0RnHEJm7anmKp7a9YHFkFSRnHbLOAXAMkUZWWcVAMZ4UbDK8RtF RX6R+ga9tR8R7aBLIzqYyfSHaZ7xUpF6nSBOM4GNVNKtViJv3PENWVQrm2GHcQ9w +4IMUqXO/5IRvuHW93l+oN8tENDTF0cR0+S7t0R6Vuuh7OebRt9TAE421Hrvt+7p gI5tvhEeV3o1CMmXWod8X1jxY/1OrONG7wX/x07ymiRnXSd+sZ0CPkYyWultKNw8 bCAsnOP2aFpO1RB0XEC5y8FZ5uSfcQ7Ngu2kyAP7mEXV6qbSHgmb+lyxf2G8ftL2 Rn0M7nbLcz4= =FY7+ -----END PGP SIGNATURE----- Merge tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull late ARM Exynos multiplatform changes from Arnd Bergmann: "These continue the multiplatform support for exynos, adding support for building most of the essential drivers (clocksource, clk, irqchip) when combined with other platforms. As a result, it should become really easy to add full multiplatform exynos support in 3.11, although we don't yet enable it for 3.10. The changes were not included in the earlier multiplatform series in order to avoid clashes with the other Exynos updates. This also includes work from Tomasz Figa to fix the pwm clocksource code on Exynos, which is not strictly required for multiplatform, but related to the other patches in this set and needed as a bug fix for at least one board." * tag 'multiplatform-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (22 commits) ARM: dts: exynops4210: really add universal_c210 dts ARM: dts: exynos4210: Add basic dts file for universal_c210 board ARM: dts: exynos4: Add node for PWM device ARM: SAMSUNG: Do not register legacy timer interrupts on Exynos clocksource: samsung_pwm_timer: Work around rounding errors in clockevents core clocksource: samsung_pwm_timer: Correct programming of clock events clocksource: samsung_pwm_timer: Use proper clockevents max_delta clocksource: samsung_pwm_timer: Add support for non-DT platforms clocksource: samsung_pwm_timer: Drop unused samsung_pwm struct clocksource: samsung_pwm_timer: Keep all driver data in a structure clocksource: samsung_pwm_timer: Make PWM spinlock global clocksource: samsung_pwm_timer: Let platforms select the driver Documentation: Add device tree bindings for Samsung PWM timers clocksource: add samsung pwm timer driver irqchip: exynos: look up irq using irq_find_mapping irqchip: exynos: pass irq_base from platform irqchip: exynos: localize irq lookup for ATAGS irqchip: exynos: allocate combiner_data dynamically irqchip: exynos: pass max combiner number to combiner_init ARM: exynos: add missing properties for combiner IRQs ...
102 lines
2.4 KiB
C
102 lines
2.4 KiB
C
/*
|
|
* 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
|
|
|
|
#include <linux/of.h>
|
|
|
|
void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1);
|
|
void exynos_init_time(void);
|
|
extern unsigned long xxti_f, xusbxti_f;
|
|
|
|
struct map_desc;
|
|
void exynos_init_io(struct map_desc *mach_desc, int size);
|
|
void exynos4_init_irq(void);
|
|
void exynos5_init_irq(void);
|
|
void exynos4_restart(char mode, const char *cmd);
|
|
void exynos5_restart(char mode, const char *cmd);
|
|
void exynos_init_late(void);
|
|
|
|
/* ToDo: remove these after migrating legacy exynos4 platforms to dt */
|
|
void exynos4_clk_init(struct device_node *np, int is_exynos4210, void __iomem *reg_base, unsigned long xom);
|
|
void exynos4_clk_register_fixed_ext(unsigned long, unsigned long);
|
|
|
|
void exynos_firmware_init(void);
|
|
|
|
#ifdef CONFIG_PM_GENERIC_DOMAINS
|
|
int exynos_pm_late_initcall(void);
|
|
#else
|
|
static inline int exynos_pm_late_initcall(void) { return 0; }
|
|
#endif
|
|
|
|
#ifdef CONFIG_ARCH_EXYNOS4
|
|
void exynos4_register_clocks(void);
|
|
void exynos4_setup_clocks(void);
|
|
|
|
#else
|
|
#define exynos4_register_clocks()
|
|
#define exynos4_setup_clocks()
|
|
#endif
|
|
|
|
#ifdef CONFIG_ARCH_EXYNOS5
|
|
void exynos5_register_clocks(void);
|
|
void exynos5_setup_clocks(void);
|
|
|
|
#else
|
|
#define exynos5_register_clocks()
|
|
#define exynos5_setup_clocks()
|
|
#endif
|
|
|
|
#ifdef CONFIG_CPU_EXYNOS4210
|
|
void exynos4210_register_clocks(void);
|
|
|
|
#else
|
|
#define exynos4210_register_clocks()
|
|
#endif
|
|
|
|
#ifdef CONFIG_SOC_EXYNOS4212
|
|
void exynos4212_register_clocks(void);
|
|
|
|
#else
|
|
#define exynos4212_register_clocks()
|
|
#endif
|
|
|
|
struct device_node;
|
|
void combiner_init(void __iomem *combiner_base, struct device_node *np,
|
|
unsigned int max_nr, int irq_base);
|
|
|
|
extern struct smp_operations exynos_smp_ops;
|
|
|
|
extern void exynos_cpu_die(unsigned int cpu);
|
|
|
|
/* 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);
|
|
|
|
#endif /* __ARCH_ARM_MACH_EXYNOS_COMMON_H */
|