Lines Matching +full:dai +full:- +full:links
1 // SPDX-License-Identifier: GPL-2.0-only
6 * sof_ssp_amp.c - ASoc Machine driver for Intel platforms
114 if (!ctx->idisp_codec) in sof_card_late_probe()
117 if (list_empty(&ctx->hdmi_pcm_list)) in sof_card_late_probe()
118 return -EINVAL; in sof_card_late_probe()
120 if (ctx->common_hdmi_codec_drv) { in sof_card_late_probe()
121 pcm = list_first_entry(&ctx->hdmi_pcm_list, struct sof_hdmi_pcm, in sof_card_late_probe()
123 component = pcm->codec_dai->component; in sof_card_late_probe()
128 list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) { in sof_card_late_probe()
129 component = pcm->codec_dai->component; in sof_card_late_probe()
131 "HDMI/DP, pcm=%d Jack", pcm->device); in sof_card_late_probe()
133 SND_JACK_AVOUT, &pcm->sof_hdmi); in sof_card_late_probe()
138 err = hdac_hdmi_jack_init(pcm->codec_dai, pcm->device, in sof_card_late_probe()
139 &pcm->sof_hdmi); in sof_card_late_probe()
146 return hdac_hdmi_jack_port_init(component, &card->dapm); in sof_card_late_probe()
169 .name = "dmic-codec",
170 .dai_name = "dmic-hifi",
176 .name = "snd-soc-dummy",
177 .dai_name = "snd-soc-dummy-dai",
183 struct sof_card_private *ctx = snd_soc_card_get_drvdata(rtd->card); in sof_hdmi_init()
184 struct snd_soc_dai *dai = asoc_rtd_to_codec(rtd, 0); in sof_hdmi_init() local
187 pcm = devm_kzalloc(rtd->card->dev, sizeof(*pcm), GFP_KERNEL); in sof_hdmi_init()
189 return -ENOMEM; in sof_hdmi_init()
192 pcm->device = rtd->dai_link->id; in sof_hdmi_init()
193 pcm->codec_dai = dai; in sof_hdmi_init()
195 list_add_tail(&pcm->head, &ctx->hdmi_pcm_list); in sof_hdmi_init()
210 struct snd_soc_dai_link *links; in sof_card_dai_links_create() local
213 links = devm_kcalloc(dev, sof_ssp_amp_card.num_links, in sof_card_dai_links_create()
217 if (!links || !cpus) in sof_card_dai_links_create()
220 /* HDMI-In SSP */ in sof_card_dai_links_create()
231 links[id].cpus = &cpus[id]; in sof_card_dai_links_create()
232 links[id].cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, in sof_card_dai_links_create()
234 if (!links[id].cpus->dai_name) in sof_card_dai_links_create()
236 links[id].name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-HDMI", port); in sof_card_dai_links_create()
237 if (!links[id].name) in sof_card_dai_links_create()
239 links[id].id = id; in sof_card_dai_links_create()
240 links[id].codecs = dummy_component; in sof_card_dai_links_create()
241 links[id].num_codecs = ARRAY_SIZE(dummy_component); in sof_card_dai_links_create()
242 links[id].platforms = platform_component; in sof_card_dai_links_create()
243 links[id].num_platforms = ARRAY_SIZE(platform_component); in sof_card_dai_links_create()
244 links[id].dpcm_capture = 1; in sof_card_dai_links_create()
245 links[id].no_pcm = 1; in sof_card_dai_links_create()
246 links[id].num_cpus = 1; in sof_card_dai_links_create()
252 links[id].name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-Codec", ssp_codec); in sof_card_dai_links_create()
253 if (!links[id].name) in sof_card_dai_links_create()
256 links[id].id = id; in sof_card_dai_links_create()
258 sof_rt1308_dai_link(&links[id]); in sof_card_dai_links_create()
260 cs35l41_set_dai_link(&links[id]); in sof_card_dai_links_create()
263 links[id].dpcm_capture = 1; in sof_card_dai_links_create()
265 links[id].platforms = platform_component; in sof_card_dai_links_create()
266 links[id].num_platforms = ARRAY_SIZE(platform_component); in sof_card_dai_links_create()
267 links[id].dpcm_playback = 1; in sof_card_dai_links_create()
268 links[id].no_pcm = 1; in sof_card_dai_links_create()
269 links[id].cpus = &cpus[id]; in sof_card_dai_links_create()
270 links[id].num_cpus = 1; in sof_card_dai_links_create()
271 links[id].cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d Pin", ssp_codec); in sof_card_dai_links_create()
272 if (!links[id].cpus->dai_name) in sof_card_dai_links_create()
280 links[id].name = "dmic01"; in sof_card_dai_links_create()
281 links[id].cpus = &cpus[id]; in sof_card_dai_links_create()
282 links[id].cpus->dai_name = "DMIC01 Pin"; in sof_card_dai_links_create()
284 /* set up 2 BE links at most */ in sof_card_dai_links_create()
285 links[id + 1].name = "dmic16k"; in sof_card_dai_links_create()
286 links[id + 1].cpus = &cpus[id + 1]; in sof_card_dai_links_create()
287 links[id + 1].cpus->dai_name = "DMIC16k Pin"; in sof_card_dai_links_create()
293 links[id].id = id; in sof_card_dai_links_create()
294 links[id].num_cpus = 1; in sof_card_dai_links_create()
295 links[id].codecs = dmic_component; in sof_card_dai_links_create()
296 links[id].num_codecs = ARRAY_SIZE(dmic_component); in sof_card_dai_links_create()
297 links[id].platforms = platform_component; in sof_card_dai_links_create()
298 links[id].num_platforms = ARRAY_SIZE(platform_component); in sof_card_dai_links_create()
299 links[id].ignore_suspend = 1; in sof_card_dai_links_create()
300 links[id].dpcm_capture = 1; in sof_card_dai_links_create()
301 links[id].no_pcm = 1; in sof_card_dai_links_create()
317 links[id].name = devm_kasprintf(dev, GFP_KERNEL, in sof_card_dai_links_create()
319 if (!links[id].name) in sof_card_dai_links_create()
322 links[id].id = id; in sof_card_dai_links_create()
323 links[id].cpus = &cpus[id]; in sof_card_dai_links_create()
324 links[id].num_cpus = 1; in sof_card_dai_links_create()
325 links[id].cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, in sof_card_dai_links_create()
327 if (!links[id].cpus->dai_name) in sof_card_dai_links_create()
331 idisp_components[i - 1].name = "ehdaudio0D2"; in sof_card_dai_links_create()
332 idisp_components[i - 1].dai_name = devm_kasprintf(dev, in sof_card_dai_links_create()
334 "intel-hdmi-hifi%d", in sof_card_dai_links_create()
336 if (!idisp_components[i - 1].dai_name) in sof_card_dai_links_create()
339 idisp_components[i - 1].name = "snd-soc-dummy"; in sof_card_dai_links_create()
340 idisp_components[i - 1].dai_name = "snd-soc-dummy-dai"; in sof_card_dai_links_create()
343 links[id].codecs = &idisp_components[i - 1]; in sof_card_dai_links_create()
344 links[id].num_codecs = 1; in sof_card_dai_links_create()
345 links[id].platforms = platform_component; in sof_card_dai_links_create()
346 links[id].num_platforms = ARRAY_SIZE(platform_component); in sof_card_dai_links_create()
347 links[id].init = sof_hdmi_init; in sof_card_dai_links_create()
348 links[id].dpcm_playback = 1; in sof_card_dai_links_create()
349 links[id].no_pcm = 1; in sof_card_dai_links_create()
359 links[id].id = id; in sof_card_dai_links_create()
360 links[id].cpus = &cpus[id]; in sof_card_dai_links_create()
361 links[id].cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, in sof_card_dai_links_create()
363 if (!links[id].cpus->dai_name) in sof_card_dai_links_create()
365 links[id].name = devm_kasprintf(dev, GFP_KERNEL, "SSP%d-BT", port); in sof_card_dai_links_create()
366 if (!links[id].name) in sof_card_dai_links_create()
368 links[id].codecs = dummy_component; in sof_card_dai_links_create()
369 links[id].num_codecs = ARRAY_SIZE(dummy_component); in sof_card_dai_links_create()
370 links[id].platforms = platform_component; in sof_card_dai_links_create()
371 links[id].num_platforms = ARRAY_SIZE(platform_component); in sof_card_dai_links_create()
372 links[id].dpcm_playback = 1; in sof_card_dai_links_create()
373 links[id].dpcm_capture = 1; in sof_card_dai_links_create()
374 links[id].no_pcm = 1; in sof_card_dai_links_create()
375 links[id].num_cpus = 1; in sof_card_dai_links_create()
379 return links; in sof_card_dai_links_create()
392 ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); in sof_ssp_amp_probe()
394 return -ENOMEM; in sof_ssp_amp_probe()
396 if (pdev->id_entry && pdev->id_entry->driver_data) in sof_ssp_amp_probe()
397 sof_ssp_amp_quirk = (unsigned long)pdev->id_entry->driver_data; in sof_ssp_amp_probe()
399 mach = pdev->dev.platform_data; in sof_ssp_amp_probe()
401 if (dmi_check_system(chromebook_platforms) || mach->mach_params.dmic_num > 0) in sof_ssp_amp_probe()
406 /* set number of dai links */ in sof_ssp_amp_probe()
416 /* default number of HDMI DAI's */ in sof_ssp_amp_probe()
420 if (mach->mach_params.codec_mask & IDISP_CODEC_MASK) in sof_ssp_amp_probe()
421 ctx->idisp_codec = true; in sof_ssp_amp_probe()
429 …dai_links = sof_card_dai_links_create(&pdev->dev, ssp_codec, dmic_be_num, hdmi_num, ctx->idisp_cod… in sof_ssp_amp_probe()
431 return -ENOMEM; in sof_ssp_amp_probe()
440 INIT_LIST_HEAD(&ctx->hdmi_pcm_list); in sof_ssp_amp_probe()
442 sof_ssp_amp_card.dev = &pdev->dev; in sof_ssp_amp_probe()
446 mach->mach_params.platform); in sof_ssp_amp_probe()
450 ctx->common_hdmi_codec_drv = mach->mach_params.common_hdmi_codec_drv; in sof_ssp_amp_probe()
454 return devm_snd_soc_register_card(&pdev->dev, &sof_ssp_amp_card); in sof_ssp_amp_probe()