Since that wicked N810 arrived, I've had to neglect the other devices a bit. The reason is mainly that the
OMAP2420 CPU has an integrated TMS320C55x DSP. And thanks to the
DSP Gateway it is possible to actually run our own code on it (see the
DSPProgramming wiki page). Before, I could only dream about playing with those inaccessible DSPs on the OMAP850 and Calypso chipsets.
So I set out to learn C55x assembly and at the same time figure out how to play sound directly from the DSP. I somehow got the idea that this could be done by disassembling the pcm2 dsptask module (that is the backend for the
dsppcm GStreamer sink, which unfortunately can't be built because the latest version of the
DSP header files is nowhere to be found).
I think I have understood the bigger part of the pcm2 code by now, although trying to grasp indirect adressing using ARn registers gives me headaches. The stream setup and the command interface to the ARM processor is already recreated, but the most important part is still missing: the actual data transfer of PCM data from ARM to DSP via mmap and from DSP to EAC via SIO issue/reclaim.
Once that is done, I hope to make use of the knowledge gained by helping the
DSP OGG Vorbis decoder project.
In the meanwhile,
bricks keep falling into place in kernel land, so I have to do some catching up and submitting patches for at least Magician soon.