参考[]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;
处。
大家有遇到类似问题的么?
|