Lines Matching +full:mic +full:- +full:int
1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * spitz.c -- SoC audio for Sharp SL-Cxx00 models Spitz, Borzoi and Akita
22 #include <asm/mach-types.h>
24 #include "pxa2xx-i2s.h"
34 /* audio clock in Hz - rounded from 12.235MHz */
37 static int spitz_jack_func;
38 static int spitz_spk_func;
53 /* enable and unmute hp jack, disable mic bias */ in spitz_ext_control()
55 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack"); in spitz_ext_control()
62 /* enable mic jack and bias, mute hp */ in spitz_ext_control()
66 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack"); in spitz_ext_control()
71 /* enable line jack, disable mic bias and mute hp */ in spitz_ext_control()
74 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack"); in spitz_ext_control()
80 /* enable and unmute headset jack enable mic bias, mute L hp */ in spitz_ext_control()
82 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack"); in spitz_ext_control()
93 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack"); in spitz_ext_control()
105 static int spitz_startup(struct snd_pcm_substream *substream) in spitz_startup()
110 spitz_ext_control(&rtd->card->dapm); in spitz_startup()
115 static int spitz_hw_params(struct snd_pcm_substream *substream, in spitz_hw_params()
121 unsigned int clk = 0; in spitz_hw_params()
122 int ret = 0; in spitz_hw_params()
158 static int spitz_get_jack(struct snd_kcontrol *kcontrol, in spitz_get_jack()
161 ucontrol->value.enumerated.item[0] = spitz_jack_func; in spitz_get_jack()
165 static int spitz_set_jack(struct snd_kcontrol *kcontrol, in spitz_set_jack()
170 if (spitz_jack_func == ucontrol->value.enumerated.item[0]) in spitz_set_jack()
173 spitz_jack_func = ucontrol->value.enumerated.item[0]; in spitz_set_jack()
174 spitz_ext_control(&card->dapm); in spitz_set_jack()
178 static int spitz_get_spk(struct snd_kcontrol *kcontrol, in spitz_get_spk()
181 ucontrol->value.enumerated.item[0] = spitz_spk_func; in spitz_get_spk()
185 static int spitz_set_spk(struct snd_kcontrol *kcontrol, in spitz_set_spk()
190 if (spitz_spk_func == ucontrol->value.enumerated.item[0]) in spitz_set_spk()
193 spitz_spk_func = ucontrol->value.enumerated.item[0]; in spitz_set_spk()
194 spitz_ext_control(&card->dapm); in spitz_set_spk()
198 static int spitz_mic_bias(struct snd_soc_dapm_widget *w, in spitz_mic_bias()
199 struct snd_kcontrol *k, int event) in spitz_mic_bias()
208 SND_SOC_DAPM_MIC("Mic Jack", spitz_mic_bias),
212 /* headset is a mic and mono headphone */
230 /* mic is connected to input 1 - with bias */
231 {"LINPUT1", NULL, "Mic Bias"},
232 {"Mic Bias", NULL, "Mic Jack"},
234 /* line is connected to input 1 - no bias */
238 static const char * const jack_function[] = {"Headphone", "Mic", "Line",
253 /* spitz digital audio interface glue - connects codec <--> CPU */
255 DAILINK_COMP_ARRAY(COMP_CPU("pxa2xx-i2s")),
256 DAILINK_COMP_ARRAY(COMP_CODEC("wm8750.0-001b", "wm8750-hifi")),
257 DAILINK_COMP_ARRAY(COMP_PLATFORM("pxa-pcm-audio")));
284 static int spitz_probe(struct platform_device *pdev) in spitz_probe()
287 int ret; in spitz_probe()
289 gpiod_mic = devm_gpiod_get(&pdev->dev, "mic", GPIOD_OUT_LOW); in spitz_probe()
292 gpiod_mute_l = devm_gpiod_get(&pdev->dev, "mute-l", GPIOD_OUT_LOW); in spitz_probe()
295 gpiod_mute_r = devm_gpiod_get(&pdev->dev, "mute-r", GPIOD_OUT_LOW); in spitz_probe()
299 card->dev = &pdev->dev; in spitz_probe()
301 ret = devm_snd_soc_register_card(&pdev->dev, card); in spitz_probe()
303 dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", in spitz_probe()
311 .name = "spitz-audio",
322 MODULE_ALIAS("platform:spitz-audio");