TI中文支持网
TI专业的中文技术问题搜集分享网站

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

Jian Zhou:

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

qun zhou:

回复 Jian Zhou:

周工您好:

   今天贵公司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我想问下这个在哪里修改呢?

Jian Zhou:

回复 qun zhou:

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

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

qun zhou:

回复 Jian Zhou:

周工您好:

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

AmonWu:

回复 Jian Zhou:

遇到同样问题,

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

qun zhou:

回复 Jian Zhou:

周工您好:

  就是今天我重新整理下发现,当初我删了一些东西不知道有没有影响,就是把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.

Jian Zhou:

回复 qun zhou:

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

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

qun zhou:

回复 Jian Zhou:

周工您好:

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

qun zhou:

回复 Jian Zhou:

周工您好:

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

omap_i2c omap_i2c.3: Arbitration lostomap_i2c omap_i2c.3: Arbitration lostomap_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_pointeraplay: pcm_write[   59.243591] +++++++++zhouqun:davinci_pcm_trigger:1710: write err[   59.249603] ++++++++zhouqun:aic3x_muteor: Input/output[   59.255767] +++++zhouqun:davinci_pcm_close error

Jian Zhou:

回复 qun zhou:

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

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

赞(0)
未经允许不得转载:TI中文支持网 » Ti tlvaic3104音频芯片基于AM335X(sdk6.0)配置问题
分享到: 更多 (0)