Hello!
I am developing driver for the TDM network of 8 DSPs now. That's why I configured SSI with 8 timeslots. I have problem with synchronizing DMA with SSI: start of the DMA chunk occupies random slot of SSI.
My sequence of configuration:
1. Configure DMA transfers (MXC_DMA_SSI2_8BIT_TX0 and MXC_DMA_SSI2_8BIT_RX0).
2. Configure SSI in network mode (8 timeslots, 8 bits, single bit FSYNC from external clock) for both RX and TX paths.
3. Enable SSI, because I need to produce FSYNC from external clock to initialize DSPs correctly.
4. Enable DMA transfers.
5. Enable RX and TX paths of SSI.
In spite of this sequecnce, I have no synchronization between DMA and SSI.
Can any one help me with my problem? May be someone have experience with same problem?
Solved! Go to Solution.
Hi Alexey,
AFAIK none of the codec drivers that use SSI interface enables TDM mode.
The SGTL5000 Linux driver is configured in Network mode; so is posible that this TDM mode has not been validated.
CS42888 codec uses ESAI interface, and the driver enabled TDM, and could serve you as reference for your needs, iMX6 Sabre Auto platforms supports CS42800 which has a 8 channel playback capability.
Can you explain a little more about the topology connection that you whant to acheive?
Regards
Adrian Alonso
Seems, my problem is very specific...
Does anyone encounter such problem with SGTL5000 driver (or other sound codec)? I think this problem can produce random channel mapping of stereo sound at system start: left channel can be right (and vise versa).
Unforunately, I can't reproduce this experiment on my custom board. Can anyone reproduce this situation or share experiences?
Hi Alexey,
AFAIK none of the codec drivers that use SSI interface enables TDM mode.
The SGTL5000 Linux driver is configured in Network mode; so is posible that this TDM mode has not been validated.
CS42888 codec uses ESAI interface, and the driver enabled TDM, and could serve you as reference for your needs, iMX6 Sabre Auto platforms supports CS42800 which has a 8 channel playback capability.
Can you explain a little more about the topology connection that you whant to acheive?
Regards
Adrian Alonso
Hi, Adrian!
Thank's for your reply!
I have been solved my problem. There were no problem with DMA and SSI synchronization or SSI configuration. My problem was in short DMA periods (1ms) and further activity in the driver, which blocks interrupts. That's why I observed random offset in frame.
The most of activities were printk to serial console. I thought that printk must use DMA, and that's why can't block interrupts for a long time, but seems it is not so.
Hi Alexey,
I seem to have the same problem as you did with the random offset. For me however it does not seem to be connected to printk. Did you find any other problems related to this?
Thanks,
Marcus
Hi there Alexey,
did you ever get multi-channels working in linux with the SSI in network mode? any chance you can share what you did to make it all work?
Thanks,
-Caleb
hi all,
i am trying to use imx-ssi in network mode to capture 6 channel audio
1. ssi is slave
2. no TX using only RX
3. using single FIFO
4. input is 8 channel 32bits per channel 48khz constant (bclk is 32*8*48khz = 12.228MHz)
5. need to capture/store 6 channels out of it (16 bit per sample)
the register settings for above requirement is (using ssi2)
scr 408
srcr 280
srccr e80
srmsk ffffffc0
sfcsr 660066
but my arecord throwing error as below
arecord: pcm_read:2039:
read error: Input/output error
please help me in solving, what is wrong in my settings ?
did anybody tested ssi in network mode for capture ?
regards
Nagendra
Hi there Alexey,
did you ever get multi-channels working in linux with the SSI in network mode? any chance you can share what you did to make it all work?
Thanks,
-Caleb
Hi Alexey,
I am working on to writing codes to make SSI working on Network mode, but as Adrian said, there is no sample codes for the reference, could you please share parts of your codes for how to program SSI to network mode :smileyhappy:
Thank you very much.