From e13af7b5f4642013e5840e32d021187a0da2ed2e Mon Sep 17 00:00:00 2001 From: David Lambert Date: Fri, 29 Oct 2010 15:27:40 -0500 Subject: OMAP4: DMIC: Add digital mic PM registration Add PM registration for digital microphone driver. Change-Id: I30925644d4d9e0e681b26574153b37d5a0f6e889 Signed-off-by: David Lambert Signed-off-by: Misael Lopez Cruz --- arch/arm/mach-omap2/devices.c | 18 --------------- arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 +- arch/arm/plat-omap/devices.c | 35 ++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 19 deletions(-) diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 2c65058df523..f54154a6e66f 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c @@ -350,30 +350,12 @@ static struct platform_device omap_abe_dai = { .id = -1, }; -static struct platform_device omap_dmic_dai0 = { - .name = "omap-dmic-dai", - .id = 0, -}; - -static struct platform_device omap_dmic_dai1 = { - .name = "omap-dmic-dai", - .id = 1, -}; - -static struct platform_device omap_dmic_dai2 = { - .name = "omap-dmic-dai", - .id = 2, -}; - static inline void omap_init_abe(void) { platform_device_register(&codec_dmic0); platform_device_register(&codec_dmic1); platform_device_register(&codec_dmic2); platform_device_register(&omap_abe_dai); - platform_device_register(&omap_dmic_dai0); - platform_device_register(&omap_dmic_dai1); - platform_device_register(&omap_dmic_dai2); } #else static inline void omap_init_abe(void) {} diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 869db2ca0cc8..98dd7bbd11ff 100755 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -5946,7 +5946,7 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = { /* dma class */ &omap44xx_dma_system_hwmod, /* dmic class */ -/* &omap44xx_dmic_hwmod, */ + &omap44xx_dmic_hwmod, /* dsp class */ &omap44xx_dsp_hwmod, &omap44xx_dsp_c0_hwmod, diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index 0259dd158075..d12ec1b7612a 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c @@ -200,6 +200,40 @@ void omap_mcbsp_register_board_cfg(struct omap_mcbsp_platform_data *config, /*-------------------------------------------------------------------------*/ +#if defined(CONFIG_SND_OMAP_SOC_DMIC) || \ + defined(CONFIG_SND_OMAP_SOC_DMIC_MODULE) + +static struct omap_device_pm_latency omap_dmic_latency[] = { + { + .deactivate_func = omap_device_idle_hwmods, + .activate_func = omap_device_enable_hwmods, + .flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST, + }, +}; + +static void omap_init_dmic(void) +{ + struct omap_hwmod *oh; + struct omap_device *od; + + oh = omap_hwmod_lookup("dmic"); + if (!oh) { + printk(KERN_ERR "Could not look up dmic hw_mod\n"); + return; + } + + od = omap_device_build("omap-dmic-dai", -1, oh, NULL, 0, + omap_dmic_latency, + ARRAY_SIZE(omap_dmic_latency), 0); + if (IS_ERR(od)) + printk(KERN_ERR "Could not build omap_device for omap-dmic-dai\n"); +} +#else +static inline void omap_init_dmic(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[] = { @@ -534,6 +568,7 @@ static int __init omap_init_devices(void) * in alphabetical order so they're easier to sort through. */ omap_init_aess(); + omap_init_dmic(); omap_init_dsp(); omap_init_kp(); omap_init_rng(); -- cgit v1.2.3