This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SK-AM62A-LP: Persistent DMA Teardown Timeout Errors during Audio Recording

Part Number: SK-AM62A-LP

Tool/software:

Dear TI Support Team,

I am experiencing persistent issues with DMA teardown timeouts on my AM62A EVM during audio recording. Despite following various troubleshooting steps, including upgrading to SDK 9.02 and applying recommended patches, the problem remains unresolved. The DMA controller consistently fails to teardown channels after audio recording sessions, leading to errors and failed recordings.

In this post, I will provide detailed information about the configuration, the steps I have taken, the responses I have observed, and the diagnostic messages I have gathered. Your assistance in resolving this issue would be greatly appreciated.

Configuration Details

  • SDK Version: 9.02
  • Board : SK-AM62A-LP

Steps Taken and Responses

Initial Commands and Responses

  1. Recording Audio: 

    arecord -D hw:0,0 -f S16_LE -c 2 -r 44100 -d 10 test_stereo.wav

    Response:

    Recording WAVE 'test_stereo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    
    [  214.944940] ti-udma 485c0100.dma-controller: chan2 teardown timeout!

  2. Listing Capture Devices:

    arecord -l


    Response:

    **** List of CAPTURE Hardware Devices ****
    
    card 0: AM62AxSKEVM [AM62Ax-SKEVM], device 0: davinci-mcasp.0-tlv320aic3x-hifi tlv320aic3x-hifi-0 [davinci-mcasp.0-tlv320aic3x-hifi tlv320aic3x-hifi-0]
    
      Subdevices: 1/1
    
      Subdevice #0: subdevice #0

    ____________________________________________________________________________


    Checking ALSA Mixer Settings:

    alsamixer
    
    
    amixer -c 0 cset numid=71 on
    
    amixer -c 0 cset numid=70 on
    
    amixer -c 0 cset numid=64 on
    
    amixer -c 0 cset numid=65 on

    Response:

    numid=71,iface=MIXER,name='Right PGA Mixer Mic3R Switch'
    
    ; type=BOOLEAN,access=rw------,values=1
    
    : values=on
    
    numid=70,iface=MIXER,name='Right PGA Mixer Mic3L Switch'
    
    ; type=BOOLEAN,access=rw------,values=1
    
    : values=on
    
    numid=64,iface=MIXER,name='Left PGA Mixer Mic3L Switch'
    
    ; type=BOOLEAN,access=rw------,values=1
    
    : values=on
    
    numid=65,iface=MIXER,name='Left PGA Mixer Mic3R Switch'
    
    ; type=BOOLEAN,access=rw------,values=1
    
    : values=on

    ____________________________________________________________________________

    Adjusting Buffer and Period Sizes

    Recording with Increased Buffer Size:

    Response:

    Recording WAVE 'test_stereo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
    
    [  344.480552] ti-udma 485c0100.dma-controller: chan2 teardown timeout!

    ____________________________________________________________________________


    Recording with Lower Sample Rate:

    arecord -D hw:0,0 -f S16_LE -c 2 -r 22050 -d 10 test_stereo.wav

    Response:

    Recording WAVE 'test_stereo.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
    
    [  450.784277] ti-udma 485c0100.dma-controller: chan2 teardown timeout!

    ____________________________________________________________________________

    Checking I2C Configuration

    Detecting I2C Devices:

    i2cdetect -y 1

    Response:

    Warning: Can't use SMBus Quick Write command, will skip some addresses
    
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    
    00:
    
    10:
    
    20:
    
    30: -- -- -- -- -- -- -- --
    
    40:
    
    50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
    
    60:
    
    70:

    ____________________________________________________________________________


    Checking I2C Kernel Messages:

    dmesg | grep -i i2c

    Response:

    [    0.978538] i2c_dev: i2c /dev entries driver
    
    [    1.030901] i2c 0-0048: Fixed dependency cycle(s) with /bus@f0000/i2c@20000000/pmic@48/regulators/buck5
    
    [    1.031078] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    
    [    1.046936] omap_i2c 20010000.i2c: bus 1 rev0.12 at 100 kHz
    
    [    1.047786] omap_i2c 20020000.i2c: bus 2 rev0.12 at 400 kHz
    
    [    4.439992] i2c i2c-1: Added multiplexed i2c bus 3

    ____________________________________________________________________________


    Checking DMA Configuration

    Checking DMA Kernel Messages:

    dmesg | grep -i dma

    Response:

    [    0.000000] OF: reserved mem: initialized node linux,cma, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000099800000, size 1 MiB
    
    [    0.000000] OF: reserved mem: initialized node c7x-dma-memory@99800000, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000099900000, size 30 MiB
    
    [    0.000000] OF: reserved mem: initialized node c7x-memory@99900000, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b800000, size 1 MiB
    
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9b800000, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009b900000, size 15 MiB
    
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9b900000, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 1 MiB
    
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9c800000, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c900000, size 30 MiB
    
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9c900000, compatible id ared-dma-pool
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 32 MiB
    
    [    0.000000] OF: reserved mem: initialized node edgeai-dma-memory@a1000000, compatible id ared-dma-pool
    
    [    0.000000] OF: reserved mem: initialized node edgeai_ared-memories, compatible id dma-heap-carveout
    
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000ae000000, size 288 MiB
    
    [    0.000000] OF: reserved mem: initialized node edgeai-core-heap-memory@ae000000, compatible id ared-dma-pool
    
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    
    [    0.000000]   DMA32    empty
    
    [    0.000000] On node 0, zone DMA: 1 pages in unavailable ranges
    
    [    0.813226] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
    
    [    0.813405] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    
    [    0.813578] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    
    [    0.838909] iommu: DMA domain TLB invalidation policy: strict mode
    
    [    1.049861] ti-udma 485c0100.dma-controller: Number of rings: 82
    
    [    1.052216] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
    
    [    1.054991] ti-udma 485c0000.dma-controller: Number of rings: 150
    
    [    1.059302] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
    
    [    1.061394] ti-udma 4e230000.dma-controller: Number of rings: 6
    
    [    1.061885] ti-udma 4e230000.dma-controller: Channels: 6 (bchan: 0, tchan: 0, rchan: 6)
    
    [  214.944940] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [  344.480552] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [  450.784277] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [  477.024211] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [18367.492766] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [18397.252506] ti-udma 485c0100.dma-controller: chan1 teardown timeout!
    
    ________________________________________________________________

    ____________


    Checking Specific ti-udma Messages:

    dmesg | grep -i ti-udma

    Response:

    [    1.049861] ti-udma 485c0100.dma-controller: Number of rings: 82
    
    [    1.052216] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
    
    [    1.054991] ti-udma 485c0000.dma-controller: Number of rings: 150
    
    [    1.059302] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
    
    [    1.061394] ti-udma 4e230000.dma-controller: Number of rings: 6
    
    [    1.061885] ti-udma 4e230000.dma-controller: Channels: 6 (bchan: 0, tchan: 0, rchan: 6)
    
    [  214.944940] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [  344.480552] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [  450.784277] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [  477.024211] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [18367.492766] ti-udma 485c0100.dma-controller: chan2 teardown timeout!
    
    [18397.252506] ti-udma 485c0100.dma-controller: chan1 teardown timeout!