Lines Matching +full:boost +full:- +full:bypass
1 // SPDX-License-Identifier: GPL-2.0-only
3 * wm8988.c -- WM8988 ALSA SoC audio driver
125 static const char *bass_boost_txt[] = {"Linear Control", "Adaptive Boost"};
167 static const DECLARE_TLV_DB_SCALE(pga_tlv, -1725, 75, 0);
168 static const DECLARE_TLV_DB_SCALE(adc_tlv, -9750, 50, 1);
169 static const DECLARE_TLV_DB_SCALE(dac_tlv, -12750, 50, 1);
170 static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1);
171 static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0);
175 SOC_ENUM("Bass Boost", bass_boost),
180 SOC_ENUM("Treble Cut-off", treble),
184 SOC_ENUM("3D Lower Cut-off", stereo_3d_lc),
185 SOC_ENUM("3D Upper Cut-off", stereo_3d_uc),
208 SOC_ENUM("Playback De-emphasis", deemph),
216 SOC_SINGLE_TLV("Left Mixer Left Bypass Volume", WM8988_LOUTM1, 4, 7, 1,
218 SOC_SINGLE_TLV("Left Mixer Right Bypass Volume", WM8988_LOUTM2, 4, 7, 1,
220 SOC_SINGLE_TLV("Right Mixer Left Bypass Volume", WM8988_ROUTM1, 4, 7, 1,
222 SOC_SINGLE_TLV("Right Mixer Right Bypass Volume", WM8988_ROUTM2, 4, 7, 1,
244 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); in wm8988_lrc_control()
281 SOC_DAPM_SINGLE("Left Bypass Switch", WM8988_LOUTM1, 7, 1, 0),
283 SOC_DAPM_SINGLE("Right Bypass Switch", WM8988_LOUTM2, 7, 1, 0),
289 SOC_DAPM_SINGLE("Left Bypass Switch", WM8988_ROUTM1, 7, 1, 0),
291 SOC_DAPM_SINGLE("Right Bypass Switch", WM8988_ROUTM2, 7, 1, 0),
429 { "Left Mixer", "Left Bypass Switch", "Left Line Mux" },
431 { "Left Mixer", "Right Bypass Switch", "Right Line Mux" },
434 { "Right Mixer", "Left Bypass Switch", "Left Line Mux" },
436 { "Right Mixer", "Right Bypass Switch", "Right Line Mux" },
516 return -EINVAL; in get_coeff()
555 struct snd_soc_component *component = codec_dai->component; in wm8988_set_dai_sysclk()
563 wm8988->sysclk_constraints = &constraints_112896; in wm8988_set_dai_sysclk()
564 wm8988->sysclk = freq; in wm8988_set_dai_sysclk()
571 wm8988->sysclk_constraints = &constraints_12288; in wm8988_set_dai_sysclk()
572 wm8988->sysclk = freq; in wm8988_set_dai_sysclk()
577 wm8988->sysclk_constraints = &constraints_12; in wm8988_set_dai_sysclk()
578 wm8988->sysclk = freq; in wm8988_set_dai_sysclk()
581 return -EINVAL; in wm8988_set_dai_sysclk()
587 struct snd_soc_component *component = codec_dai->component; in wm8988_set_dai_fmt()
598 return -EINVAL; in wm8988_set_dai_fmt()
618 return -EINVAL; in wm8988_set_dai_fmt()
635 return -EINVAL; in wm8988_set_dai_fmt()
645 struct snd_soc_component *component = dai->component; in wm8988_pcm_startup()
649 * MCLK supplied to the CODEC - enforce this. in wm8988_pcm_startup()
651 if (!wm8988->sysclk) { in wm8988_pcm_startup()
652 dev_err(component->dev, in wm8988_pcm_startup()
654 return -EINVAL; in wm8988_pcm_startup()
657 snd_pcm_hw_constraint_list(substream->runtime, 0, in wm8988_pcm_startup()
659 wm8988->sysclk_constraints); in wm8988_pcm_startup()
668 struct snd_soc_component *component = dai->component; in wm8988_pcm_hw_params()
674 coeff = get_coeff(wm8988->sysclk, params_rate(params)); in wm8988_pcm_hw_params()
676 coeff = get_coeff(wm8988->sysclk / 2, params_rate(params)); in wm8988_pcm_hw_params()
680 dev_err(component->dev, in wm8988_pcm_hw_params()
682 params_rate(params), wm8988->sysclk); in wm8988_pcm_hw_params()
712 struct snd_soc_component *component = dai->component; in wm8988_mute()
739 regcache_sync(wm8988->regmap); in wm8988_set_bias_level()
774 .name = "wm8988-hifi",
799 dev_err(component->dev, "Failed to issue reset\n"); in wm8988_probe()
847 wm8988 = devm_kzalloc(&spi->dev, sizeof(struct wm8988_priv), in wm8988_spi_probe()
850 return -ENOMEM; in wm8988_spi_probe()
852 wm8988->regmap = devm_regmap_init_spi(spi, &wm8988_regmap); in wm8988_spi_probe()
853 if (IS_ERR(wm8988->regmap)) { in wm8988_spi_probe()
854 ret = PTR_ERR(wm8988->regmap); in wm8988_spi_probe()
855 dev_err(&spi->dev, "Failed to init regmap: %d\n", ret); in wm8988_spi_probe()
861 ret = devm_snd_soc_register_component(&spi->dev, in wm8988_spi_probe()
881 wm8988 = devm_kzalloc(&i2c->dev, sizeof(struct wm8988_priv), in wm8988_i2c_probe()
884 return -ENOMEM; in wm8988_i2c_probe()
888 wm8988->regmap = devm_regmap_init_i2c(i2c, &wm8988_regmap); in wm8988_i2c_probe()
889 if (IS_ERR(wm8988->regmap)) { in wm8988_i2c_probe()
890 ret = PTR_ERR(wm8988->regmap); in wm8988_i2c_probe()
891 dev_err(&i2c->dev, "Failed to init regmap: %d\n", ret); in wm8988_i2c_probe()
895 ret = devm_snd_soc_register_component(&i2c->dev, in wm8988_i2c_probe()