各位好:
我这个音频问题,困扰了好多天了,一直得不到解决,就是我们接的是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的驱动应该就可以正常工作,你具体改了哪些驱动文件呢?另外是否可以把打印语句去掉一些试试呢?
TI中文支持网