From 798d52c9330ffe497b55f3cecb67e47751b9c214 Mon Sep 17 00:00:00 2001 From: David Lambert Date: Sat, 12 Feb 2011 22:35:03 -0600 Subject: [PATCH 10/60] OMAP: DMIC: Add omap_device for DMIC commit c21835e57504068e82f2f56365fae997ceabe135 upstream Register DMIC device through omap device model. Change-Id: Iad42ead4b862d8531abe420ee2fd9d1602d582ce Signed-off-by: David Lambert Signed-off-by: Misael Lopez Cruz Integrated-by: Jingdong Lu --- arch/arm/plat-omap/devices.c | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 deletions(-) diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index 28c4e52..b7f9d66 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c @@ -79,6 +79,40 @@ void omap_mcbsp_register_board_cfg(struct resource *res, int res_count, /*-------------------------------------------------------------------------*/ +#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) @@ -351,6 +385,7 @@ static int __init omap_init_devices(void) * in alphabetical order so they're easier to sort through. */ omap_init_rng(); + omap_init_dmic(); omap_init_mcpdm(); omap_init_aess(); omap_init_uwire(); -- 1.7.4.1