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

1 // SPDX-License-Identifier: GPL-2.0-only
3 * wm9705.c -- ALSA Soc WM9705 codec support
82 SOC_SINGLE("Mono Playback Volume", AC97_MASTER_MONO, 0, 31, 1),
83 SOC_SINGLE("Mono Playback Switch", AC97_MASTER_MONO, 15, 1, 1),
96 "Line", "Stereo Mix", "Mono Mix", "Phone"};
139 SND_SOC_DAPM_MIXER("Mono Mixer", SND_SOC_NOPM, 0, 0, NULL, 0),
145 SND_SOC_DAPM_PGA("Line out PGA", SND_SOC_NOPM, 0, 0, NULL, 0),
146 SND_SOC_DAPM_PGA("Mono PGA", SND_SOC_NOPM, 0, 0, NULL, 0),
183 /* mono mixer */
184 {"Mono Mixer", NULL, "HP Mixer"},
190 {"Line out PGA", NULL, "HP Mixer"},
191 {"LOUT", NULL, "Line out PGA"},
192 {"ROUT", NULL, "Line out PGA"},
193 {"Mono PGA", NULL, "Mono Mixer"},
194 {"MONOOUT", NULL, "Mono PGA"},
212 {"Left Capture Source", "Mono Mix", "HP Mixer"},
220 {"Right Capture Source", "Mono Mix", "HP Mixer"},
234 struct snd_soc_component *component = dai->component; in ac97_prepare()
239 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in ac97_prepare()
244 return snd_soc_component_write(component, reg, substream->runtime->rate); in ac97_prepare()
258 .name = "wm9705-hifi",
276 .name = "wm9705-aux",
290 regcache_cache_bypass(component->regmap, true); in wm9705_soc_suspend()
292 regcache_cache_bypass(component->regmap, false); in wm9705_soc_suspend()
302 ret = snd_ac97_reset(wm9705->ac97, true, WM9705_VENDOR_ID, in wm9705_soc_resume()
321 if (wm9705->mfd_pdata) { in wm9705_soc_probe()
322 wm9705->ac97 = wm9705->mfd_pdata->ac97; in wm9705_soc_probe()
323 regmap = wm9705->mfd_pdata->regmap; in wm9705_soc_probe()
325 wm9705->ac97 = snd_soc_new_ac97_component(component, WM9705_VENDOR_ID, in wm9705_soc_probe()
327 if (IS_ERR(wm9705->ac97)) { in wm9705_soc_probe()
328 dev_err(component->dev, "Failed to register AC97 codec\n"); in wm9705_soc_probe()
329 return PTR_ERR(wm9705->ac97); in wm9705_soc_probe()
332 regmap = regmap_init_ac97(wm9705->ac97, &wm9705_regmap_config); in wm9705_soc_probe()
334 snd_soc_free_ac97_component(wm9705->ac97); in wm9705_soc_probe()
338 return -ENXIO; in wm9705_soc_probe()
341 snd_soc_component_set_drvdata(component, wm9705->ac97); in wm9705_soc_probe()
351 if (IS_ENABLED(CONFIG_SND_SOC_AC97_BUS) && !wm9705->mfd_pdata) { in wm9705_soc_remove()
353 snd_soc_free_ac97_component(wm9705->ac97); in wm9705_soc_remove()
377 wm9705 = devm_kzalloc(&pdev->dev, sizeof(*wm9705), GFP_KERNEL); in wm9705_probe()
379 return -ENOMEM; in wm9705_probe()
381 wm9705->mfd_pdata = dev_get_platdata(&pdev->dev); in wm9705_probe()
384 return devm_snd_soc_register_component(&pdev->dev, in wm9705_probe()
390 .name = "wm9705-codec",