diff options
Diffstat (limited to 'arch/arm/mach-omap2/devices.c')
| -rw-r--r-- | arch/arm/mach-omap2/devices.c | 36 | 
1 files changed, 34 insertions, 2 deletions
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 0f8e0eb1816..68ec03152d5 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -8,7 +8,7 @@   * the Free Software Foundation; either version 2 of the License, or   * (at your option) any later version.   */ - +#include <linux/gpio.h>  #include <linux/kernel.h>  #include <linux/init.h>  #include <linux/platform_device.h> @@ -27,7 +27,6 @@  #include <plat/tc.h>  #include <plat/board.h>  #include <plat/mcbsp.h> -#include <mach/gpio.h>  #include <plat/mmc.h>  #include <plat/dma.h>  #include <plat/omap_hwmod.h> @@ -316,6 +315,38 @@ static void omap_init_audio(void)  static inline void omap_init_audio(void) {}  #endif +#if defined(CONFIG_SND_OMAP_SOC_MCPDM) || \ +		defined(CONFIG_SND_OMAP_SOC_MCPDM_MODULE) + +static struct omap_device_pm_latency omap_mcpdm_latency[] = { +	{ +		.deactivate_func = omap_device_idle_hwmods, +		.activate_func = omap_device_enable_hwmods, +		.flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST, +	}, +}; + +static void omap_init_mcpdm(void) +{ +	struct omap_hwmod *oh; +	struct omap_device *od; + +	oh = omap_hwmod_lookup("mcpdm"); +	if (!oh) { +		printk(KERN_ERR "Could not look up mcpdm hw_mod\n"); +		return; +	} + +	od = omap_device_build("omap-mcpdm", -1, oh, NULL, 0, +				omap_mcpdm_latency, +				ARRAY_SIZE(omap_mcpdm_latency), 0); +	if (IS_ERR(od)) +		printk(KERN_ERR "Could not build omap_device for omap-mcpdm-dai\n"); +} +#else +static inline void omap_init_mcpdm(void) {} +#endif +  #if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)  #include <plat/mcspi.h> @@ -660,6 +691,7 @@ static int __init omap2_init_devices(void)  	 * in alphabetical order so they're easier to sort through.  	 */  	omap_init_audio(); +	omap_init_mcpdm();  	omap_init_camera();  	omap_init_mbox();  	omap_init_mcspi();  |