Lines Matching +full:headset +full:- +full:codec
1 // SPDX-License-Identifier: GPL-2.0-only
3 // Copyright(c) 2021-2022 Intel Corporation
15 #include <sound/soc-acpi.h>
16 #include <sound/soc-dapm.h>
17 #include <uapi/linux/input-event-codes.h>
21 #define DA7219_DAI_NAME "da7219-hifi"
25 SOC_DAPM_PIN_SWITCH("Headset Mic"),
32 struct snd_soc_dapm_context *dapm = w->dapm;
33 struct snd_soc_card *card = dapm->card;
39 dev_err(card->dev, "Codec dai not found. Unable to set/unset codec pll\n");
40 return -EIO;
46 dev_err(card->dev, "failed to stop PLL: %d\n", ret);
51 dev_err(card->dev, "failed to start PLL: %d\n", ret);
59 SND_SOC_DAPM_MIC("Headset Mic", NULL),
66 /* HP jack connectors - unknown if we have jack detection */
70 {"MIC", NULL, "Headset Mic"},
73 { "Headset Mic", NULL, "Platform Clock" },
83 .pin = "Headset Mic",
95 struct snd_soc_component *component = codec_dai->component;
96 struct snd_soc_card *card = runtime->card;
111 dev_err(card->dev, "can't set codec sysclk configuration\n");
116 pins = devm_kmemdup_array(card->dev, card_headset_pins, num_pins,
119 return -ENOMEM;
122 * Headset buttons map to the google Reference headset.
125 ret = snd_soc_card_jack_new_pins(card, "Headset Jack",
131 dev_err(card->dev, "Headset Jack creation failed: %d\n", ret);
135 snd_jack_set_key(jack->jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
136 snd_jack_set_key(jack->jack, SND_JACK_BTN_1, KEY_VOLUMEUP);
137 snd_jack_set_key(jack->jack, SND_JACK_BTN_2, KEY_VOLUMEDOWN);
138 snd_jack_set_key(jack->jack, SND_JACK_BTN_3, KEY_VOICECOMMAND);
145 snd_soc_component_set_jack(snd_soc_rtd_to_codec(rtd, 0)->component, NULL, NULL);
159 rate->min = rate->max = 48000;
160 channels->min = channels->max = 2;
177 return -ENOMEM;
179 dl->name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-Codec", ssp_port);
180 dl->name = devm_kasprintf(dev, GFP_KERNEL,
181 AVS_STRING_FMT("SSP", "-Codec", ssp_port, tdm_slot));
182 dl->cpus = devm_kzalloc(dev, sizeof(*dl->cpus), GFP_KERNEL);
183 dl->codecs = devm_kzalloc(dev, sizeof(*dl->codecs), GFP_KERNEL);
184 if (!dl->name || !dl->cpus || !dl->codecs)
185 return -ENOMEM;
187 dl->cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL,
189 dl->codecs->name = devm_kasprintf(dev, GFP_KERNEL, "i2c-DLGS7219:00");
190 dl->codecs->dai_name = devm_kasprintf(dev, GFP_KERNEL, DA7219_DAI_NAME);
191 if (!dl->cpus->dai_name || !dl->codecs->name || !dl->codecs->dai_name)
192 return -ENOMEM;
194 platform->name = dev_name(dev);
195 dl->num_cpus = 1;
196 dl->num_codecs = 1;
197 dl->platforms = platform;
198 dl->num_platforms = 1;
199 dl->id = 0;
200 dl->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC;
201 dl->be_hw_params_fixup = avs_da7219_be_fixup;
202 dl->init = avs_da7219_codec_init;
203 dl->exit = avs_da7219_codec_exit;
204 dl->nonatomic = 1;
205 dl->no_pcm = 1;
219 struct device *dev = &pdev->dev;
223 pdata = mach->pdata;
238 return -ENOMEM;
240 if (pdata->obsolete_card_names) {
241 card->name = "avs_da7219";
243 card->driver_name = "avs_da7219";
244 card->long_name = card->name = "AVS I2S DA7219";
246 card->dev = dev;
247 card->owner = THIS_MODULE;
248 card->dai_link = dai_link;
249 card->num_links = 1;
250 card->controls = card_controls;
251 card->num_controls = ARRAY_SIZE(card_controls);
252 card->dapm_widgets = card_widgets;
253 card->num_dapm_widgets = ARRAY_SIZE(card_widgets);
254 card->dapm_routes = card_base_routes;
255 card->num_dapm_routes = ARRAY_SIZE(card_base_routes);
256 card->fully_routed = true;