Linux ALSA驱动框架(五)--ASoC架构中的Machine
(1) ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作。 ASoC的一切都从Machine驱动开始,包括声卡的注册,绑定Platform和Codec驱动等等,下面就让我们从Machine驱动开始讨论吧。 (1) arch/mips/xburst/soc-x1630/common/platform.c }; &pd_x1830_audio_i2s_ops , }; }; { } }; module_platform_driver(snd_pd_x1830_audio_driver); 通过snd_soc_card结构,又引出了Machine驱动的另外两个个数据结构: 其中,snd_soc_dai_link中,指定了Platform、Codec、codec_dai、cpu_dai的名字,稍后Machine驱动将会利用这些名字去匹配已经在系统中注册的platform,codec,dai