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
dai_format = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_IB_NF |
/* set cpu DAI configuration */
ret = snd_soc_dai_set_fmt(cpu_dai, dai_format);
if (ret < 0)
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?