Lines Matching +full:dai +full:- +full:controller
1 // SPDX-License-Identifier: GPL-2.0+
10 struct snd_soc_dai_link dai; member
16 struct device_node *spdif_np, *np = pdev->dev.of_node; in imx_spdif_audio_probe()
21 spdif_np = of_parse_phandle(np, "spdif-controller", 0); in imx_spdif_audio_probe()
23 dev_err(&pdev->dev, "failed to find spdif-controller\n"); in imx_spdif_audio_probe()
24 ret = -EINVAL; in imx_spdif_audio_probe()
28 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); in imx_spdif_audio_probe()
29 comp = devm_kzalloc(&pdev->dev, 3 * sizeof(*comp), GFP_KERNEL); in imx_spdif_audio_probe()
31 ret = -ENOMEM; in imx_spdif_audio_probe()
35 data->dai.cpus = &comp[0]; in imx_spdif_audio_probe()
36 data->dai.codecs = &comp[1]; in imx_spdif_audio_probe()
37 data->dai.platforms = &comp[2]; in imx_spdif_audio_probe()
39 data->dai.num_cpus = 1; in imx_spdif_audio_probe()
40 data->dai.num_codecs = 1; in imx_spdif_audio_probe()
41 data->dai.num_platforms = 1; in imx_spdif_audio_probe()
43 data->dai.name = "S/PDIF PCM"; in imx_spdif_audio_probe()
44 data->dai.stream_name = "S/PDIF PCM"; in imx_spdif_audio_probe()
45 data->dai.codecs->dai_name = "snd-soc-dummy-dai"; in imx_spdif_audio_probe()
46 data->dai.codecs->name = "snd-soc-dummy"; in imx_spdif_audio_probe()
47 data->dai.cpus->of_node = spdif_np; in imx_spdif_audio_probe()
48 data->dai.platforms->of_node = spdif_np; in imx_spdif_audio_probe()
49 data->dai.playback_only = true; in imx_spdif_audio_probe()
50 data->dai.capture_only = true; in imx_spdif_audio_probe()
52 if (of_property_read_bool(np, "spdif-out")) in imx_spdif_audio_probe()
53 data->dai.capture_only = false; in imx_spdif_audio_probe()
55 if (of_property_read_bool(np, "spdif-in")) in imx_spdif_audio_probe()
56 data->dai.playback_only = false; in imx_spdif_audio_probe()
58 if (data->dai.playback_only && data->dai.capture_only) { in imx_spdif_audio_probe()
59 dev_err(&pdev->dev, "no enabled S/PDIF DAI link\n"); in imx_spdif_audio_probe()
63 data->card.dev = &pdev->dev; in imx_spdif_audio_probe()
64 data->card.dai_link = &data->dai; in imx_spdif_audio_probe()
65 data->card.num_links = 1; in imx_spdif_audio_probe()
66 data->card.owner = THIS_MODULE; in imx_spdif_audio_probe()
68 ret = snd_soc_of_parse_card_name(&data->card, "model"); in imx_spdif_audio_probe()
72 ret = devm_snd_soc_register_card(&pdev->dev, &data->card); in imx_spdif_audio_probe()
73 if (ret && ret != -EPROBE_DEFER) in imx_spdif_audio_probe()
74 dev_err(&pdev->dev, "snd_soc_register_card failed: %d\n", ret); in imx_spdif_audio_probe()
83 { .compatible = "fsl,imx-audio-spdif", },
90 .name = "imx-spdif",
102 MODULE_ALIAS("platform:imx-spdif");