90
92
.codec_dai_name = "sgtl5000",
91
93
.codec_name = "sgtl5000.0-000a",
92
94
.cpu_dai_name = "mxs-saif.0",
93
.platform_name = "mxs-pcm-audio.0",
95
.platform_name = "mxs-saif.0",
94
96
.ops = &mxs_sgtl5000_hifi_ops,
98
100
.codec_dai_name = "sgtl5000",
99
101
.codec_name = "sgtl5000.0-000a",
100
102
.cpu_dai_name = "mxs-saif.1",
101
.platform_name = "mxs-pcm-audio.1",
103
.platform_name = "mxs-saif.1",
102
104
.ops = &mxs_sgtl5000_hifi_ops,
110
112
.num_links = ARRAY_SIZE(mxs_sgtl5000_dai),
115
static int __devinit mxs_sgtl5000_probe_dt(struct platform_device *pdev)
117
struct device_node *np = pdev->dev.of_node;
118
struct device_node *saif_np[2], *codec_np;
122
return 1; /* no device tree */
124
saif_np[0] = of_parse_phandle(np, "saif-controllers", 0);
125
saif_np[1] = of_parse_phandle(np, "saif-controllers", 1);
126
codec_np = of_parse_phandle(np, "audio-codec", 0);
127
if (!saif_np[0] || !saif_np[1] || !codec_np) {
128
dev_err(&pdev->dev, "phandle missing or invalid\n");
132
for (i = 0; i < 2; i++) {
133
mxs_sgtl5000_dai[i].codec_name = NULL;
134
mxs_sgtl5000_dai[i].codec_of_node = codec_np;
135
mxs_sgtl5000_dai[i].cpu_dai_name = NULL;
136
mxs_sgtl5000_dai[i].cpu_dai_of_node = saif_np[i];
137
mxs_sgtl5000_dai[i].platform_name = NULL;
138
mxs_sgtl5000_dai[i].platform_of_node = saif_np[i];
141
of_node_put(codec_np);
142
of_node_put(saif_np[0]);
143
of_node_put(saif_np[1]);
113
148
static int __devinit mxs_sgtl5000_probe(struct platform_device *pdev)
115
150
struct snd_soc_card *card = &mxs_sgtl5000;
153
ret = mxs_sgtl5000_probe_dt(pdev);
119
158
* Set an init clock(11.28Mhz) for sgtl5000 initialization(i2c r/w).
120
159
* The Sgtl5000 sysclk is derived from saif0 mclk and it's range
190
static const struct of_device_id mxs_sgtl5000_dt_ids[] = {
191
{ .compatible = "fsl,mxs-audio-sgtl5000", },
194
MODULE_DEVICE_TABLE(of, mxs_sgtl5000_dt_ids);
151
196
static struct platform_driver mxs_sgtl5000_audio_driver = {
153
198
.name = "mxs-sgtl5000",
154
199
.owner = THIS_MODULE,
200
.of_match_table = mxs_sgtl5000_dt_ids,
156
202
.probe = mxs_sgtl5000_probe,
157
203
.remove = __devexit_p(mxs_sgtl5000_remove),