diff options
Diffstat (limited to 'arch/arm/mach-omap2/soc.h')
| -rw-r--r-- | arch/arm/mach-omap2/soc.h | 29 | 
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h index f31d90774de..092aedd7ed1 100644 --- a/arch/arm/mach-omap2/soc.h +++ b/arch/arm/mach-omap2/soc.h @@ -42,6 +42,9 @@  #undef MULTI_OMAP2  #undef OMAP_NAME +#ifdef CONFIG_ARCH_MULTIPLATFORM +#define MULTI_OMAP2 +#endif  #ifdef CONFIG_SOC_OMAP2420  # ifdef OMAP_NAME  #  undef  MULTI_OMAP2 @@ -112,6 +115,11 @@ int omap_type(void);   */  unsigned int omap_rev(void); +static inline int soc_is_omap(void) +{ +	return omap_rev() != 0; +} +  /*   * Get the CPU revision for OMAP devices   */ @@ -465,5 +473,26 @@ static inline unsigned int omap4_has_ ##feat(void)	\  OMAP4_HAS_FEATURE(perf_silicon, PERF_SILICON) +/* + * We need to make sure omap initcalls don't run when + * multiplatform kernels are booted on other SoCs. + */ +#define omap_initcall(level, fn)		\ +static int __init __used __##fn(void)		\ +{						\ +	if (!soc_is_omap())			\ +		return 0;			\ +	return fn();				\ +}						\ +level(__##fn); + +#define omap_early_initcall(fn)		omap_initcall(early_initcall, fn) +#define omap_core_initcall(fn)		omap_initcall(core_initcall, fn) +#define omap_postcore_initcall(fn)	omap_initcall(postcore_initcall, fn) +#define omap_arch_initcall(fn)		omap_initcall(arch_initcall, fn) +#define omap_subsys_initcall(fn)	omap_initcall(subsys_initcall, fn) +#define omap_device_initcall(fn)	omap_initcall(device_initcall, fn) +#define omap_late_initcall(fn)		omap_initcall(late_initcall, fn) +  #endif	/* __ASSEMBLY__ */  |