忆声卡

声卡驱动是好久之前看的,因为最近需要跟进wm9714连接pcm voice card的问题,所以又回头审视了下。做个小节如下。

 

声卡的驱动主要干两件事:和上级搞好关系与和底层搞好关系。

 

但是声卡的上下层有些特殊,声卡的上层,阶级制度森严,是大名顶顶的alsa。alsa那写的可不是一般的好啊,好的代码都有个特点,看不太懂,一般的接口规范就是几个ioctl调用下来,alsa确实ioctl套ioctl,我映像最深的就是一堆ITEM。所以呢,sound目录下core里面的很多代码,都是用来保证alsa接口的,什么ioctl.c, compat_ioctl.c,大家看不懂就别看了。以后再看。

 

那么和底层的接口,主要就是soc目录中几个文件的内容。这几个文件讲了这么几件事:machine是什么(主要就是将cpu和codec的音频特称,主要是围绕着流来说的),platform是什么(主要就是讲pcm相关东西,这就是和具体的pcm控制器相关的知识),codec是什么(主要是讲codec的一些特性)。

 

我们主要就是从应用上来讲控制过程。首先是open(包括 clock enabe ,中断的申请, DMA 所需要的空间, 设置 channel ,格式,频率范围等等) ,open完后是param设置(主要是格式的设置,还有hw_ptr函数 ),然后是prepare(主要是codec初始化,还有power on也会牵涉到dapm),最后是write(由trigger触发,把数据拷回用户区)。

 

另外还有amixer的控制过程,通过调用/dev下的设备节点,调用kctl->put(kctl, control), 再调用snd_ctl_elem_write,实际上在这中间implement了dapm的作用。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值