Lines Matching +full:pcm +full:- +full:platform

1 // SPDX-License-Identifier: GPL-2.0-only
5 * ehl_rt5660 - ASOC Machine driver for Elkhart Lake platforms
18 #include <sound/pcm.h>
21 #include <sound/soc-acpi.h>
76 struct sof_card_private *ctx = snd_soc_card_get_drvdata(rtd->card); in hdmi_init()
78 struct sof_hdmi_pcm *pcm; in hdmi_init() local
80 pcm = devm_kzalloc(rtd->card->dev, sizeof(*pcm), GFP_KERNEL); in hdmi_init()
81 if (!pcm) in hdmi_init()
82 return -ENOMEM; in hdmi_init()
84 /* dai_link id is 1:1 mapped to the PCM device */ in hdmi_init()
85 pcm->device = rtd->dai_link->id; in hdmi_init()
86 pcm->codec_dai = dai; in hdmi_init()
88 list_add_tail(&pcm->head, &ctx->hdmi_pcm_list); in hdmi_init()
96 struct sof_hdmi_pcm *pcm; in card_late_probe() local
98 if (list_empty(&ctx->hdmi_pcm_list)) in card_late_probe()
99 return -ENOENT; in card_late_probe()
101 if (!ctx->idisp_codec) in card_late_probe()
104 pcm = list_first_entry(&ctx->hdmi_pcm_list, struct sof_hdmi_pcm, head); in card_late_probe()
106 return hda_dsp_hdmi_build_controls(card, pcm->codec_dai->component); in card_late_probe()
121 dev_err(rtd->dev, "snd_soc_dai_set_sysclk err = %d\n", ret); in rt5660_hw_params()
130 dev_err(codec_dai->dev, "can't set codec pll: %d\n", ret); in rt5660_hw_params()
143 DAILINK_COMP_ARRAY(COMP_CODEC("i2c-10EC5660:00", "rt5660-aif1")));
145 SND_SOC_DAILINK_DEF(platform,
151 DAILINK_COMP_ARRAY(COMP_CODEC("dmic-codec", "dmic-hifi")));
158 DAILINK_COMP_ARRAY(COMP_CODEC("ehdaudio0D2", "intel-hdmi-hifi1")));
163 DAILINK_COMP_ARRAY(COMP_CODEC("ehdaudio0D2", "intel-hdmi-hifi2")));
168 DAILINK_COMP_ARRAY(COMP_CODEC("ehdaudio0D2", "intel-hdmi-hifi3")));
173 DAILINK_COMP_ARRAY(COMP_CODEC("ehdaudio0D2", "intel-hdmi-hifi4")));
178 .name = "SSP0-Codec",
182 SND_SOC_DAILINK_REG(ssp0_pin, rt5660_codec, platform),
190 SND_SOC_DAILINK_REG(dmic_pin, dmic_codec, platform),
198 SND_SOC_DAILINK_REG(dmic16k, dmic_codec, platform),
206 SND_SOC_DAILINK_REG(idisp1_pin, idisp1_codec, platform),
214 SND_SOC_DAILINK_REG(idisp2_pin, idisp2_codec, platform),
222 SND_SOC_DAILINK_REG(idisp3_pin, idisp3_codec, platform),
230 SND_SOC_DAILINK_REG(idisp4_pin, idisp4_codec, platform),
236 .name = "ehl-rt5660",
257 if (mach->mach_params.codec_mask & IDISP_CODEC_MASK) { in hdmi_link_init()
258 ctx->idisp_codec = true; in hdmi_link_init()
267 card->dai_link[i].codecs[0] = snd_soc_dummy_dlc; in hdmi_link_init()
277 card->dev = &pdev->dev; in snd_ehl_rt5660_probe()
279 ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL); in snd_ehl_rt5660_probe()
281 return -ENOMEM; in snd_ehl_rt5660_probe()
282 INIT_LIST_HEAD(&ctx->hdmi_pcm_list); in snd_ehl_rt5660_probe()
285 mach = pdev->dev.platform_data; in snd_ehl_rt5660_probe()
287 mach->mach_params.platform); in snd_ehl_rt5660_probe()
293 return devm_snd_soc_register_card(&pdev->dev, card); in snd_ehl_rt5660_probe()
300 MODULE_DEVICE_TABLE(platform, ehl_board_ids);