ASoC中的Platform驱动分为两个部分:snd_soc_platform_driver和snd_soc_dai_driver。而platform_driver则负责管理音频数据,把音频数据通过DMA传送至cpu dai中。注册声卡驱动时候,DMA驱动需要预先设置DMA一致性以及申请playback和capture所需的DMA Buffer。像snd_pcm_ops中的open、hw_params函数是在应用程序进行open("/dev/snd/pcmC0D0p")时,会进行调用。而trigger函数是应用程序进行放音或者录音的时候会调到,即write/read操作时候。下图简要列出该流程:
