@@ -17,6 +17,10 @@ obj-$(CONFIG_ARCH_OMAP4) += $(omap-3-4-common) prcm.o clock.o
obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o
+obj-$(CONFIG_ARCH_OMAP24xx) += devices24xx.o
+obj-$(CONFIG_ARCH_OMAP34xx) += devices34xx.o
+obj-$(CONFIG_ARCH_OMAP44xx) += devices44xx.o
+
# SMP support ONLY available for OMAP4
obj-$(CONFIG_SMP) += omap-smp.o omap-headsmp.o
obj-$(CONFIG_LOCAL_TIMERS) += timer-mpu.o
@@ -169,79 +169,6 @@ static inline void omap_init_camera(void)
}
#endif
-#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
-
-#define MBOX_REG_SIZE 0x120
-
-#ifdef CONFIG_ARCH_OMAP2
-static struct resource omap_mbox_resources[] = {
- {
- .start = OMAP24XX_MAILBOX_BASE,
- .end = OMAP24XX_MAILBOX_BASE + MBOX_REG_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = INT_24XX_MAIL_U0_MPU,
- .flags = IORESOURCE_IRQ,
- },
- {
- .start = INT_24XX_MAIL_U3_MPU,
- .flags = IORESOURCE_IRQ,
- },
-};
-#endif
-
-#ifdef CONFIG_ARCH_OMAP3
-static struct resource omap_mbox_resources[] = {
- {
- .start = OMAP34XX_MAILBOX_BASE,
- .end = OMAP34XX_MAILBOX_BASE + MBOX_REG_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = INT_24XX_MAIL_U0_MPU,
- .flags = IORESOURCE_IRQ,
- },
-};
-#endif
-
-#ifdef CONFIG_ARCH_OMAP4
-
-#define OMAP4_MBOX_REG_SIZE 0x130
-static struct resource omap_mbox_resources[] = {
- {
- .start = OMAP44XX_MAILBOX_BASE,
- .end = OMAP44XX_MAILBOX_BASE +
- OMAP4_MBOX_REG_SIZE - 1,
- .flags = IORESOURCE_MEM,
- },
- {
- .start = INT_44XX_MAIL_U0_MPU,
- .flags = IORESOURCE_IRQ,
- },
-};
-#endif
-
-static struct platform_device mbox_device = {
- .name = "omap2-mailbox",
- .id = -1,
-};
-
-static inline void omap_init_mbox(void)
-{
- if (cpu_is_omap2420() || cpu_is_omap3430() || cpu_is_omap44xx()) {
- mbox_device.num_resources = ARRAY_SIZE(omap_mbox_resources);
- mbox_device.resource = omap_mbox_resources;
- } else {
- pr_err("%s: platform not supported\n", __func__);
- return;
- }
- platform_device_register(&mbox_device);
-}
-#else
-static inline void omap_init_mbox(void) { }
-#endif /* CONFIG_OMAP_MBOX_FWK */
-
#if defined(CONFIG_OMAP_SDTI)
#if defined(CONFIG_ARCH_OMAP2)
@@ -865,7 +792,6 @@ static int __init omap2_init_devices(void)
*/
omap_hsmmc_reset();
omap_init_camera();
- omap_init_mbox();
omap_init_mcspi();
omap_hdq_init();
omap_init_sti();
new file mode 100644
@@ -0,0 +1,63 @@
+/*
+ * omap24xx architecture specific deivce initialization
+ *
+ * Copyright (C) 2010 Nokia Corporation
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+
+#include <plat/irqs.h>
+
+#include <mach/hardware.h>
+
+#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
+
+#define MBOX_REG_SIZE 0x120
+
+static struct resource omap_mbox_resources[] = {
+ {
+ .start = OMAP24XX_MAILBOX_BASE,
+ .end = OMAP24XX_MAILBOX_BASE + MBOX_REG_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = INT_24XX_MAIL_U0_MPU,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = INT_24XX_MAIL_U3_MPU,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device omap_mbox_device = {
+ .name = "omap2-mailbox",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(omap_mbox_resources),
+ .resource = omap_mbox_resources,
+};
+
+static inline void omap_mbox_init(void)
+{
+ platform_device_register(&omap_mbox_device);
+}
+#else
+static inline void omap_mbox_init(void) { }
+#endif /* CONFIG_OMAP_MBOX_FWK */
+
+static int __init omap24xx_init_devices(void)
+{
+ if (!cpu_is_omap24xx())
+ return;
+
+ omap_mbox_init();
+
+ return 0;
+}
+arch_initcall(omap24xx_init_devices);
new file mode 100644
@@ -0,0 +1,59 @@
+/*
+ * omap34xx architecture specific deivce initialization
+ *
+ * Copyright (C) 2010 Nokia Corporation
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+
+#include <plat/irqs.h>
+
+#include <mach/hardware.h>
+
+#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
+
+#define MBOX_REG_SIZE 0x120
+
+static struct resource omap_mbox_resources[] = {
+ {
+ .start = OMAP34XX_MAILBOX_BASE,
+ .end = OMAP34XX_MAILBOX_BASE + MBOX_REG_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = INT_24XX_MAIL_U0_MPU,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device omap_mbox_device = {
+ .name = "omap2-mailbox",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(omap_mbox_resources),
+ .resource = omap_mbox_resources,
+};
+
+static inline void omap_mbox_init(void)
+{
+ platform_device_register(&omap_mbox_device);
+}
+#else
+static inline void omap_mbox_init(void) { }
+#endif /* CONFIG_OMAP_MBOX_FWK */
+
+static int __init omap34xx_init_devices(void)
+{
+ if (!cpu_is_omap34xx())
+ return 0;
+
+ omap_mbox_init();
+
+ return 0;
+}
+arch_initcall(omap34xx_init_devices);
new file mode 100644
@@ -0,0 +1,60 @@
+/*
+ * omap44xx architecture specific deivce initialization
+ *
+ * Copyright (C) 2010 Nokia Corporation
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+
+#include <plat/irqs.h>
+
+#include <mach/hardware.h>
+
+#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
+
+#define OMAP4_MBOX_REG_SIZE 0x130
+
+static struct resource omap_mbox_resources[] = {
+ {
+ .start = OMAP44XX_MAILBOX_BASE,
+ .end = OMAP44XX_MAILBOX_BASE +
+ OMAP4_MBOX_REG_SIZE - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ {
+ .start = INT_44XX_MAIL_U0_MPU,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device omap_mbox_device = {
+ .name = "omap2-mailbox",
+ .id = -1,
+ .num_resources = ARRAY_SIZE(omap_mbox_resources),
+ .resource = omap_mbox_resources,
+};
+
+static inline void omap_mbox_init(void)
+{
+ platform_device_register(&omap_mbox_device);
+}
+#else
+static inline void omap_mbox_init(void) { }
+#endif /* CONFIG_OMAP_MBOX_FWK */
+
+static int __init omap44xx_init_devices(void)
+{
+ if (!cpu_is_omap44xx())
+ return;
+
+ omap_mbox_init();
+
+ return 0;
+}
+arch_initcall(omap44xx_init_devices);