IMX6 wm8960 驱动调试记录

最近在调试wm8960, 在此记录一下。

ALSA 架构下,imx6平台的wm8960驱动支持两种模式。

 

codec-master

在codec-master模式下,由芯片旁的晶振提供mclk时钟(我用的是24m),wm8960输出bclk时钟给cpu

 

codec-slave

在codec-slave模式下,由cpu输出mclk时钟(我用的是24m),bclk时钟给wm8960.

 

 

在两种模式的切换时,有个坑,在imx6内部有个音频路由模块audmux,默认的代码只用于codec-slave模式

...
   ret = imx_audmux_v2_configure_port(int_port,
            IMX_AUDMUX_V2_PTCR_SYN |
            IMX_AUDMUX_V2_PTCR_TFSEL(ext_port) |
            IMX_AUDMUX_V2_PTCR_TCSEL(ext_port) |
            IMX_AUDMUX_V2_PTCR_TFSDIR |
            IMX_AUDMUX_V2_PTCR_TCLKDIR,
            IMX_AUDMUX_V2_PDCR_RXDSEL(ext_port));
...

 

请将ext_port 和int_port的位置交换,才能用于codec-master模式。修改为:

...
   ret = imx_audmux_v2_configure_port(ext_port,
            IMX_AUDMUX_V2_PTCR_SYN |
            IMX_AUDMUX_V2_PTCR_TFSEL(int_port) |
            IMX_AUDMUX_V2_PTCR_TCSEL(int_port) |
            IMX_AUDMUX_V2_PTCR_TFSDIR |
            IMX_AUDMUX_V2_PTCR_TCLKDIR,
            IMX_AUDMUX_V2_PDCR_RXDSEL(int_port));
...

 

你可能感兴趣的:(linux驱动)