petalinux I2S simple-sound-card not detected by alsa
Hello there! I am trying to create a sound card on my custom Ultrascale+ MPSoC. I created a simple block design (consisting of I2S Rx/Tx IP, Audio-Formatter IP and Ultrascale+ MPSoC) for test purposes. I've created a petalinux project (without bsp because I have a custom board). Petalinux already configured almost everything accordingly. It created the device tree entries and and configured the kernel for my hardware design. I think there is no problem.
Now I have to add the codec driver and the "glue" driver. I am using the linux simple-sound-card driver as glue / machine driver which controls the codec driver, I2S Rx/Tx drivers and audio formatter driver in order to work with Linux ALSA. I added the device entries and configured the kernel with petalinux.
Before I test it on my board I tested it with QEMU. The system is booting and I can log in as root user. Unfortuantely sound card isn't recognised by alsa because the simple-sound-card fails.
[ 2.665735] Advanced Linux Sound Architecture Driver Initialized. ... [ 5.375628] xlnx_formatter_pcm 80010000.audio_formatter: sound card device creation failed [ 5.376359] xlnx_formatter_pcm 80010000.audio_formatter: pcm platform device registered [ 5.377945] xlnx_i2s 80020000.i2s_receiver: xlnx_i2s_capture DAI registered [ 5.378645] xlnx_i2s 80030000.i2s_transmitter: xlnx_i2s_playback DAI registered ... [ 6.477359] asoc-simple-card sound0: parse error -22 [ 6.477870] asoc-simple-card: probe of sound0 failed with error -22 ... [ 6.359714] tlv320aic3x-codec 0-0018: 0-0018 supply IOVDD not found, using dummy regulator [ 6.361562] tlv320aic3x-codec 0-0018: 0-0018 supply DVDD not found, using dummy regulator [ 6.362193] tlv320aic3x-codec 0-0018: 0-0018 supply AVDD not found, using dummy regulator [ 6.362751] tlv320aic3x-codec 0-0018: 0-0018 supply DRVDD not found, using dummy regulator ... [ 6.664643] ALSA device list: [ 6.664918] No soundcards found.
I've searched alot in this forum and on google but I couldn't find a proper solution for my problem. My board has the TI320aic3104 codec and there is even an device tree node for it on mainline linux. My device tree entries for the simple-sound-card and the codec are pretty much the same but it doesn't work.
I've attched the relevant part of my device tree and the uboot log. The device tree is generated by petalinux. I added my stuff in the system-user.dtsi which is user modifiable. I am using petalinux 2020.2 Somewhere I've read that the linux simple-sound-card driver doesn't work with the Xilinx Audio-Formatter IP driver. Could that cause the problem?
If you can help be I'd be very thankful. I've wasted many hours searching the problem. Thanks!