经过一段时间的调试,终于调好了TQ335x的声卡驱动。TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法。Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植。
ASoC是对ALSA驱动架构的进一步封装。ASoC将ALSA驱动中的各模块抽象为三部分:Platform、Codec和Machine。Platform主要是平台硬件驱动,包括SoC的IIS模块、DMA等,在本文中就是指AM335x的McASP模块及AM335x用于音频读写操作的EDMA。Codec是编解码芯片驱动,在本文中就是WM8960。Machine是用来描述单板音频系统连接关系的驱动,在本文中其作用是将WM8960与McASP绑定起来,注册声卡设备节点。由于3.17版本的内核已经带有TI维护的McASP驱动和Wolf公司维护的WM8960驱动,因此,原理上讲,我们只需要编写Machine部分,建立WM8960与McASP的连接关系即可。不幸的是Wolf对WM8960的维护不是太完善,还需要我们进一步修改。下面我们来