Hello,
im using iMX35 and try to develop an audio device driver for Realtek AC97 Codec (ALC 5611) under Windows CE 6.0. I use a Wavedev2 driver (Freescale iMX35 3-Stack) for SGTL5000 Codec as basis. I changed SSI to operate in AC97 Mode (Fixed Mode of Operation) instead of I2S, changed AUDUX and implemented functions for Realtek Codec. I can read/write register to the codec via AC97 so far. But i cant implement an audiostream in Slot #3/#4 via SDMA.
Our hardware connection is the following: we use 4-wired connection between SSI and the Codec (Clock, Framesync, Tx, Rx). The Clock is coming from the coded to SSI, Framesync is coming from SSI to Codec. My question is: do i have to write to the "SSI Transmit Time Slot Mask Register" or not? No matter what i write into this register, the value differs and changes while transmission (read/write register of codec). If i want to use Slot #3 and Slot #4 to transmit audio data, i would expect to write a ~0x19 to that register, to set Slot #0, Slot #3 and Slot #4 valid. Is that right? If i want to do only read/write operation to codec in slot #2 / slot #3 i guess to write ~0x3 to this register. Please help me to get this figured out!
Kind regards,
Martin
Audio feature incorporates several modules to work together, they are DMA, SSI, AUDMUX, and audio CODEC
For AC97 codec
Registers setting | Functionality |
SCR: TE =1, RE = 1 , SSIEN=1 | Transmit/receive enable, SSI enable |
STCCR : WL =16 | 16 bit word length |
SRCCR : WL =16 | 16 bit word length |
SACNT : AC97EN=1, TIF =0, FV = 0 | Enable AC97 mode, fixed mode |
SFCSR : TFWM0 = 4, RFWM0 = 6 | Set Transmit/receive buffer depth |
SIER : RDMAE=1, TDMAE=1 | Enable DMA interrupt for transmit and receive |
Hope this helps