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

1 // SPDX-License-Identifier: GPL-2.0-only
3 // Copyright(c) 2021-2022 Intel Corporation
14 #include <sound/soc-acpi.h>
21 struct snd_soc_dai_link_component *platform;
23 struct hda_pcm *pcm;
24 const char *cname = dev_name(&codec->core.dev);
28 platform = devm_kzalloc(dev, sizeof(*platform), GFP_KERNEL);
29 if (!dl || !platform)
30 return -ENOMEM;
32 platform->name = dev_name(dev);
33 pcm = list_first_entry(&codec->pcm_list_head, struct hda_pcm, list);
35 for (i = 0; i < pcm_count; i++, pcm = list_next_entry(pcm, list)) {
38 return -ENOMEM;
43 dl[i].platforms = platform;
47 dl[i].codecs = devm_kzalloc(dev, sizeof(*dl->codecs), GFP_KERNEL);
48 dl[i].cpus = devm_kzalloc(dev, sizeof(*dl->cpus), GFP_KERNEL);
50 return -ENOMEM;
52 dl[i].cpus->dai_name = devm_kasprintf(dev, GFP_KERNEL, "%s-cpu%d", cname, i);
53 if (!dl[i].cpus->dai_name)
54 return -ENOMEM;
56 dl[i].codecs->name = devm_kstrdup_const(dev, cname, GFP_KERNEL);
57 if (!dl[i].codecs->name)
58 return -ENOMEM;
60 dl[i].codecs->dai_name = pcm->name;
82 spcm = rtd->pcm ? rtd->pcm->streams[dir].pcm : NULL;
83 if (!spcm || !strstr(spcm->id, FEDAI_NAME_PREFIX))
86 ret = sscanf(spcm->id, FEDAI_NAME_PREFIX "%d", &n);
90 return rtd->pcm;
98 struct snd_soc_acpi_mach *mach = dev_get_platdata(card->dev);
99 struct avs_mach_pdata *pdata = mach->pdata;
100 struct hda_codec *codec = pdata->codec;
102 /* Topology pcm indexing is 1-based */
105 list_for_each_entry(hpcm, &codec->pcm_list_head, list) {
110 hpcm->pcm = spcm;
111 hpcm->device = spcm->device;
112 dev_info(card->dev, "%s: mapping HDMI converter %d to PCM %d (%p)\n",
113 __func__, i, hpcm->device, spcm);
115 hpcm->pcm = NULL;
116 hpcm->device = SNDRV_PCM_INVALID_DEVICE;
117 dev_warn(card->dev, "%s: no PCM in topology for HDMI converter %d\n",
131 struct snd_soc_card *card = rtm->card;
133 struct hda_pcm *pcm;
136 mach = dev_get_platdata(card->dev);
137 pdata = mach->pdata;
138 codec = pdata->codec;
140 if (list_empty(&codec->pcm_list_head))
141 return -EINVAL;
142 list_for_each_entry(pcm, &codec->pcm_list_head, list)
145 ret = avs_create_dai_links(card->dev, codec, pcm_count, &links);
147 dev_err(card->dev, "create links failed: %d\n", ret);
153 dev_err(card->dev, "add links failed: %d\n", ret);
161 .name = "probing-LINK",
162 .id = -1,
176 struct device *dev = &pdev->dev;
180 pdata = mach->pdata;
181 codec = pdata->codec;
184 if (!device_is_registered(&codec->core.dev))
185 return -ENODEV;
189 return -ENOMEM;
191 binder->platforms = devm_kzalloc(dev, sizeof(*binder->platforms), GFP_KERNEL);
192 binder->codecs = devm_kzalloc(dev, sizeof(*binder->codecs), GFP_KERNEL);
193 if (!binder->platforms || !binder->codecs)
194 return -ENOMEM;
196 binder->codecs->name = devm_kstrdup_const(dev, dev_name(&codec->core.dev), GFP_KERNEL);
197 if (!binder->codecs->name)
198 return -ENOMEM;
200 binder->platforms->name = dev_name(dev);
201 binder->num_platforms = 1;
202 binder->codecs->dai_name = "codec-probing-DAI";
203 binder->num_codecs = 1;
207 return -ENOMEM;
209 if (pdata->obsolete_card_names) {
210 card->name = devm_kasprintf(dev, GFP_KERNEL, "hdaudioB%dD%d", codec->bus->core.idx,
211 codec->core.addr);
212 if (!card->name)
213 return -ENOMEM;
215 card->driver_name = "avs_hdaudio";
217 card->long_name = card->name = "AVS HDMI";
219 card->long_name = card->name = "AVS HD-Audio";
222 card->dev = dev;
223 card->owner = THIS_MODULE;
224 card->dai_link = binder;
225 card->num_links = 1;
226 card->fully_routed = true;
228 card->late_probe = avs_card_late_probe;
239 MODULE_DEVICE_TABLE(platform, avs_hdaudio_driver_ids);
252 MODULE_DESCRIPTION("Intel HD-Audio machine driver");