Lines Matching +full:platform +full:- +full:data
1 // SPDX-License-Identifier: GPL-2.0-only
20 #include <sound/soc-acpi.h>
34 { "speaker-enable-gpios", &enable_gpio, 1, ACPI_GPIO_QUIRK_ONLY_GPIOIO },
41 struct snd_soc_card *card = w->dapm->card;
42 struct avs_card_drvdata *data;
45 data = snd_soc_card_get_drvdata(card);
49 gpiod_set_value_cansleep(data->gpiod, speaker_en);
102 struct snd_soc_component *component = codec_dai->component;
103 struct snd_soc_card *card = runtime->card;
105 struct avs_card_drvdata *data;
109 data = snd_soc_card_get_drvdata(card);
112 pins = devm_kmemdup_array(card->dev, card_headset_pins, num_pins,
115 return -ENOMEM;
118 &data->jack, pins, num_pins);
122 ret = devm_acpi_dev_add_driver_gpios(codec_dai->dev, speaker_gpios);
124 dev_warn(codec_dai->dev, "Unable to add GPIO mapping table\n");
126 gpiod = gpiod_get_optional(codec_dai->dev, "speaker-enable", GPIOD_OUT_LOW);
128 return dev_err_probe(codec_dai->dev, PTR_ERR(gpiod), "Get gpiod failed: %ld\n",
131 data->gpiod = gpiod;
132 snd_jack_set_key(data->jack.jack, SND_JACK_BTN_0, KEY_PLAYPAUSE);
133 snd_soc_component_set_jack(component, &data->jack, NULL);
135 card->dapm.idle_bias = false;
142 struct avs_card_drvdata *data = snd_soc_card_get_drvdata(runtime->card);
145 snd_soc_component_set_jack(codec_dai->component, NULL, NULL);
146 gpiod_put(data->gpiod);
169 dev_err(runtime->dev, "Set codec sysclk failed: %d\n", ret);
189 rate->min = rate->max = 48000;
190 channels->min = channels->max = 2;
202 struct snd_soc_dai_link_component *platform;
206 platform = devm_kzalloc(dev, sizeof(*platform), GFP_KERNEL);
207 if (!dl || !platform)
208 return -ENOMEM;
210 dl->name = devm_kasprintf(dev, GFP_KERNEL,
211 AVS_STRING_FMT("SSP", "-Codec", ssp_port, tdm_slot));
212 dl->cpus = devm_kzalloc(dev, sizeof(*dl->cpus), GFP_KERNEL);
213 dl->codecs = devm_kzalloc(dev, sizeof(*dl->codecs), GFP_KERNEL);
214 if (!dl->name || !dl->cpus || !dl->codecs)
215 return -ENOMEM;
217 dl->cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL,
219 dl->codecs->name = devm_kasprintf(dev, GFP_KERNEL, "i2c-ESSX8336:00");
220 dl->codecs->dai_name = devm_kasprintf(dev, GFP_KERNEL, ES8336_CODEC_DAI);
221 if (!dl->cpus->dai_name || !dl->codecs->name || !dl->codecs->dai_name)
222 return -ENOMEM;
224 platform->name = dev_name(dev);
225 dl->num_cpus = 1;
226 dl->num_codecs = 1;
227 dl->platforms = platform;
228 dl->num_platforms = 1;
229 dl->id = 0;
230 dl->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC;
231 dl->init = avs_es8336_codec_init;
232 dl->exit = avs_es8336_codec_exit;
233 dl->be_hw_params_fixup = avs_es8336_be_fixup;
234 dl->ops = &avs_es8336_ops;
235 dl->nonatomic = 1;
236 dl->no_pcm = 1;
247 return snd_soc_component_set_jack(codec_dai->component, NULL, NULL);
253 struct avs_card_drvdata *data = snd_soc_card_get_drvdata(card);
255 return snd_soc_component_set_jack(codec_dai->component, &data->jack, NULL);
263 struct avs_card_drvdata *data;
265 struct device *dev = &pdev->dev;
269 pdata = mach->pdata;
281 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
283 if (!data || !card)
284 return -ENOMEM;
286 if (pdata->obsolete_card_names) {
287 card->name = "avs_es8336";
289 card->driver_name = "avs_es8336";
290 card->long_name = card->name = "AVS I2S ES8336";
292 card->dev = dev;
293 card->owner = THIS_MODULE;
294 card->suspend_pre = avs_card_suspend_pre;
295 card->resume_post = avs_card_resume_post;
296 card->dai_link = dai_link;
297 card->num_links = 1;
298 card->controls = card_controls;
299 card->num_controls = ARRAY_SIZE(card_controls);
300 card->dapm_widgets = card_widgets;
301 card->num_dapm_widgets = ARRAY_SIZE(card_widgets);
302 card->dapm_routes = card_routes;
303 card->num_dapm_routes = ARRAY_SIZE(card_routes);
304 card->fully_routed = true;
305 snd_soc_card_set_drvdata(card, data);
316 MODULE_DEVICE_TABLE(platform, avs_es8336_driver_ids);