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.

Ti tlvaic3104音频芯片基于AM335X(sdk6.0)配置问题



各位好:

  我这个音频问题,困扰了好多天了,一直得不到解决,就是我们接的是i2c2,macasp0,这部分代码已经修改好了,并且通过启动的log也能看出来识别了,

现在通过aplay播放音乐的时候出现错误,log在下面:

log:

root@am335x-evm:/test# aplay 123.wav
[   34.629730] +++++++++zhouqun:davinci_mcasp_startup
[   34.635009] ++++++++zhouqun:davinci_pcm_open
[   34.639556] +++++++zhouqun:allocate_sram
[   34.643768] ++++++++zhouqun:davinci_pcm_dma_request
Playing WAVE '123.wav' : Signed 16 bit Little Endian, Rate 44100[   34.672454] ++++++++zhouqun :davinci_mcasp_set_dai_fmt
 Hz, Stereo
[   34.678131] +++++++=zhouqun:daifmt :1000d++++++++++davinci_mcasp_hw_params
[   34.687744] ++++++++++++zhouqun :davinci_hw_common_param
[   34.693450] ++++++++zhouqun :davinci_hw_param
[   34.698059] +++++zhouqun :davinci_config_channel_size
[   34.703460] +++++++zhouqun:davinci_pcm_hw_params
[   34.753753] +++++++++zhouqun:davinci_pcm_prepare
[   34.758728] ++++++zhouqun:davinci_pcm_enqueue_dma
[   34.763854] ++++++zhouqun:davinci_pcm_enqueue_dma
[   34.769897] +++++++++zhouqun:aic3x_set_power
[   34.810546] +++++++zhouqun:davinci_pcm_trigger
[   34.815307] +++++++++zhouqun:pcm_cmd = 1
[   34.819488] ++++++++++++zhouqun:davinci_mcasp_trigger
[   34.824829] +++++++++zhouqun:mcasp_cmd = 1
[   34.829193] +++++++++zhouuqn :davinci_mcasp_start
[   34.834167] ++++++++++zhouqun:mcasp_start_tx
[   34.838684] ++++++++zhouqun:mcasp_set_ctl_reg
[   34.843322] +++++++++zhouqun:(mcasp_get_reg(regs) & val
[   34.848846] ++++++++zhouqun:mcasp_set_ctl_reg
[   34.853485] +++++++++zhouqun:(mcasp_get_reg(regs) & val
[   34.859008] ++++++++zhouqun:mcasp_set_ctl_reg
[   34.863616] +++++++++zhouqun:(mcasp_get_reg(regs) & val
[   34.869171] ++++++++zhouqun:mcasp_set_ctl_reg
[   34.873779] +++++++++zhouqun:(mcasp_get_reg(regs) & val
[   34.879302] ++++++++zhouqun:mcasp_set_ctl_reg
[   34.883911] +++++++++zhouqun:(mcasp_get_reg(regs) & val
[   35.073608] +++++zhouqun:davinci_pcm_pointer
aplay: pcm_write[   45.073883] +++++++zhouqun:davinci_pcm_trigger
[   45.079589] +++++++++zhouqun:pcm_cmd = 0
[   45.083740] ++++++++++++zhouqun:davinci_mcasp_trigger
[   45.089111] +++++++++zhouqun:mcasp_cmd = 0
[   45.093475] ++++++++++++====zhouqun :davinci_mcasp_stop
[   45.099029] ++++++++++++zhouqun: mcasp_stop_tx
:1710: write error: Input/output[   45.105255] +++++++zhouqun:davinci_pcm_hw_free
 error
[   45.111419] +++++++zhouqun:davinci_pcm_hw_free
[   45.118316] +++++++++++zhouqun:davinci_pcm_close
root@am335x-evm:/test# [   50.125305] +++++++++zhouqun:aic3x_set_power

  • 根据你的log信息,应该是PCM的某个执行函数返回错误值了,能不能具体再定位下?

  • 周工您好:

       今天贵公司FAE也过来看过问题了了,说问题在am335x这边,这边问题也定位了就是AM335X这边发送数据发布出去,主要在这个函数davinci_pcm_trigger这边,case SNDRV_PCM_TRIGGER_PAUSE_PUSH:  

                 edma_pause(prtd->asp_channel);
                 break;

    两次轮训都是CMD = 0,后来就如LOG所示停止发送了,aplay: pcm_write[  122.028686] +++++++zhouqun:davinci_pcm_trigger
    [  122.034301] +++++++++zhouqun:pcm_cmd = 0
    [  122.038452] ++++++++++++zhouqun:davinci_mcasp_trigger
    [  122.043762] +++++++++zhouqun:mcasp_cmd = 0
    [  122.048065] ++++++++++++====zhouqun :davinci_mcasp_stop
    [  122.053558] ++++++++++++zhouqun: mcasp_stop_tx

    我想问下这个在哪里修改呢?

  • 3104和我们demo板的3106应该差不多吧,可以找个我们的demo板,比如SKEVM,同样的驱动打印信息,一比较就更容易定位问题出在哪里了。

    感觉像是DMA传输的问题,能否把DMA每次传输的数据改小些。

  • 周工您好:

        请问这个DMA数据调小在哪里啊?为什么其他人这边的驱动一点问题没有呢?麻烦您了。

  • 遇到同样问题,

    请问哪一个demo板,有没有链接?

  • 周工您好:

      就是今天我重新整理下发现,当初我删了一些东西不知道有没有影响,就是把TLVaic3x.c中关于rehular的全部删除了,为什么删除这个是因为出现下面这个log,网上有人提示删除的,请问这样做对吗?

     tlv320aic3x-codec 3-0018: Failed to get supply 'IOVDD': -19
    [    1.587707] tlv320aic3x-codec 3-0018: Failed to request supplies: -19
    [    1.594573] tlv320aic3x-codec 3-0018: asoc: failed to probe CODEC tlv320aic3x-codec.3-0018: -19
    [    1.603912] asoc: failed to instantiate card AM335X EVM: -19
    [    1.609985] ALSA device list:
    [    1.613159]   No soundcards found.

  • 你的初始化代码是beaglebone black还是EVM?

    把这个函数去掉试试:regulator_has_full_constraints();

  • 周工您好:

        我们的板子是bb black,regulator_has_full_constraints这个函数TLVAIC3X.C中没有这个函数啊,不过我把文件中所有关于regulator的部分都删除掉了,就能往下面执行了,并且能出现alsa list了,不知道这么改到底对不对?麻烦您看下额。

  • 周工您好:

       regulator_has_full_constraints这个函数删除之后,IOVDD这些错误是解决了,可是播放音乐的时候,还是出现了错误,log如下帮忙看下额,谢谢额。

    omap_i2c omap_i2c.3: Arbitration lost
    omap_i2c omap_i2c.3: Arbitration lost
    omap_i2c omap_i2c.3: Arbitration lost
     ++++++++zhouqun:aic3x_set_bias_level
     ++++++++zhouqun:aic3x_set_bias_level
     ++++++++zhouqun:aic3x_mute
    +++++++++zhouqun:davinci_pcm_trigger
    ++++++zhouqun:davinci_pcm_pointer
    aplay: pcm_write[   59.243591] +++++++++zhouqun:davinci_pcm_trigger
    :1710: write err[   59.249603] ++++++++zhouqun:aic3x_mute
    or: Input/output[   59.255767] +++++zhouqun:davinci_pcm_close
     error

  • 根据这个帖子:http://www.deyisupport.com/question_answer/dsp_arm/sitara_arm/f/25/t/87995.aspx

    3104和3106几乎没区别,我们SDK Linux自带的3106的驱动应该就可以正常工作,你具体改了哪些驱动文件呢?另外是否可以把打印语句去掉一些试试呢?