打印
[i.MX]

关于wm8960移植过程中循环播放的问题

[复制链接]
1490|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的声卡就能一直播放,应该是能读取文件

使用特权

评论回复
5
mini1986| | 2015-9-6 10:09 | 只看该作者
“iprtd->dma_chan = dma_request_channel(mask, filter, iprtd);”
DMA是个比较麻烦的东西,你得好好研究研究了......
看上去是一直在申请DMA,是不是没有释放DMA呢......

使用特权

评论回复
6
axing896|  楼主 | 2015-9-8 19:39 | 只看该作者
对问题进行跟踪,发现每一次打开音频的时候,分配了四次dma通道,但是每次关闭的时候只关闭一次,也许这就是问题所在

使用特权

评论回复
7
mini1986| | 2015-9-10 11:06 | 只看该作者
好好看看DMA这块,到时候分享下经验吧......

使用特权

评论回复
8
axing896|  楼主 | 2015-9-29 19:59 | 只看该作者
问题解决了,是播放器软件的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

17

帖子

0

粉丝