On Raspberry Pi, I use a very basic overlay to tell the SoC to act as I2S Slave and to utilize the various GPIO pins in I2S mode, expose them to the OS as a “dummy” sound card, etc. I control my ADC chip via GPIO manually, setting the I2S sample rate which also drives the sample rate of my DAC. I don’t need a “sound card” driver in that sense.
On the CM3 IO board, I’m looking at the pinout: https://wiki.radxa.com/Rock3/CM3/IO/GPIO
Question 1) Master or Slave. This table lists various I2S pins with corresponding “Function” column. I suspect that I use the CM3 in “slave” mode by using it’s various clock “RX” pins: I2S1_LRCK_RX_M1, I2S1_SCLK_RX.
Question 2) Forgive my ignorance, but don’t I need to know how to get each pin into it’s correct “Function” using a device tree overlay? I think this is obvious to most of you but I have no idea where the reference information is that tells me what to do or even how to do it. For instance, I need to also use I2S1_SDI0_M1 and I2S1_SDO0_M1.
On a raspberry pi, all I had to do was put dtparam=i2s=on
in config.txt. Thus, I was never forced to learn about what that was doing; how it was instructing the SoC chip underneath.
I’m sorry if this is really basic. If anyone can simply point me to how I can change pin “Function” in a dts file I can take it from there. I’ve yet to find this information, though. Even on the Radxa Zero, in order to truly set up I2S you’d need access to the full data sheet. This information is simply not available. This, thread after thread people are going to be coming on here confused, right? Depending only on those who have access to the full, data sheets? Maybe I’m missing something.