Lines Matching defs:wm8994

23 #include <linux/mfd/wm8994/core.h>
24 #include <linux/mfd/wm8994/registers.h>
25 #include <linux/mfd/wm8994/pdata.h>
26 #include <linux/mfd/wm8994/gpio.h>
30 #include "wm8994.h"
44 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
53 if (wm8994->cur_fw == fw)
149 wm8994_bulk_write(wm8994->wm8994,
170 wm8994->cur_fw = fw;
190 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
191 struct wm8994 *control = wm8994->wm8994;
199 if (wm8994->mbc)
200 wm8958_dsp2_fw(component, "MBC", wm8994->mbc, false);
208 = &control->pdata.mbc_cfgs[wm8994->mbc_cfg];
234 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
235 struct wm8994 *control = wm8994->wm8994;
238 if (wm8994->mbc_vss)
239 wm8958_dsp2_fw(component, "MBC+VSS", wm8994->mbc_vss, false);
247 = &control->pdata.mbc_cfgs[wm8994->mbc_cfg];
256 = &control->pdata.vss_cfgs[wm8994->vss_cfg];
264 = &control->pdata.vss_hpf_cfgs[wm8994->vss_hpf_cfg];
276 if (wm8994->mbc_ena[path])
278 if (wm8994->hpf2_ena[path])
280 if (wm8994->hpf1_ena[path])
282 if (wm8994->vss_ena[path])
295 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
296 struct wm8994 *control = wm8994->wm8994;
299 wm8958_dsp2_fw(component, "ENH_EQ", wm8994->enh_eq, false);
307 = &control->pdata.enh_eq_cfgs[wm8994->enh_eq_cfg];
326 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
349 ena = wm8994->mbc_ena[path] || wm8994->vss_ena[path] ||
350 wm8994->hpf1_ena[path] || wm8994->hpf2_ena[path] ||
351 wm8994->enh_eq_ena[path];
358 path, wm8994->dsp_active, start, pwr_reg, reg);
378 if (wm8994->enh_eq_ena[path])
380 else if (wm8994->vss_ena[path] || wm8994->hpf1_ena[path] ||
381 wm8994->hpf2_ena[path])
383 else if (wm8994->mbc_ena[path])
386 wm8994->dsp_active = path;
391 if (!start && wm8994->dsp_active == path) {
405 wm8994->dsp_active = -1;
415 struct wm8994 *control = dev_get_drvdata(component->dev->parent);
438 static int wm8958_dsp2_busy(struct wm8994_priv *wm8994, int aif)
442 for (i = 0; i < ARRAY_SIZE(wm8994->mbc_ena); i++) {
445 if (wm8994->mbc_ena[i] || wm8994->vss_ena[i] ||
446 wm8994->hpf1_ena[i] || wm8994->hpf2_ena[i])
457 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
458 struct wm8994 *control = wm8994->wm8994;
470 wm8994->mbc_cfg = value;
479 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
481 ucontrol->value.enumerated.item[0] = wm8994->mbc_cfg;
501 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
503 ucontrol->value.integer.value[0] = wm8994->mbc_ena[mbc];
513 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
515 if (wm8994->mbc_ena[mbc] == ucontrol->value.integer.value[0])
521 if (wm8958_dsp2_busy(wm8994, mbc)) {
526 if (wm8994->enh_eq_ena[mbc])
529 wm8994->mbc_ena[mbc] = ucontrol->value.integer.value[0];
531 wm8958_dsp_apply(component, mbc, wm8994->mbc_ena[mbc]);
547 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
548 struct wm8994 *control = wm8994->wm8994;
560 wm8994->vss_cfg = value;
569 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
571 ucontrol->value.enumerated.item[0] = wm8994->vss_cfg;
580 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
581 struct wm8994 *control = wm8994->wm8994;
593 wm8994->vss_hpf_cfg = value;
602 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
604 ucontrol->value.enumerated.item[0] = wm8994->vss_hpf_cfg;
624 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
626 ucontrol->value.integer.value[0] = wm8994->vss_ena[vss];
636 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
638 if (wm8994->vss_ena[vss] == ucontrol->value.integer.value[0])
644 if (!wm8994->mbc_vss)
647 if (wm8958_dsp2_busy(wm8994, vss)) {
652 if (wm8994->enh_eq_ena[vss])
655 wm8994->vss_ena[vss] = ucontrol->value.integer.value[0];
657 wm8958_dsp_apply(component, vss, wm8994->vss_ena[vss]);
685 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
688 ucontrol->value.integer.value[0] = wm8994->hpf1_ena[hpf % 3];
690 ucontrol->value.integer.value[0] = wm8994->hpf2_ena[hpf % 3];
700 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
703 if (wm8994->hpf1_ena[hpf % 3] ==
707 if (wm8994->hpf2_ena[hpf % 3] ==
715 if (!wm8994->mbc_vss)
718 if (wm8958_dsp2_busy(wm8994, hpf % 3)) {
723 if (wm8994->enh_eq_ena[hpf % 3])
727 wm8994->hpf1_ena[hpf % 3] = ucontrol->value.integer.value[0];
729 wm8994->hpf2_ena[hpf % 3] = ucontrol->value.integer.value[0];
747 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
748 struct wm8994 *control = wm8994->wm8994;
760 wm8994->enh_eq_cfg = value;
769 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
771 ucontrol->value.enumerated.item[0] = wm8994->enh_eq_cfg;
791 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
793 ucontrol->value.integer.value[0] = wm8994->enh_eq_ena[eq];
803 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
805 if (wm8994->enh_eq_ena[eq] == ucontrol->value.integer.value[0])
811 if (!wm8994->enh_eq)
814 if (wm8958_dsp2_busy(wm8994, eq)) {
819 if (wm8994->mbc_ena[eq] || wm8994->vss_ena[eq] ||
820 wm8994->hpf1_ena[eq] || wm8994->hpf2_ena[eq])
823 wm8994->enh_eq_ena[eq] = ucontrol->value.integer.value[0];
864 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
867 mutex_lock(&wm8994->fw_lock);
868 wm8994->enh_eq = fw;
869 mutex_unlock(&wm8994->fw_lock);
876 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
879 mutex_lock(&wm8994->fw_lock);
880 wm8994->mbc_vss = fw;
881 mutex_unlock(&wm8994->fw_lock);
888 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
891 mutex_lock(&wm8994->fw_lock);
892 wm8994->mbc = fw;
893 mutex_unlock(&wm8994->fw_lock);
899 struct wm8994_priv *wm8994 = snd_soc_component_get_drvdata(component);
900 struct wm8994 *control = wm8994->wm8994;
904 wm8994->dsp_active = -1;
927 SOC_ENUM_EXT("MBC Mode", wm8994->mbc_enum,
932 wm8994->mbc_texts = kmalloc_array(pdata->num_mbc_cfgs,
935 if (!wm8994->mbc_texts)
939 wm8994->mbc_texts[i] = pdata->mbc_cfgs[i].name;
941 wm8994->mbc_enum.items = pdata->num_mbc_cfgs;
942 wm8994->mbc_enum.texts = wm8994->mbc_texts;
944 ret = snd_soc_add_component_controls(wm8994->hubs.component,
947 dev_err(wm8994->hubs.component->dev,
953 SOC_ENUM_EXT("VSS Mode", wm8994->vss_enum,
958 wm8994->vss_texts = kmalloc_array(pdata->num_vss_cfgs,
961 if (!wm8994->vss_texts)
965 wm8994->vss_texts[i] = pdata->vss_cfgs[i].name;
967 wm8994->vss_enum.items = pdata->num_vss_cfgs;
968 wm8994->vss_enum.texts = wm8994->vss_texts;
970 ret = snd_soc_add_component_controls(wm8994->hubs.component,
973 dev_err(wm8994->hubs.component->dev,
979 SOC_ENUM_EXT("VSS HPF Mode", wm8994->vss_hpf_enum,
985 wm8994->vss_hpf_texts = kmalloc_array(pdata->num_vss_hpf_cfgs,
988 if (!wm8994->vss_hpf_texts)
992 wm8994->vss_hpf_texts[i] = pdata->vss_hpf_cfgs[i].name;
994 wm8994->vss_hpf_enum.items = pdata->num_vss_hpf_cfgs;
995 wm8994->vss_hpf_enum.texts = wm8994->vss_hpf_texts;
997 ret = snd_soc_add_component_controls(wm8994->hubs.component,
1000 dev_err(wm8994->hubs.component->dev,
1007 SOC_ENUM_EXT("Enhanced EQ Mode", wm8994->enh_eq_enum,
1013 wm8994->enh_eq_texts = kmalloc_array(pdata->num_enh_eq_cfgs,
1016 if (!wm8994->enh_eq_texts)
1020 wm8994->enh_eq_texts[i] = pdata->enh_eq_cfgs[i].name;
1022 wm8994->enh_eq_enum.items = pdata->num_enh_eq_cfgs;
1023 wm8994->enh_eq_enum.texts = wm8994->enh_eq_texts;
1025 ret = snd_soc_add_component_controls(wm8994->hubs.component,
1028 dev_err(wm8994->hubs.component->dev,