Lines Matching full:codec

16 static int hda_codec_create_dais(struct hda_codec *codec, int pcm_count,  in hda_codec_create_dais()  argument
19 struct device *dev = &codec->core.dev; in hda_codec_create_dais()
28 pcm = list_first_entry(&codec->pcm_list_head, struct hda_pcm, list); in hda_codec_create_dais()
81 static int hda_codec_register_dais(struct hda_codec *codec, struct snd_soc_component *component) in hda_codec_register_dais() argument
88 if (list_empty(&codec->pcm_list_head)) in hda_codec_register_dais()
90 list_for_each_entry(pcm, &codec->pcm_list_head, list) in hda_codec_register_dais()
93 ret = hda_codec_create_dais(codec, pcm_count, &drvs); in hda_codec_register_dais()
99 list_for_each_entry(pcm, &codec->pcm_list_head, list) { in hda_codec_register_dais()
122 static void hda_codec_unregister_dais(struct hda_codec *codec, in hda_codec_unregister_dais() argument
129 list_for_each_entry(pcm, &codec->pcm_list_head, list) { in hda_codec_unregister_dais()
143 int hda_codec_probe_complete(struct hda_codec *codec) in hda_codec_probe_complete() argument
145 struct hdac_device *hdev = &codec->core; in hda_codec_probe_complete()
149 ret = snd_hda_codec_build_controls(codec); in hda_codec_probe_complete()
158 snd_hda_codec_set_power_save(codec, 2000); in hda_codec_probe_complete()
159 snd_hda_codec_register(codec); in hda_codec_probe_complete()
169 /* Expects codec with usage_count=1 and status=suspended */
172 struct hda_codec *codec = dev_to_hda_codec(component->dev); in hda_codec_probe() local
173 struct hdac_device *hdev = &codec->core; in hda_codec_probe()
191 if (hda_codec_is_display(codec)) in hda_codec_probe()
195 ret = snd_hda_codec_device_new(codec->bus, component->card->snd_card, hdev->addr, codec, in hda_codec_probe()
198 dev_err(&hdev->dev, "create hda codec failed: %d\n", ret); in hda_codec_probe()
202 ret = snd_hda_codec_set_name(codec, codec->preset->name); in hda_codec_probe()
204 dev_err(&hdev->dev, "name failed %s\n", codec->preset->name); in hda_codec_probe()
208 ret = snd_hdac_regmap_init(&codec->core); in hda_codec_probe()
214 patch = (hda_codec_patch_t)codec->preset->driver_data; in hda_codec_probe()
221 ret = patch(codec); in hda_codec_probe()
227 ret = snd_hda_codec_parse_pcms(codec); in hda_codec_probe()
233 ret = hda_codec_register_dais(codec, component); in hda_codec_probe()
239 if (!hda_codec_is_display(codec)) { in hda_codec_probe()
240 ret = hda_codec_probe_complete(codec); in hda_codec_probe()
245 codec->core.lazy_cache = true; in hda_codec_probe()
250 hda_codec_unregister_dais(codec, component); in hda_codec_probe()
252 if (codec->patch_ops.free) in hda_codec_probe()
253 codec->patch_ops.free(codec); in hda_codec_probe()
255 snd_hda_codec_cleanup_for_unbind(codec); in hda_codec_probe()
257 if (hda_codec_is_display(codec)) in hda_codec_probe()
267 /* Leaves codec with usage_count=1 and status=suspended */
270 struct hda_codec *codec = dev_to_hda_codec(component->dev); in hda_codec_remove() local
271 struct hdac_device *hdev = &codec->core; in hda_codec_remove()
274 bool was_registered = codec->core.registered; in hda_codec_remove()
279 hda_codec_unregister_dais(codec, component); in hda_codec_remove()
281 if (codec->patch_ops.free) in hda_codec_remove()
282 codec->patch_ops.free(codec); in hda_codec_remove()
284 snd_hda_codec_cleanup_for_unbind(codec); in hda_codec_remove()
289 if (hda_codec_is_display(codec)) in hda_codec_remove()
311 {"AIF1TX", NULL, "Codec Input Pin1"},
312 {"AIF2TX", NULL, "Codec Input Pin2"},
313 {"AIF3TX", NULL, "Codec Input Pin3"},
315 {"Codec Output Pin1", NULL, "AIF1RX"},
316 {"Codec Output Pin2", NULL, "AIF2RX"},
317 {"Codec Output Pin3", NULL, "AIF3RX"},
322 SND_SOC_DAPM_AIF_IN("AIF1RX", "Analog Codec Playback", 0, SND_SOC_NOPM, 0, 0),
323 SND_SOC_DAPM_AIF_IN("AIF2RX", "Digital Codec Playback", 0, SND_SOC_NOPM, 0, 0),
324 SND_SOC_DAPM_AIF_IN("AIF3RX", "Alt Analog Codec Playback", 0, SND_SOC_NOPM, 0, 0),
325 SND_SOC_DAPM_AIF_OUT("AIF1TX", "Analog Codec Capture", 0, SND_SOC_NOPM, 0, 0),
326 SND_SOC_DAPM_AIF_OUT("AIF2TX", "Digital Codec Capture", 0, SND_SOC_NOPM, 0, 0),
327 SND_SOC_DAPM_AIF_OUT("AIF3TX", "Alt Analog Codec Capture", 0, SND_SOC_NOPM, 0, 0),
330 SND_SOC_DAPM_INPUT("Codec Input Pin1"),
331 SND_SOC_DAPM_INPUT("Codec Input Pin2"),
332 SND_SOC_DAPM_INPUT("Codec Input Pin3"),
335 SND_SOC_DAPM_OUTPUT("Codec Output Pin1"),
336 SND_SOC_DAPM_OUTPUT("Codec Output Pin2"),
337 SND_SOC_DAPM_OUTPUT("Codec Output Pin3"),
342 .name = "codec-probing-DAI",
347 struct hda_codec *codec = dev_to_hda_codec(&hdev->dev); in hda_hdev_attach() local
356 * driver's lifetime is directly tied to hda codec one in hda_hdev_attach()
362 if (!hda_codec_is_display(codec)) { in hda_hdev_attach()
374 struct hda_codec *codec = dev_to_hda_codec(&hdev->dev); in hda_hdev_detach() local
376 if (codec->core.registered) in hda_hdev_detach()
377 cancel_delayed_work_sync(&codec->jackpoll_work); in hda_hdev_detach()
390 MODULE_DESCRIPTION("HD-Audio codec driver");