AnsweredAssumed Answered

i.mx28 audio works unexpected. Audio data can not be sent to I2S's FIFOs from DMA module.

Question asked by zheng fudi on Aug 7, 2012
Latest reply on Jan 24, 2013 by PeterChan

Hi.I've got a problem with playing audio in i.mx28 EVK.Would anyone help me?Thanks.

Details showed follow:

Issue Details

Reproducibility:Sometimes
Steps to Reproduce:

Loop to playback a small sound file(such as a WAV with 3 seconds).For example,execute shell script bellow:

#!/bin/sh

while :

do

echo "aplay again..."

aplay test.wav  #play a small audio file which hold  3 seconds.

done

Expected Result:The audio should work without trouble forever.
Observed Result:After repeat-playing for some times(maybe several hours or more),the "aplay" would be blocked.Then,neither re-executing "aplay" nor reloading audio-related drivers(alsa driver,sgtl5000,DAI,DMA,and so on.. ) can solve this problem until reboot the system.
Subject:i.mx28 audio works unexpected. Audio data can not be sent to I2S's FIFOs from DMA module.
Description:We have approved that: the problem takes because of data in DMA module can not be sent to I2S's FIFOs(Note that,we wrote audio data directly to HW_SAIF_DATA after problem appeared,the audio data was sent to sgtl5000 immediately ).When problem appeared,we record the registers value as follow:
HW_APBX_CTRL1 = 0x00500000
HW_APBX_CTRL2 = 0x0
HW_APBX_CH4_CURCMDAR = 0x40c0a3c0
HW_APBX_CH4_NXTCMDAR = 0x40c0a360
HW_APBX_CH4_CMD = 0x2000000e
HW_APBX_CH4_BAR = 0x40c20020
HW_APBX_CH4_SEMA = 0x00010000
HW_APBX_CH4_DBG1 = 0x0160000d
HW_APBX_CH4_DBG2 = 0x20001fe0

HW_SAIF_CTRL = 0x08000801
HW_SAIF_STAT = 0x80000050
HW_SAIF_DATA = 0x0
HW_SAIF_VER = 0x01010000

Oh,God. My poor English!!!

Outcomes