]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - arch/arm/mach-omap1/devices.c
Merge branch 'pm-hwmods' of ssh://master.kernel.org/pub/scm/linux/kernel/git/khilman...
[mv-sheeva.git] / arch / arm / mach-omap1 / devices.c
index 314fea3074b500d2122648dd40e9ba208878c152..63d68cf908af55b9d7ed6efd3dbae39655308b71 100644 (file)
@@ -9,6 +9,7 @@
  * (at your option) any later version.
  */
 
+#include <linux/dma-mapping.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
@@ -63,43 +64,7 @@ static void omap_init_rtc(void)
 static inline void omap_init_rtc(void) {}
 #endif
 
-#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
-
-#if defined(CONFIG_ARCH_OMAP15XX)
-#  define OMAP1_MBOX_SIZE      0x23
-#  define INT_DSP_MAILBOX1     INT_1510_DSP_MAILBOX1
-#elif defined(CONFIG_ARCH_OMAP16XX)
-#  define OMAP1_MBOX_SIZE      0x2f
-#  define INT_DSP_MAILBOX1     INT_1610_DSP_MAILBOX1
-#endif
-
-static struct resource mbox_resources[] = {
-       {
-               .start          = OMAP16XX_MAILBOX_BASE,
-               .end            = OMAP16XX_MAILBOX_BASE + OMAP1_MBOX_SIZE,
-               .flags          = IORESOURCE_MEM,
-       },
-       {
-               .start          = INT_DSP_MAILBOX1,
-               .flags          = IORESOURCE_IRQ,
-               .name           = "dsp",
-       },
-};
-
-static struct platform_device mbox_device = {
-       .name           = "omap1-mailbox",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(mbox_resources),
-       .resource       = mbox_resources,
-};
-
-static inline void omap_init_mbox(void)
-{
-       platform_device_register(&mbox_device);
-}
-#else
 static inline void omap_init_mbox(void) { }
-#endif
 
 /*-------------------------------------------------------------------------*/
 
@@ -227,44 +192,51 @@ static inline void omap_init_spi100k(void)
 }
 #endif
 
-/*-------------------------------------------------------------------------*/
-
-#if defined(CONFIG_OMAP_STI)
 
-#define OMAP1_STI_BASE         0xfffea000
-#define OMAP1_STI_CHANNEL_BASE (OMAP1_STI_BASE + 0x400)
+#define OMAP1_CAMERA_BASE      0xfffb6800
+#define OMAP1_CAMERA_IOSIZE    0x1c
 
-static struct resource sti_resources[] = {
-       {
-               .start          = OMAP1_STI_BASE,
-               .end            = OMAP1_STI_BASE + SZ_1K - 1,
-               .flags          = IORESOURCE_MEM,
+static struct resource omap1_camera_resources[] = {
+       [0] = {
+               .start  = OMAP1_CAMERA_BASE,
+               .end    = OMAP1_CAMERA_BASE + OMAP1_CAMERA_IOSIZE - 1,
+               .flags  = IORESOURCE_MEM,
        },
-       {
-               .start          = OMAP1_STI_CHANNEL_BASE,
-               .end            = OMAP1_STI_CHANNEL_BASE + SZ_1K - 1,
-               .flags          = IORESOURCE_MEM,
+       [1] = {
+               .start  = INT_CAMERA,
+               .flags  = IORESOURCE_IRQ,
        },
-       {
-               .start          = INT_1610_STI,
-               .flags          = IORESOURCE_IRQ,
-       }
 };
 
-static struct platform_device sti_device = {
-       .name           = "sti",
-       .id             = -1,
-       .num_resources  = ARRAY_SIZE(sti_resources),
-       .resource       = sti_resources,
+static u64 omap1_camera_dma_mask = DMA_BIT_MASK(32);
+
+static struct platform_device omap1_camera_device = {
+       .name           = "omap1-camera",
+       .id             = 0, /* This is used to put cameras on this interface */
+       .dev            = {
+               .dma_mask               = &omap1_camera_dma_mask,
+               .coherent_dma_mask      = DMA_BIT_MASK(32),
+       },
+       .num_resources  = ARRAY_SIZE(omap1_camera_resources),
+       .resource       = omap1_camera_resources,
 };
 
-static inline void omap_init_sti(void)
+void __init omap1_camera_init(void *info)
 {
-       platform_device_register(&sti_device);
+       struct platform_device *dev = &omap1_camera_device;
+       int ret;
+
+       dev->dev.platform_data = info;
+
+       ret = platform_device_register(dev);
+       if (ret)
+               dev_err(&dev->dev, "unable to register device: %d\n", ret);
 }
-#else
+
+
+/*-------------------------------------------------------------------------*/
+
 static inline void omap_init_sti(void) {}
-#endif
 
 /*-------------------------------------------------------------------------*/
 
@@ -303,3 +275,30 @@ static int __init omap1_init_devices(void)
 }
 arch_initcall(omap1_init_devices);
 
+#if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE)
+
+static struct resource wdt_resources[] = {
+       {
+               .start          = 0xfffeb000,
+               .end            = 0xfffeb07F,
+               .flags          = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device omap_wdt_device = {
+       .name      = "omap_wdt",
+       .id          = -1,
+       .num_resources  = ARRAY_SIZE(wdt_resources),
+       .resource       = wdt_resources,
+};
+
+static int __init omap_init_wdt(void)
+{
+       if (!cpu_is_omap16xx())
+               return;
+
+       platform_device_register(&omap_wdt_device);
+       return 0;
+}
+subsys_initcall(omap_init_wdt);
+#endif