[i.MX] 关于wm8960移植过程中循环播放的问题

[复制链接]
1871|7
 楼主| axing896 发表于 2015-9-2 23:01 | 显示全部楼层 |阅读模式

参考[]community.freescale.com/docs/DOC-106295这篇**对wm8960的驱动进行了移植。在经过了一些寄存器的设置之后,wm8960已

经可以工作了,有声音播放,不过现在有个问题,当循环播放到多次的时候,差不多11次开始出现问题,从sheel显示

asoc: platform imx-pcm-audio.1 hw params failed

HW_PARAMS failed: -22的信息,声音就不再播放了。

对问题进行跟踪,发现问题已经在sound/soc/soc-core.c文件的static int soc_pcm_hw_params(struct snd_pcm_substream *substream,

struct snd_pcm_hw_params *params)函数里

if (platform->driver->ops && platform->driver->ops->hw_params) {
ret = platform->driver->ops->hw_params(substream, params);
if (ret < 0) {
printk(KERN_ERR "asoc: platform %s hw params failed\n",
platform->name);
goto platform_err;
}
},再继 续对问题进行跟踪,问题定位在sound/soc/imx/imx-pcm-dma-mx2.c文件中static int imx_ssi_dma_alloc(struct

snd_pcm_substream *substream,
    struct snd_pcm_hw_params *params)函数中

iprtd->dma_chan = dma_request_channel(mask, filter, iprtd);
if (!iprtd->dma_chan)

  return -EINVAL;

处。

大家有遇到类似问题的么?


ccw1986 发表于 2015-9-3 21:55 | 显示全部楼层
是不是不能提取文件了呢
小狗爱吃骨头 发表于 2015-9-4 19:38 | 显示全部楼层
没有遇到过这样的问题,帮楼主顶一下
 楼主| axing896 发表于 2015-9-5 18:49 来自手机 | 显示全部楼层
应该是能提取文件,用usb的声卡就能一直播放,应该是能读取文件
mini1986 发表于 2015-9-6 10:09 | 显示全部楼层
“iprtd->dma_chan = dma_request_channel(mask, filter, iprtd);”
DMA是个比较麻烦的东西,你得好好研究研究了......
看上去是一直在申请DMA,是不是没有释放DMA呢......
 楼主| axing896 发表于 2015-9-8 19:39 来自手机 | 显示全部楼层
对问题进行跟踪,发现每一次打开音频的时候,分配了四次dma通道,但是每次关闭的时候只关闭一次,也许这就是问题所在
mini1986 发表于 2015-9-10 11:06 | 显示全部楼层
好好看看DMA这块,到时候分享下经验吧......
 楼主| axing896 发表于 2015-9-29 19:59 来自手机 | 显示全部楼层
问题解决了,是播放器软件的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

17

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部