• Home
  • Raw
  • Download

Lines Matching +full:boost +full:- +full:bypass

2  * wm8400.c  --  WM8400 ALSA Soc Audio driver
4 * Copyright 2008-11 Wolfson Microelectronics PLC.
23 #include <linux/mfd/wm8400-audio.h>
24 #include <linux/mfd/wm8400-private.h>
72 wm8400_reset_codec_reg_cache(wm8400->wm8400); in wm8400_component_reset()
75 static const DECLARE_TLV_DB_SCALE(rec_mix_tlv, -1500, 600, 0);
77 static const DECLARE_TLV_DB_SCALE(in_pga_tlv, -1650, 3000, 0);
79 static const DECLARE_TLV_DB_SCALE(out_mix_tlv, -2100, 0, 0);
81 static const DECLARE_TLV_DB_SCALE(out_pga_tlv, -7300, 600, 0);
83 static const DECLARE_TLV_DB_SCALE(out_omix_tlv, -600, 0, 0);
85 static const DECLARE_TLV_DB_SCALE(out_dac_tlv, -7163, 0, 0);
87 static const DECLARE_TLV_DB_SCALE(in_adc_tlv, -7163, 1763, 0);
89 static const DECLARE_TLV_DB_SCALE(out_sidetone_tlv, -3600, 0, 0);
96 (struct soc_mixer_control *)kcontrol->private_value; in wm8400_outpga_put_volsw_vu()
97 int reg = mc->reg; in wm8400_outpga_put_volsw_vu()
129 {"Hi-fi mode", "Voice mode 1", "Voice mode 2", "Voice mode 3"};
138 SOC_SINGLE("LIN12 PGA Boost", WM8400_INPUT_MIXER3, WM8400_L12MNBST_SHIFT,
140 SOC_SINGLE("LIN34 PGA Boost", WM8400_INPUT_MIXER3, WM8400_L34MNBST_SHIFT,
143 SOC_SINGLE("RIN12 PGA Boost", WM8400_INPUT_MIXER3, WM8400_R12MNBST_SHIFT,
145 SOC_SINGLE("RIN34 PGA Boost", WM8400_INPUT_MIXER3, WM8400_R34MNBST_SHIFT,
149 SOC_SINGLE_TLV("LOMIX LIN3 Bypass Volume", WM8400_OUTPUT_MIXER3,
151 SOC_SINGLE_TLV("LOMIX RIN12 PGA Bypass Volume", WM8400_OUTPUT_MIXER3,
153 SOC_SINGLE_TLV("LOMIX LIN12 PGA Bypass Volume", WM8400_OUTPUT_MIXER3,
155 SOC_SINGLE_TLV("LOMIX RIN3 Bypass Volume", WM8400_OUTPUT_MIXER5,
157 SOC_SINGLE_TLV("LOMIX AINRMUX Bypass Volume", WM8400_OUTPUT_MIXER5,
159 SOC_SINGLE_TLV("LOMIX AINLMUX Bypass Volume", WM8400_OUTPUT_MIXER5,
163 SOC_SINGLE_TLV("ROMIX RIN3 Bypass Volume", WM8400_OUTPUT_MIXER4,
165 SOC_SINGLE_TLV("ROMIX LIN12 PGA Bypass Volume", WM8400_OUTPUT_MIXER4,
167 SOC_SINGLE_TLV("ROMIX RIN12 PGA Bypass Volume", WM8400_OUTPUT_MIXER4,
169 SOC_SINGLE_TLV("ROMIX LIN3 Bypass Volume", WM8400_OUTPUT_MIXER6,
171 SOC_SINGLE_TLV("ROMIX AINLMUX Bypass Volume", WM8400_OUTPUT_MIXER6,
173 SOC_SINGLE_TLV("ROMIX AINRMUX Bypass Volume", WM8400_OUTPUT_MIXER6,
226 SOC_SINGLE("Speaker DC Boost Volume", WM8400_CLASSD3,
228 SOC_SINGLE("Speaker AC Boost Volume", WM8400_CLASSD3,
327 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in outmixer_event()
329 (struct soc_mixer_control *)kcontrol->private_value; in outmixer_event()
330 u32 reg_shift = mc->shift; in outmixer_event()
340 ret = -1; in outmixer_event()
348 ret = -1; in outmixer_event()
356 ret = -1; in outmixer_event()
364 ret = -1; in outmixer_event()
373 static const DECLARE_TLV_DB_SCALE(in_mix_tlv, -1200, 600, 0);
457 SOC_DAPM_SINGLE("LOMIX Right ADC Bypass Switch", WM8400_OUTPUT_MIXER1,
459 SOC_DAPM_SINGLE("LOMIX Left ADC Bypass Switch", WM8400_OUTPUT_MIXER1,
461 SOC_DAPM_SINGLE("LOMIX RIN3 Bypass Switch", WM8400_OUTPUT_MIXER1,
463 SOC_DAPM_SINGLE("LOMIX LIN3 Bypass Switch", WM8400_OUTPUT_MIXER1,
465 SOC_DAPM_SINGLE("LOMIX RIN12 PGA Bypass Switch", WM8400_OUTPUT_MIXER1,
467 SOC_DAPM_SINGLE("LOMIX LIN12 PGA Bypass Switch", WM8400_OUTPUT_MIXER1,
475 SOC_DAPM_SINGLE("ROMIX Left ADC Bypass Switch", WM8400_OUTPUT_MIXER2,
477 SOC_DAPM_SINGLE("ROMIX Right ADC Bypass Switch", WM8400_OUTPUT_MIXER2,
479 SOC_DAPM_SINGLE("ROMIX LIN3 Bypass Switch", WM8400_OUTPUT_MIXER2,
481 SOC_DAPM_SINGLE("ROMIX RIN3 Bypass Switch", WM8400_OUTPUT_MIXER2,
483 SOC_DAPM_SINGLE("ROMIX LIN12 PGA Bypass Switch", WM8400_OUTPUT_MIXER2,
485 SOC_DAPM_SINGLE("ROMIX RIN12 PGA Bypass Switch", WM8400_OUTPUT_MIXER2,
503 SOC_DAPM_SINGLE("LOPMIX Right Mic Bypass Switch", WM8400_LINE_MIXER1,
505 SOC_DAPM_SINGLE("LOPMIX Left Mic Bypass Switch", WM8400_LINE_MIXER1,
523 SOC_DAPM_SINGLE("ROPMIX Left Mic Bypass Switch", WM8400_LINE_MIXER2,
525 SOC_DAPM_SINGLE("ROPMIX Right Mic Bypass Switch", WM8400_LINE_MIXER2,
533 SOC_DAPM_SINGLE("OUT3MIX LIN4/RXP Bypass Switch", WM8400_OUT3_4_MIXER,
543 SOC_DAPM_SINGLE("OUT4MIX RIN4/RXP Bypass Switch", WM8400_OUT3_4_MIXER,
549 SOC_DAPM_SINGLE("SPKMIX LIN2 Bypass Switch", WM8400_SPEAKER_MIXER,
551 SOC_DAPM_SINGLE("SPKMIX LADC Bypass Switch", WM8400_SPEAKER_MIXER,
561 SOC_DAPM_SINGLE("SPKMIX RADC Bypass Switch", WM8400_SPEAKER_MIXER,
563 SOC_DAPM_SINGLE("SPKMIX RIN2 Bypass Switch", WM8400_SPEAKER_MIXER,
772 {"LOMIX", "LOMIX RIN3 Bypass Switch", "RIN3"},
773 {"LOMIX", "LOMIX LIN3 Bypass Switch", "LIN3"},
774 {"LOMIX", "LOMIX LIN12 PGA Bypass Switch", "LIN12 PGA"},
775 {"LOMIX", "LOMIX RIN12 PGA Bypass Switch", "RIN12 PGA"},
776 {"LOMIX", "LOMIX Right ADC Bypass Switch", "AIRNMUX"},
777 {"LOMIX", "LOMIX Left ADC Bypass Switch", "AILNMUX"},
781 {"ROMIX", "ROMIX RIN3 Bypass Switch", "RIN3"},
782 {"ROMIX", "ROMIX LIN3 Bypass Switch", "LIN3"},
783 {"ROMIX", "ROMIX LIN12 PGA Bypass Switch", "LIN12 PGA"},
784 {"ROMIX", "ROMIX RIN12 PGA Bypass Switch", "RIN12 PGA"},
785 {"ROMIX", "ROMIX Right ADC Bypass Switch", "AIRNMUX"},
786 {"ROMIX", "ROMIX Left ADC Bypass Switch", "AILNMUX"},
790 {"SPKMIX", "SPKMIX LIN2 Bypass Switch", "LIN2"},
791 {"SPKMIX", "SPKMIX RIN2 Bypass Switch", "RIN2"},
792 {"SPKMIX", "SPKMIX LADC Bypass Switch", "AILNMUX"},
793 {"SPKMIX", "SPKMIX RADC Bypass Switch", "AIRNMUX"},
805 {"LOPMIX", "LOPMIX Right Mic Bypass Switch", "RIN12 PGA"},
806 {"LOPMIX", "LOPMIX Left Mic Bypass Switch", "LIN12 PGA"},
810 {"OUT3MIX", "OUT3MIX LIN4/RXP Bypass Switch", "LIN4/RXN"},
815 {"OUT4MIX", "OUT4MIX RIN4/RXP Bypass Switch", "RIN4/RXP"},
823 {"ROPMIX", "ROPMIX Left Mic Bypass Switch", "LIN12 PGA"},
824 {"ROPMIX", "ROPMIX Right Mic Bypass Switch", "RIN12 PGA"},
852 struct snd_soc_component *component = codec_dai->component; in wm8400_set_dai_sysclk()
855 wm8400->sysclk = freq; in wm8400_set_dai_sysclk()
875 factors->outdiv = 2; in fll_factors()
876 while (Fout * factors->outdiv < 90000000 || in fll_factors()
877 Fout * factors->outdiv > 100000000) { in fll_factors()
878 factors->outdiv *= 2; in fll_factors()
879 if (factors->outdiv > 32) { in fll_factors()
880 dev_err(wm8400->wm8400->dev, in fll_factors()
883 return -EINVAL; in fll_factors()
886 target = Fout * factors->outdiv; in fll_factors()
887 factors->outdiv = factors->outdiv >> 2; in fll_factors()
890 factors->freq_ref = 1; in fll_factors()
892 factors->freq_ref = 0; in fll_factors()
895 factors->fratio = 9; in fll_factors()
897 factors->fratio = 0; in fll_factors()
902 factors->fratio--; in fll_factors()
904 factors->fratio++; in fll_factors()
906 if (factors->fratio < 1 || factors->fratio > 8) { in fll_factors()
907 dev_err(wm8400->wm8400->dev, in fll_factors()
909 return -EINVAL; in fll_factors()
912 factors->n = target / (Fref * factors->fratio); in fll_factors()
913 Nmod = target % (Fref * factors->fratio); in fll_factors()
916 /* Calculate fractional part - scale up so we can round. */ in fll_factors()
919 do_div(Kpart, (Fref * factors->fratio)); in fll_factors()
927 factors->k = K / 10; in fll_factors()
929 dev_dbg(wm8400->wm8400->dev, in fll_factors()
932 factors->n, factors->k, factors->fratio, factors->outdiv); in fll_factors()
941 struct snd_soc_component *component = codec_dai->component; in wm8400_set_dai_pll()
947 if (freq_in == wm8400->fll_in && freq_out == wm8400->fll_out) in wm8400_set_dai_pll()
955 /* Bodge GCC 4.4.0 uninitialised variable warning - it in wm8400_set_dai_pll()
961 wm8400->fll_out = freq_out; in wm8400_set_dai_pll()
962 wm8400->fll_in = freq_in; in wm8400_set_dai_pll()
998 struct snd_soc_component *component = codec_dai->component; in wm8400_set_dai_fmt()
1013 return -EINVAL; in wm8400_set_dai_fmt()
1040 return -EINVAL; in wm8400_set_dai_fmt()
1051 struct snd_soc_component *component = codec_dai->component; in wm8400_set_dai_clkdiv()
1076 return -EINVAL; in wm8400_set_dai_clkdiv()
1089 struct snd_soc_component *component = dai->component; in wm8400_hw_params()
1114 struct snd_soc_component *component = dai->component; in wm8400_mute()
1149 dev_err(wm8400->wm8400->dev, in wm8400_set_bias_level()
1258 .name = "wm8400-hifi",
1278 struct wm8400 *wm8400 = dev_get_platdata(component->dev); in wm8400_component_probe()
1283 priv = devm_kzalloc(component->dev, sizeof(struct wm8400_priv), in wm8400_component_probe()
1286 return -ENOMEM; in wm8400_component_probe()
1288 snd_soc_component_init_regmap(component, wm8400->regmap); in wm8400_component_probe()
1290 priv->wm8400 = wm8400; in wm8400_component_probe()
1292 ret = devm_regulator_bulk_get(wm8400->dev, in wm8400_component_probe()
1295 dev_err(component->dev, "Failed to get regulators: %d\n", ret); in wm8400_component_probe()
1346 return devm_snd_soc_register_component(&pdev->dev, in wm8400_probe()
1353 .name = "wm8400-codec",
1363 MODULE_ALIAS("platform:wm8400-codec");