[alsa-devel] emu10k1, how to setup DMA for 24bit playback?

Ctirad Fertr c.fertr at gmail.com
Sat Feb 23 14:46:38 CET 2008

Saturday 23 of February 2008 02:05:34 Lee Revell napsal(a):

Hello Lee,

thanks for your reply.

> I did quite a bit of work on this driver a few years back, among other
> things I implemented the multichannel playback support (the hw:0,3
> device).

Yes, I know. This code works well with e-mu cards as well, although it is 
limited to 16bit/48kHz. I'd like to improve this as well, but first I have to 
finish basic stereo 24bit playback via hw:0,0. 

> Do you have a web page with details on your work, or can you explain
> exactly what you've done so far and how it fails?  Preferably in patch
> form...

Well, if you look at emufx.c around line 1566, you will see how the 24 bit 
capture works. The data path (for newer e-mu cards as 1616(M) or 1212M V2) is 

physical inputs (24bit) -> FPGA (internal routing) -> emu10k via A3_EMU32IN() 
(still 24bit padded to 32bit ) -> DSP code converts 32bit sample to 2 16bit 
via snd_emu10k1_audigy_dsp_convert_32_to_2x16() and feeds A_FXBUS2(x) and 
A_FXBUS(x+1) with the resulting halfs -> DMA -> PC side joins these two 16bit 
halfs into one S32_LE sample and voila, we have 24bit capture.

The driver, however, still lacks 24bit playback, and I'm trying to change 
that.  I have working DSP routine which converts two 16bit values from 
A_FXBUS(x) and A_FXBUS(x+1) into 32bit value for  A3_EMU32OUT(), where the 
FPGA and physical output are connected. 

So all I need is to send 32bit sample divided to two 16bit halfs via two 
A_FXBUS() into emu10k DSP. Unfortunatelly, simple changing the sample format 
to S32_LE did not the trick :( Any ideas? 

> How are you getting your hardware info? 

Just from the alsa emu10k source code and some hit and miss experiments. 
Unfortunatelly, there are no emu10k datasheets available :(


More information about the Alsa-devel mailing list