Minimal I2S driver for Jetson AGX Xavier


I have been trying to port the I2S driver that comes with the Jetson kernel (v5.10) into OP-TEE. So far I have focused on the files in the folder: kernel-5.10/sound/soc/tegra as these contain the main sound drivers for the kit. However the size of the code base makes it a bit difficult to port to OP-TEE.

So I will like to ask if anyone has a hint on a very minimal I2S driver implementation (even if independent of what is provided by the kernel) that I could use for the Jetson AGX Xavier. I have found relatively simpler I2S driver implementations for different boards (e.g Raspberry Pi, AT91, etc) and I’m wondering how feasible it would be to adapt these simpler driver implementations to work with a more complex board like the Jetson AGX Xavier.

The I2S microphone which I use (already works with the default kernel driver) is SPH0645LM4H-B.

Disclaimer: I am not an expert in driver implementation, but I am willing to learn from anyone who has some useful information for me.

Thanks in advance!

Sorry for the late response, have you managed to get issue resolved or still need the support? Thanks

Hello, no I haven’t solved my issue yet. Would appreciate any help. Thanks.

Hi petersonyuhala

There is no minimal driver available for I2S at the moment.
Are you just looking at the I2S driver or the whole audio pipeline?
I guess you are looking for some custom audio solution? Is it ALSA based?

Hi @spujar , I am interested in the I2S part only, not the whole audio pipeline. Any simpler I2S driver (with respect to the present implementation) will be greatly appreciated. I’m working mainly on the OP-TEE side so minimal code is key.

With that said, I could work something out myself if you point me in the right direction, i.e any simple Tegra210 based I2S solution or even ideas on how to come up with one.

If you are just interested in I2S driver you can look at tegra210_i2s.c.
But I am not sure if only this will solve all your problems.
Because there is a separate DMA driver and along with this you need to program specific AHUB registers to push data to I2S HW.

Ok, thanks for the tip.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.