if (!np) {
dev_err(&pdev->dev, "only device tree supported\n"); return -EINVAL;
}
ret = snd_soc_of_parse_card_name(card, "atmel,model"); if (ret) {
dev_err(&pdev->dev, "failed to parse card name\n"); return ret;
}
ret = snd_soc_of_parse_audio_routing(card, "atmel,audio-routing"); if (ret) {
dev_err(&pdev->dev, "failed to parse audio routing\n"); return ret;
}
cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0); if (!cpu_np) {
dev_err(&pdev->dev, "failed to get dai and pcm info\n");
ret = -EINVAL; return ret;
}
dailink->cpus->of_node = cpu_np;
dailink->platforms->of_node = cpu_np;
of_node_put(cpu_np);
codec_np = of_parse_phandle(np, "atmel,audio-codec", 0); if (!codec_np) {
dev_err(&pdev->dev, "failed to get codec info\n");
ret = -EINVAL; return ret;
}
dailink->codecs->of_node = codec_np;
of_node_put(codec_np);
card->dev = &pdev->dev;
ret = atmel_asoc_wm8904_dt_init(pdev); if (ret) {
dev_err(&pdev->dev, "failed to init dt info\n"); return ret;
}
id = of_alias_get_id((struct device_node *)dailink->cpus->of_node, "ssc");
ret = atmel_ssc_set_audio(id); if (ret != 0) {
dev_err(&pdev->dev, "failed to set SSC %d for audio\n", id); return ret;
}
ret = snd_soc_register_card(card); if (ret) {
dev_err(&pdev->dev, "snd_soc_register_card failed\n"); goto err_set_audio;
}
/* Module information */
MODULE_AUTHOR("Bo Shen <voice.shen@atmel.com>");
MODULE_DESCRIPTION("ALSA SoC machine driver for Atmel EK with WM8904 codec");
MODULE_LICENSE("GPL");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.