|
@@ -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__ */
|
|
|
|