Lines Matching +full:playback +full:- +full:only
1 // SPDX-License-Identifier: GPL-2.0-only
3 * wm9705.c -- ALSA Soc WM9705 codec support
76 SOC_DOUBLE("Master Playback Volume", AC97_MASTER, 8, 0, 31, 1),
77 SOC_SINGLE("Master Playback Switch", AC97_MASTER, 15, 1, 1),
78 SOC_DOUBLE("Headphone Playback Volume", AC97_HEADPHONE, 8, 0, 31, 1),
79 SOC_SINGLE("Headphone Playback Switch", AC97_HEADPHONE, 15, 1, 1),
80 SOC_DOUBLE("PCM Playback Volume", AC97_PCM, 8, 0, 31, 1),
81 SOC_SINGLE("PCM Playback Switch", AC97_PCM, 15, 1, 1),
82 SOC_SINGLE("Mono Playback Volume", AC97_MASTER_MONO, 0, 31, 1),
83 SOC_SINGLE("Mono Playback Switch", AC97_MASTER_MONO, 15, 1, 1),
84 SOC_SINGLE("PCBeep Playback Volume", AC97_PC_BEEP, 1, 15, 1),
85 SOC_SINGLE("Phone Playback Volume", AC97_PHONE, 0, 31, 1),
86 SOC_DOUBLE("Line Playback Volume", AC97_LINE, 8, 0, 31, 1),
87 SOC_DOUBLE("CD Playback Volume", AC97_CD, 8, 0, 31, 1),
88 SOC_SINGLE("Mic Playback Volume", AC97_MIC, 0, 31, 1),
107 SOC_DAPM_SINGLE("PCBeep Playback Switch", AC97_PC_BEEP, 15, 1, 1),
108 SOC_DAPM_SINGLE("CD Playback Switch", AC97_CD, 15, 1, 1),
109 SOC_DAPM_SINGLE("Mic Playback Switch", AC97_MIC, 15, 1, 1),
110 SOC_DAPM_SINGLE("Phone Playback Switch", AC97_PHONE, 15, 1, 1),
111 SOC_DAPM_SINGLE("Line Playback Switch", AC97_LINE, 15, 1, 1),
132 SND_SOC_DAPM_DAC("Left DAC", "Left HiFi Playback",
134 SND_SOC_DAPM_DAC("Right DAC", "Right HiFi Playback",
175 {"HP Mixer", "PCBeep Playback Switch", "PCBEEP PGA"},
176 {"HP Mixer", "CD Playback Switch", "CD PGA"},
177 {"HP Mixer", "Mic Playback Switch", "Mic PGA"},
178 {"HP Mixer", "Phone Playback Switch", "Phone PGA"},
179 {"HP Mixer", "Line Playback Switch", "Line PGA"},
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",
259 .playback = {
260 .stream_name = "HiFi Playback",
276 .name = "wm9705-aux",
277 .playback = {
278 .stream_name = "Aux Playback",
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",