Stefan George

imx28 SAIF with DMA

Discussion created by Stefan George on Aug 21, 2012


I am using a custom board based on imx28 (running 2.6.35) with the SAIF interface connected to the PCM output of a modem.
I have developed a dummy codec for the modem and customized mxs-devb.c to use that codec instead of sgtl5000.
Clock master, fixed at 256kHz, 
Frame sync master, fixed 125us frame duration (8kHz): 32 bits of total data; first 16 bits are valid (while FS is high), following 16 are "don't care" (while FS low)
16-bit linear samples, sent MSB first
"Long Frame" sync:  transmit and receive occur simultaneously while the common FS line is active (high).
TX data with 0-bit delay; start at the rising edge of the clock, while FS is high.
RX data with 0-bit delay; sample at the falling edge of the clock, while FS is high.
This configuration is fixed so the only setup needed for SAIF is 
/* set cpu DAI configuration */
 ret = snd_soc_dai_set_fmt(cpu_dai, dai_format);
       if (ret < 0)
             return ret;
My problem is, although i am receiving dma irqs when i record ( arecord -f S16_LE -r 8000 -c 1 <file>.wav), when i play the resulting file its just silence.
[ 5295.890000] dump @ mxs_saif_trigger
[ 5295.890000] scr 101  , 107
[ 5295.890000] stat 80010041    , 80010071
[ 5295.890000] data 0   , ffffffff
[ 5295.890000] version 1010000  , 1010000
This  is a dump for arecord!
Do you have any ideeas?