Lines Matching +full:out +full:- +full:mono

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * wm8971.c -- WM8971 ALSA SoC Audio driver
99 static const char *wm8971_mono_mux[] = {"Stereo", "Mono (Left)",
100 "Mono (Right)", "Digital Mono"};
138 SOC_SINGLE("Mono Playback ZC Switch", WM8971_MOUTV, 7, 1, 0),
146 SOC_DOUBLE_R("Bypass Mono Playback Volume", WM8971_MOUTM1,
159 SOC_ENUM("Treble Cut-off", wm8971_enum[2]),
180 SOC_ENUM("Playback De-emphasis", wm8971_enum[5]),
207 /* Mono Mixer */
231 /* Mono ADC Mux */
242 SND_SOC_DAPM_MIXER("Mono Mixer", WM8971_PWR2, 2, 0,
246 SND_SOC_DAPM_PGA("Right Out 2", WM8971_PWR2, 3, 0, NULL, 0),
247 SND_SOC_DAPM_PGA("Left Out 2", WM8971_PWR2, 4, 0, NULL, 0),
248 SND_SOC_DAPM_PGA("Right Out 1", WM8971_PWR2, 5, 0, NULL, 0),
249 SND_SOC_DAPM_PGA("Left Out 1", WM8971_PWR2, 6, 0, NULL, 0),
252 SND_SOC_DAPM_PGA("Mono Out 1", WM8971_PWR2, 2, 0, NULL, 0),
276 SND_SOC_DAPM_OUTPUT("MONO"),
296 /* left out 1 */
297 {"Left Out 1", NULL, "Left Mixer"},
298 {"LOUT1", NULL, "Left Out 1"},
300 /* left out 2 */
301 {"Left Out 2", NULL, "Left Mixer"},
302 {"LOUT2", NULL, "Left Out 2"},
304 /* right out 1 */
305 {"Right Out 1", NULL, "Right Mixer"},
306 {"ROUT1", NULL, "Right Out 1"},
308 /* right out 2 */
309 {"Right Out 2", NULL, "Right Mixer"},
310 {"ROUT2", NULL, "Right Out 2"},
312 /* mono mixer */
313 {"Mono Mixer", "Left Playback Switch", "Left DAC"},
314 {"Mono Mixer", "Left Bypass Switch", "Left Line Mux"},
315 {"Mono Mixer", "Right Playback Switch", "Right DAC"},
316 {"Mono Mixer", "Right Bypass Switch", "Right Line Mux"},
318 /* mono out */
319 {"Mono Out", NULL, "Mono Mixer"},
320 {"MONO1", NULL, "Mono Out"},
347 {"Left ADC Mux", "Mono (Left)", "Left PGA Mux"},
348 {"Left ADC Mux", "Digital Mono", "Left PGA Mux"},
352 {"Right ADC Mux", "Mono (Right)", "Right PGA Mux"},
353 {"Right ADC Mux", "Digital Mono", "Right PGA Mux"},
426 return -EINVAL; in get_coeff()
432 struct snd_soc_component *component = codec_dai->component; in wm8971_set_dai_sysclk()
441 wm8971->sysclk = freq; in wm8971_set_dai_sysclk()
444 return -EINVAL; in wm8971_set_dai_sysclk()
450 struct snd_soc_component *component = codec_dai->component; in wm8971_set_dai_fmt()
461 return -EINVAL; in wm8971_set_dai_fmt()
481 return -EINVAL; in wm8971_set_dai_fmt()
498 return -EINVAL; in wm8971_set_dai_fmt()
509 struct snd_soc_component *component = dai->component; in wm8971_pcm_hw_params()
513 int coeff = get_coeff(wm8971->sysclk, params_rate(params)); in wm8971_pcm_hw_params()
541 struct snd_soc_component *component = dai->component; in wm8971_mute()
557 regmap_update_bits(wm8971->regmap, WM8971_PWR1, 0x0180, 0x0100); in wm8971_charge_work()
573 flush_delayed_work(&wm8971->charge_work); in wm8971_set_bias_level()
578 /* charge output caps - set vmid to 5k for quick power up */ in wm8971_set_bias_level()
581 &wm8971->charge_work, msecs_to_jiffies(1000)); in wm8971_set_bias_level()
589 cancel_delayed_work_sync(&wm8971->charge_work); in wm8971_set_bias_level()
612 .name = "wm8971-hifi",
632 INIT_DELAYED_WORK(&wm8971->charge_work, wm8971_charge_work); in wm8971_probe()
678 wm8971 = devm_kzalloc(&i2c->dev, sizeof(struct wm8971_priv), in wm8971_i2c_probe()
681 return -ENOMEM; in wm8971_i2c_probe()
683 wm8971->regmap = devm_regmap_init_i2c(i2c, &wm8971_regmap); in wm8971_i2c_probe()
684 if (IS_ERR(wm8971->regmap)) in wm8971_i2c_probe()
685 return PTR_ERR(wm8971->regmap); in wm8971_i2c_probe()
689 return devm_snd_soc_register_component(&i2c->dev, in wm8971_i2c_probe()