Using I2S in Jetson TX2

Basic Information:
1.I am using a Custom Carrier Board
2.Using L4T 28.1
3.I2S port 0 used
4.Audio codec:TLV320AIC3110

I am unable to detect the audio codec.Do the I2S ports need enabling in the Device Tree?

Hello!

Looking at the TLV320AIC3110 datasheet, I see that the control interface for the codec is I2C.

Some questions for you …

  1. What I2C interface is the codec connected to?
  2. Have you updated device-tree to add support for the codec under the appropriate I2C interface? If so, is the codec detected as an I2C device?
  3. Have you enabled support for the codec in the kernel? The kernel kconfig option CONFIG_SND_SOC_TLV320AIC31XX needs to be enabled.

Regards,
Jon

By the way, I do recommend that you using rel28.2 because there were several audio related fixes in this release. Regards, Jon

1.I have connected to I2C port 3. I cannot see it as a I2C device either.

2.No i have no updated the device-tree. Can you tell me what changes to make?

3.I haven’t done this either, Could you tell me the procedure?

Thanks

The Linux kernel will not detect the presence of the device until the device is added to device-tree. To add the codec to device-tree …

  1. Refer to the codec device-tree binding documentation under the Linux kernel documentation directory (ie. Documentation/devicetree/bindings/sound/tlv320aic31xx.txt). This will tell you how the device-tree node for the codec needs to be formatted. You can also look through the various device-tree source files in the kernel for examples for this codec. Please note that I am not familiar with this codec and so any questions regard the codec or codec device-tree bindings should be directed to the codec vendor.

I see that the codec device-tree binding requires regulators. If the codec board is powered by TX2, then you should be able to use the TX2 power-rail regulators for these (eg. vdd_3v3). Otherwise, if powered externally, you need to to define some dummy regulators that are always-on.

  1. Add the codec device-tree binding to the Tegra ‘i2c@c240000’ node. If you look at the following thread you can see what others have done with similar codecs.

https://devtalk.nvidia.com/default/topic/1036139/tx2-asoc-with-tlv320aic32x4/

  1. Rebuild the kernel for L4T and flash and then see if the codec is found. You can also check the ‘/proc/device-tree/i2c@c240000/’ to verify that device-tree has been updated correctly after booting.

Regards,
Jon

hello jonathanh

Thank you for the detailed explanation. I will try the above steps and report my results here.

Hello. I have raspiaudio MIC+ and i want to know how i can check the I2S4 port in my jetson nano. how i can check if it is working. Or eventually how i can activiate it.

Hi,

I can play sounds using this article (last jetpack) : https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide%2Fhw_setup_jetson_io.html%23

Mic not tested