• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/soc/codecs/

Lines Matching defs:wm8994

2  * wm8994.c  --  WM8994 ALSA SoC Audio driver
31 #include <linux/mfd/wm8994/core.h>
32 #include <linux/mfd/wm8994/registers.h>
33 #include <linux/mfd/wm8994/pdata.h>
34 #include <linux/mfd/wm8994/gpio.h>
36 #include "wm8994.h"
1728 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1733 wm8994->reg_cache[reg] = value;
1755 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1765 switch (wm8994->sysclk[aif]) {
1767 rate = wm8994->mclk[0];
1772 rate = wm8994->mclk[1];
1777 rate = wm8994->fll[0].out;
1782 rate = wm8994->fll[1].out;
1801 wm8994->aifclk[aif] = rate;
1812 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1826 if (wm8994->aifclk[0] == wm8994->aifclk[1])
1829 if (wm8994->aifclk[0] < wm8994->aifclk[1])
1909 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1910 struct wm8994_pdata *pdata = wm8994->pdata;
1912 int cfg = wm8994->drc_cfg[drc];
1945 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1946 struct wm8994_pdata *pdata = wm8994->pdata;
1956 wm8994->drc_cfg[drc] = value;
1967 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1970 ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc];
1977 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
1978 struct wm8994_pdata *pdata = wm8994->pdata;
1982 if (!pdata || !wm8994->num_retune_mobile_texts)
1999 cfg = wm8994->retune_mobile_cfg[block];
2004 wm8994->retune_mobile_texts[cfg]) == 0 &&
2006 - wm8994->dac_rates[iface]) < best_val) {
2009 - wm8994->dac_rates[iface]);
2017 wm8994->dac_rates[iface]);
2048 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
2049 struct wm8994_pdata *pdata = wm8994->pdata;
2059 wm8994->retune_mobile_cfg[block] = value;
2070 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
2073 ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block];
2894 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
2923 src = wm8994->fll[id].src;
2935 if (wm8994->fll[id].src == src &&
2936 wm8994->fll[id].in == freq_in && wm8994->fll[id].out == freq_out)
2946 ret = wm8994_get_fll_config(&fll, wm8994->fll[id].in,
2947 wm8994->fll[id].out);
2990 wm8994->fll[id].in = freq_in;
2991 wm8994->fll[id].out = freq_out;
2992 wm8994->fll[id].src = src;
3011 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
3026 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK1;
3027 wm8994->mclk[0] = freq;
3034 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_MCLK2;
3035 wm8994->mclk[1] = freq;
3041 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL1;
3046 wm8994->sysclk[dai->id - 1] = WM8994_SYSCLK_FLL2;
3081 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
3097 if (wm8994->revision < 4) {
3304 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
3323 wm8994->lrclk_shared[0])
3333 wm8994->lrclk_shared[1])
3373 dai->id, wm8994->aifclk[id], bclk_rate);
3375 if (wm8994->aifclk[id] == 0) {
3383 - wm8994->aifclk[id]);
3386 - wm8994->aifclk[id]);
3403 cur_val = (wm8994->aifclk[id] * 10 / bclk_divs[i]) - bclk_rate;
3408 bclk_rate = wm8994->aifclk[id] * 10 / bclk_divs[best];
3427 wm8994->dac_rates[0] = params_rate(params);
3432 wm8994->dac_rates[1] = params_rate(params);
3591 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
3594 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {
3595 memcpy(&wm8994->fll_suspend[i], &wm8994->fll[i],
3612 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
3617 for (i = 1; i < ARRAY_SIZE(wm8994->reg_cache); i++) {
3636 for (i = 0; i < ARRAY_SIZE(wm8994->fll); i++) {
3637 if (!wm8994->fll_suspend[i].out)
3641 wm8994->fll_suspend[i].src,
3642 wm8994->fll_suspend[i].in,
3643 wm8994->fll_suspend[i].out);
3656 static void wm8994_handle_retune_mobile_pdata(struct wm8994_priv *wm8994)
3658 struct snd_soc_codec *codec = &wm8994->codec;
3659 struct wm8994_pdata *pdata = wm8994->pdata;
3662 wm8994->retune_mobile_enum,
3666 wm8994->retune_mobile_enum,
3670 wm8994->retune_mobile_enum,
3681 wm8994->num_retune_mobile_texts = 0;
3682 wm8994->retune_mobile_texts = NULL;
3684 for (j = 0; j < wm8994->num_retune_mobile_texts; j++) {
3686 wm8994->retune_mobile_texts[j]) == 0)
3690 if (j != wm8994->num_retune_mobile_texts)
3694 t = krealloc(wm8994->retune_mobile_texts,
3696 (wm8994->num_retune_mobile_texts + 1),
3702 t[wm8994->num_retune_mobile_texts] =
3706 wm8994->num_retune_mobile_texts++;
3707 wm8994->retune_mobile_texts = t;
3711 wm8994->num_retune_mobile_texts);
3713 wm8994->retune_mobile_enum.max = wm8994->num_retune_mobile_texts;
3714 wm8994->retune_mobile_enum.texts = wm8994->retune_mobile_texts;
3716 ret = snd_soc_add_controls(&wm8994->codec, controls,
3719 dev_err(wm8994->codec.dev,
3723 static void wm8994_handle_pdata(struct wm8994_priv *wm8994)
3725 struct snd_soc_codec *codec = &wm8994->codec;
3726 struct wm8994_pdata *pdata = wm8994->pdata;
3745 SOC_ENUM_EXT("AIF1DRC1 Mode", wm8994->drc_enum,
3747 SOC_ENUM_EXT("AIF1DRC2 Mode", wm8994->drc_enum,
3749 SOC_ENUM_EXT("AIF2DRC Mode", wm8994->drc_enum,
3754 wm8994->drc_texts = kmalloc(sizeof(char *)
3756 if (!wm8994->drc_texts) {
3757 dev_err(wm8994->codec.dev,
3764 wm8994->drc_texts[i] = pdata->drc_cfgs[i].name;
3766 wm8994->drc_enum.max = pdata->num_drc_cfgs;
3767 wm8994->drc_enum.texts = wm8994->drc_texts;
3769 ret = snd_soc_add_controls(&wm8994->codec, controls,
3772 dev_err(wm8994->codec.dev,
3783 wm8994_handle_retune_mobile_pdata(wm8994);
3785 snd_soc_add_controls(&wm8994->codec, wm8994_eq_controls,
3861 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
3867 micdet = &wm8994->micdet[0];
3870 micdet = &wm8994->micdet[1];
3885 if (wm8994->micdet[0].jack || wm8994->micdet[1].jack)
3934 struct wm8994_priv *wm8994;
3943 wm8994 = kzalloc(sizeof(struct wm8994_priv), GFP_KERNEL);
3944 if (!wm8994) {
3949 codec = &wm8994->codec;
3955 snd_soc_codec_set_drvdata(codec, wm8994);
3967 codec->reg_cache = &wm8994->reg_cache;
3970 wm8994->pdata = pdev->dev.parent->platform_data;
3974 ARRAY_SIZE(wm8994->reg_cache) - 1,
3985 for (i = 0; i < ARRAY_SIZE(wm8994->reg_cache); i++)
3987 wm8994->reg_cache[i] = 0;
3990 wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION);
3991 switch (wm8994->revision) {
3994 wm8994->hubs.dcs_codes = -5;
3995 wm8994->hubs.hp_startup_mode = 1;
3996 wm8994->hubs.dcs_readback_mode = 1;
3999 wm8994->hubs.dcs_readback_mode = 1;
4004 wm8994_mic_irq, "Mic 1 detect", wm8994);
4010 wm8994_mic_irq, "Mic 1 short", wm8994);
4016 wm8994_mic_irq, "Mic 2 detect", wm8994);
4022 wm8994_mic_irq, "Mic 2 short", wm8994);
4037 wm8994->lrclk_shared[0] = 1;
4040 wm8994->lrclk_shared[0] = 0;
4049 wm8994->lrclk_shared[1] = 1;
4052 wm8994->lrclk_shared[1] = 0;
4110 platform_set_drvdata(pdev, wm8994);
4117 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_SHRT, wm8994);
4118 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_DET, wm8994);
4119 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_SHRT, wm8994);
4120 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_DET, wm8994);
4122 kfree(wm8994);
4128 struct wm8994_priv *wm8994 = platform_get_drvdata(pdev);
4129 struct snd_soc_codec *codec = &wm8994->codec;
4133 snd_soc_unregister_codec(&wm8994->codec);
4134 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_SHRT, wm8994);
4135 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC2_DET, wm8994);
4136 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_SHRT, wm8994);
4137 wm8994_free_irq(codec->control_data, WM8994_IRQ_MIC1_DET, wm8994);
4138 kfree(wm8994);
4146 .name = "wm8994-codec",
4169 MODULE_ALIAS("platform:wm8994-codec");