diff options
author | David Lambert <dlambert@ti.com> | 2010-10-29 15:27:40 -0500 |
---|---|---|
committer | Margarita Olaya Cabrera <magi.olaya@ti.com> | 2010-12-13 16:13:55 -0600 |
commit | e13af7b5f4642013e5840e32d021187a0da2ed2e (patch) | |
tree | 91111d25c5bd1e3b377cdc57099649dd21e6adeb | |
parent | 4153d26a6a8e0ce9b6f4c8dc2e8a4240b80d67e5 (diff) |
OMAP4: DMIC: Add digital mic PM registration
Add PM registration for digital microphone driver.
Change-Id: I30925644d4d9e0e681b26574153b37d5a0f6e889
Signed-off-by: David Lambert <dlambert@ti.com>
Signed-off-by: Misael Lopez Cruz <misael.lopez@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/devices.c | 18 | ||||
-rwxr-xr-x | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 2 | ||||
-rw-r--r-- | 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(); |