Lines Matching refs:wm8994
45 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_dsp2_fw() local
54 if (wm8994->cur_fw == fw) in wm8958_dsp2_fw()
156 wm8994_bulk_write(wm8994->wm8994, in wm8958_dsp2_fw()
177 wm8994->cur_fw = fw; in wm8958_dsp2_fw()
197 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_dsp_start_mbc() local
198 struct wm8994 *control = wm8994->wm8994; in wm8958_dsp_start_mbc()
206 if (wm8994->mbc) in wm8958_dsp_start_mbc()
207 wm8958_dsp2_fw(codec, "MBC", wm8994->mbc, false); in wm8958_dsp_start_mbc()
215 = &control->pdata.mbc_cfgs[wm8994->mbc_cfg]; in wm8958_dsp_start_mbc()
241 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_dsp_start_vss() local
242 struct wm8994 *control = wm8994->wm8994; in wm8958_dsp_start_vss()
245 if (wm8994->mbc_vss) in wm8958_dsp_start_vss()
246 wm8958_dsp2_fw(codec, "MBC+VSS", wm8994->mbc_vss, false); in wm8958_dsp_start_vss()
254 = &control->pdata.mbc_cfgs[wm8994->mbc_cfg]; in wm8958_dsp_start_vss()
263 = &control->pdata.vss_cfgs[wm8994->vss_cfg]; in wm8958_dsp_start_vss()
271 = &control->pdata.vss_hpf_cfgs[wm8994->vss_hpf_cfg]; in wm8958_dsp_start_vss()
283 if (wm8994->mbc_ena[path]) in wm8958_dsp_start_vss()
285 if (wm8994->hpf2_ena[path]) in wm8958_dsp_start_vss()
287 if (wm8994->hpf1_ena[path]) in wm8958_dsp_start_vss()
289 if (wm8994->vss_ena[path]) in wm8958_dsp_start_vss()
302 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_dsp_start_enh_eq() local
303 struct wm8994 *control = wm8994->wm8994; in wm8958_dsp_start_enh_eq()
306 wm8958_dsp2_fw(codec, "ENH_EQ", wm8994->enh_eq, false); in wm8958_dsp_start_enh_eq()
314 = &control->pdata.enh_eq_cfgs[wm8994->enh_eq_cfg]; in wm8958_dsp_start_enh_eq()
333 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_dsp_apply() local
356 ena = wm8994->mbc_ena[path] || wm8994->vss_ena[path] || in wm8958_dsp_apply()
357 wm8994->hpf1_ena[path] || wm8994->hpf2_ena[path] || in wm8958_dsp_apply()
358 wm8994->enh_eq_ena[path]; in wm8958_dsp_apply()
365 path, wm8994->dsp_active, start, pwr_reg, reg); in wm8958_dsp_apply()
385 if (wm8994->enh_eq_ena[path]) in wm8958_dsp_apply()
387 else if (wm8994->vss_ena[path] || wm8994->hpf1_ena[path] || in wm8958_dsp_apply()
388 wm8994->hpf2_ena[path]) in wm8958_dsp_apply()
390 else if (wm8994->mbc_ena[path]) in wm8958_dsp_apply()
393 wm8994->dsp_active = path; in wm8958_dsp_apply()
398 if (!start && wm8994->dsp_active == path) { in wm8958_dsp_apply()
412 wm8994->dsp_active = -1; in wm8958_dsp_apply()
441 static int wm8958_dsp2_busy(struct wm8994_priv *wm8994, int aif) in wm8958_dsp2_busy() argument
445 for (i = 0; i < ARRAY_SIZE(wm8994->mbc_ena); i++) { in wm8958_dsp2_busy()
448 if (wm8994->mbc_ena[i] || wm8994->vss_ena[i] || in wm8958_dsp2_busy()
449 wm8994->hpf1_ena[i] || wm8994->hpf2_ena[i]) in wm8958_dsp2_busy()
460 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_put_mbc_enum() local
461 struct wm8994 *control = wm8994->wm8994; in wm8958_put_mbc_enum()
473 wm8994->mbc_cfg = value; in wm8958_put_mbc_enum()
482 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_get_mbc_enum() local
484 ucontrol->value.enumerated.item[0] = wm8994->mbc_cfg; in wm8958_get_mbc_enum()
504 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mbc_get() local
506 ucontrol->value.integer.value[0] = wm8994->mbc_ena[mbc]; in wm8958_mbc_get()
516 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mbc_put() local
518 if (wm8994->mbc_ena[mbc] == ucontrol->value.integer.value[0]) in wm8958_mbc_put()
524 if (wm8958_dsp2_busy(wm8994, mbc)) { in wm8958_mbc_put()
529 if (wm8994->enh_eq_ena[mbc]) in wm8958_mbc_put()
532 wm8994->mbc_ena[mbc] = ucontrol->value.integer.value[0]; in wm8958_mbc_put()
534 wm8958_dsp_apply(codec, mbc, wm8994->mbc_ena[mbc]); in wm8958_mbc_put()
550 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_put_vss_enum() local
551 struct wm8994 *control = wm8994->wm8994; in wm8958_put_vss_enum()
563 wm8994->vss_cfg = value; in wm8958_put_vss_enum()
572 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_get_vss_enum() local
574 ucontrol->value.enumerated.item[0] = wm8994->vss_cfg; in wm8958_get_vss_enum()
583 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_put_vss_hpf_enum() local
584 struct wm8994 *control = wm8994->wm8994; in wm8958_put_vss_hpf_enum()
596 wm8994->vss_hpf_cfg = value; in wm8958_put_vss_hpf_enum()
605 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_get_vss_hpf_enum() local
607 ucontrol->value.enumerated.item[0] = wm8994->vss_hpf_cfg; in wm8958_get_vss_hpf_enum()
627 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_vss_get() local
629 ucontrol->value.integer.value[0] = wm8994->vss_ena[vss]; in wm8958_vss_get()
639 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_vss_put() local
641 if (wm8994->vss_ena[vss] == ucontrol->value.integer.value[0]) in wm8958_vss_put()
647 if (!wm8994->mbc_vss) in wm8958_vss_put()
650 if (wm8958_dsp2_busy(wm8994, vss)) { in wm8958_vss_put()
655 if (wm8994->enh_eq_ena[vss]) in wm8958_vss_put()
658 wm8994->vss_ena[vss] = ucontrol->value.integer.value[0]; in wm8958_vss_put()
660 wm8958_dsp_apply(codec, vss, wm8994->vss_ena[vss]); in wm8958_vss_put()
688 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_hpf_get() local
691 ucontrol->value.integer.value[0] = wm8994->hpf1_ena[hpf % 3]; in wm8958_hpf_get()
693 ucontrol->value.integer.value[0] = wm8994->hpf2_ena[hpf % 3]; in wm8958_hpf_get()
703 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_hpf_put() local
706 if (wm8994->hpf1_ena[hpf % 3] == in wm8958_hpf_put()
710 if (wm8994->hpf2_ena[hpf % 3] == in wm8958_hpf_put()
718 if (!wm8994->mbc_vss) in wm8958_hpf_put()
721 if (wm8958_dsp2_busy(wm8994, hpf % 3)) { in wm8958_hpf_put()
726 if (wm8994->enh_eq_ena[hpf % 3]) in wm8958_hpf_put()
730 wm8994->hpf1_ena[hpf % 3] = ucontrol->value.integer.value[0]; in wm8958_hpf_put()
732 wm8994->hpf2_ena[hpf % 3] = ucontrol->value.integer.value[0]; in wm8958_hpf_put()
750 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_put_enh_eq_enum() local
751 struct wm8994 *control = wm8994->wm8994; in wm8958_put_enh_eq_enum()
763 wm8994->enh_eq_cfg = value; in wm8958_put_enh_eq_enum()
772 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_get_enh_eq_enum() local
774 ucontrol->value.enumerated.item[0] = wm8994->enh_eq_cfg; in wm8958_get_enh_eq_enum()
794 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_enh_eq_get() local
796 ucontrol->value.integer.value[0] = wm8994->enh_eq_ena[eq]; in wm8958_enh_eq_get()
806 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_enh_eq_put() local
808 if (wm8994->enh_eq_ena[eq] == ucontrol->value.integer.value[0]) in wm8958_enh_eq_put()
814 if (!wm8994->enh_eq) in wm8958_enh_eq_put()
817 if (wm8958_dsp2_busy(wm8994, eq)) { in wm8958_enh_eq_put()
822 if (wm8994->mbc_ena[eq] || wm8994->vss_ena[eq] || in wm8958_enh_eq_put()
823 wm8994->hpf1_ena[eq] || wm8994->hpf2_ena[eq]) in wm8958_enh_eq_put()
826 wm8994->enh_eq_ena[eq] = ucontrol->value.integer.value[0]; in wm8958_enh_eq_put()
867 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_enh_eq_loaded() local
870 mutex_lock(&wm8994->fw_lock); in wm8958_enh_eq_loaded()
871 wm8994->enh_eq = fw; in wm8958_enh_eq_loaded()
872 mutex_unlock(&wm8994->fw_lock); in wm8958_enh_eq_loaded()
879 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mbc_vss_loaded() local
882 mutex_lock(&wm8994->fw_lock); in wm8958_mbc_vss_loaded()
883 wm8994->mbc_vss = fw; in wm8958_mbc_vss_loaded()
884 mutex_unlock(&wm8994->fw_lock); in wm8958_mbc_vss_loaded()
891 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_mbc_loaded() local
894 mutex_lock(&wm8994->fw_lock); in wm8958_mbc_loaded()
895 wm8994->mbc = fw; in wm8958_mbc_loaded()
896 mutex_unlock(&wm8994->fw_lock); in wm8958_mbc_loaded()
902 struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); in wm8958_dsp2_init() local
903 struct wm8994 *control = wm8994->wm8994; in wm8958_dsp2_init()
907 wm8994->dsp_active = -1; in wm8958_dsp2_init()
930 SOC_ENUM_EXT("MBC Mode", wm8994->mbc_enum, in wm8958_dsp2_init()
935 wm8994->mbc_texts = kmalloc(sizeof(char *) in wm8958_dsp2_init()
937 if (!wm8994->mbc_texts) in wm8958_dsp2_init()
941 wm8994->mbc_texts[i] = pdata->mbc_cfgs[i].name; in wm8958_dsp2_init()
943 wm8994->mbc_enum.items = pdata->num_mbc_cfgs; in wm8958_dsp2_init()
944 wm8994->mbc_enum.texts = wm8994->mbc_texts; in wm8958_dsp2_init()
946 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, in wm8958_dsp2_init()
949 dev_err(wm8994->hubs.codec->dev, in wm8958_dsp2_init()
955 SOC_ENUM_EXT("VSS Mode", wm8994->vss_enum, in wm8958_dsp2_init()
960 wm8994->vss_texts = kmalloc(sizeof(char *) in wm8958_dsp2_init()
962 if (!wm8994->vss_texts) in wm8958_dsp2_init()
966 wm8994->vss_texts[i] = pdata->vss_cfgs[i].name; in wm8958_dsp2_init()
968 wm8994->vss_enum.items = pdata->num_vss_cfgs; in wm8958_dsp2_init()
969 wm8994->vss_enum.texts = wm8994->vss_texts; in wm8958_dsp2_init()
971 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, in wm8958_dsp2_init()
974 dev_err(wm8994->hubs.codec->dev, in wm8958_dsp2_init()
980 SOC_ENUM_EXT("VSS HPF Mode", wm8994->vss_hpf_enum, in wm8958_dsp2_init()
986 wm8994->vss_hpf_texts = kmalloc(sizeof(char *) in wm8958_dsp2_init()
988 if (!wm8994->vss_hpf_texts) in wm8958_dsp2_init()
992 wm8994->vss_hpf_texts[i] = pdata->vss_hpf_cfgs[i].name; in wm8958_dsp2_init()
994 wm8994->vss_hpf_enum.items = pdata->num_vss_hpf_cfgs; in wm8958_dsp2_init()
995 wm8994->vss_hpf_enum.texts = wm8994->vss_hpf_texts; in wm8958_dsp2_init()
997 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, in wm8958_dsp2_init()
1000 dev_err(wm8994->hubs.codec->dev, in wm8958_dsp2_init()
1007 SOC_ENUM_EXT("Enhanced EQ Mode", wm8994->enh_eq_enum, in wm8958_dsp2_init()
1013 wm8994->enh_eq_texts = kmalloc(sizeof(char *) in wm8958_dsp2_init()
1015 if (!wm8994->enh_eq_texts) in wm8958_dsp2_init()
1019 wm8994->enh_eq_texts[i] = pdata->enh_eq_cfgs[i].name; in wm8958_dsp2_init()
1021 wm8994->enh_eq_enum.items = pdata->num_enh_eq_cfgs; in wm8958_dsp2_init()
1022 wm8994->enh_eq_enum.texts = wm8994->enh_eq_texts; in wm8958_dsp2_init()
1024 ret = snd_soc_add_codec_controls(wm8994->hubs.codec, in wm8958_dsp2_init()
1027 dev_err(wm8994->hubs.codec->dev, in wm8958_dsp2_init()