Questions on the RASPA and RTDM audio driver

Hi everybody I’ve opened this thread because I replied in the wrong thread so I moved my post here. I haven’t understood how the RTDM driver works with the PCM3168 on the pi hat, I’haven’t understood how the software divides the CV in/out from the audio, and I don’t understand generally how the driver works in particular way the DMA parts.
Thanks to all of you who will reply
Francesco

P.S: link to the wrong thread: Is the CPLD code available?

Ciao Francesco,
the RTDM driver is here:

plus there are some modifications in the DMA subsystem added as a patch of the Kernel as part of our Yocto build:
https://github.com/elk-audio/meta-raspberrypi-elk/tree/warrior/recipes-kernel/linux/files

Making a DMA-safe RTDM driver is not an easy task at all and it’s not easy to just give a one-line explanation here. @Nitin wrote the driver and he’s the expert in that regard but could you please pinpoint some specific questions?

CV mapping is done entirely in SUSHI. Check how CV is configured in SUSHI here:
https://elk-audio.github.io/elk-docs/html/documents/sushi_configuration_format.html#control-voltage-and-gate-connections

The thing is, if you don’t specify any CV configuration in SUSHI, you will still be able to process the CV channels sample-by-sample as they were audio channels. For the source code implementation, grep for cv in SUSHI’s codebase, you will find the parts where these is handled in the engine plus the implementation of two internal plugins to do MIDI-to-CV and viceversa.