Merge branch 'linus' into timers/core
[pandora-kernel.git] / arch / arm / plat-omap / devices.c
index 30b5db7..95677d1 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/io.h>
+#include <linux/slab.h>
 
 #include <mach/hardware.h>
 #include <asm/mach-types.h>
@@ -28,6 +29,7 @@
 #include <plat/menelaus.h>
 #include <plat/mcbsp.h>
 #include <plat/dsp_common.h>
+#include <plat/omap44xx.h>
 
 #if    defined(CONFIG_OMAP_DSP) || defined(CONFIG_OMAP_DSP_MODULE)
 
@@ -192,6 +194,41 @@ void omap_mcbsp_register_board_cfg(struct omap_mcbsp_platform_data *config,
 
 /*-------------------------------------------------------------------------*/
 
+#if defined(CONFIG_SND_OMAP_SOC_MCPDM) || \
+               defined(CONFIG_SND_OMAP_SOC_MCPDM_MODULE)
+
+static struct resource mcpdm_resources[] = {
+       {
+               .name           = "mcpdm_mem",
+               .start          = OMAP44XX_MCPDM_BASE,
+               .end            = OMAP44XX_MCPDM_BASE + SZ_4K,
+               .flags          = IORESOURCE_MEM,
+       },
+       {
+               .name           = "mcpdm_irq",
+               .start          = OMAP44XX_IRQ_MCPDM,
+               .end            = OMAP44XX_IRQ_MCPDM,
+               .flags          = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device omap_mcpdm_device = {
+       .name           = "omap-mcpdm",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(mcpdm_resources),
+       .resource       = mcpdm_resources,
+};
+
+static void omap_init_mcpdm(void)
+{
+       (void) platform_device_register(&omap_mcpdm_device);
+}
+#else
+static inline void omap_init_mcpdm(void) {}
+#endif
+
+/*-------------------------------------------------------------------------*/
+
 #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
        defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
 
@@ -244,7 +281,7 @@ fail:
 
 #if defined(CONFIG_HW_RANDOM_OMAP) || defined(CONFIG_HW_RANDOM_OMAP_MODULE)
 
-#ifdef CONFIG_ARCH_OMAP24XX
+#ifdef CONFIG_ARCH_OMAP2
 #define        OMAP_RNG_BASE           0x480A0000
 #else
 #define        OMAP_RNG_BASE           0xfffe5000
@@ -385,6 +422,7 @@ static int __init omap_init_devices(void)
        omap_init_dsp();
        omap_init_kp();
        omap_init_rng();
+       omap_init_mcpdm();
        omap_init_uwire();
        omap_init_wdt();
        return 0;