29 #include <linux/module.h>
32 #include <linux/slab.h>
40 #include "../codecs/tlv320aic23.h"
44 #define DRV_NAME "tegra-snd-trimslice"
66 dev_err(card->
dev,
"Can't configure clocks\n");
73 dev_err(card->
dev,
"codec_dai clock not set\n");
81 .hw_params = trimslice_asoc_hw_params,
90 {
"Line Out",
NULL,
"LOUT"},
91 {
"Line Out",
NULL,
"ROUT"},
93 {
"LLINEIN",
NULL,
"Line In"},
94 {
"RLINEIN",
NULL,
"Line In"},
98 .name =
"TLV320AIC23",
99 .stream_name =
"AIC23",
100 .codec_name =
"tlv320aic23-codec.2-001a",
101 .platform_name =
"tegra20-i2s.0",
102 .cpu_dai_name =
"tegra20-i2s.0",
103 .codec_dai_name =
"tlv320aic23-hifi",
104 .ops = &trimslice_asoc_ops,
111 .name =
"tegra-trimslice",
113 .dai_link = &trimslice_tlv320aic23_dai,
116 .dapm_widgets = trimslice_dapm_widgets,
117 .num_dapm_widgets =
ARRAY_SIZE(trimslice_dapm_widgets),
118 .dapm_routes = trimslice_audio_map,
119 .num_dapm_routes =
ARRAY_SIZE(trimslice_audio_map),
120 .fully_routed =
true,
132 dev_err(&pdev->
dev,
"Can't allocate tegra_trimslice\n");
137 if (pdev->
dev.of_node) {
140 pdev->
dev.of_node,
"nvidia,audio-codec", 0);
143 "Property 'nvidia,audio-codec' missing or invalid\n");
150 pdev->
dev.of_node,
"nvidia,i2s-controller", 0);
153 "Property 'nvidia,i2s-controller' missing or invalid\n");
168 platform_set_drvdata(pdev, card);
169 snd_soc_card_set_drvdata(card, trimslice);
173 dev_err(&pdev->
dev,
"snd_soc_register_card failed (%d)\n",
199 { .compatible =
"nvidia,tegra-audio-trimslice", },
208 .of_match_table = trimslice_of_match,
210 .probe = tegra_snd_trimslice_probe,