platform会调用devm_snd_soc_register_component()进行组件注册,用于platform端的DAI配置。可参考rockchip_i2s.c
codec也会调用devm_snd_soc_register_component()进行组件注册,用于codec端的控制。可参考rt5651.c
machine会调用devm_snd_soc_register_card()进行卡片注册,用于将platform和codec联系起来。可参考rockchip_rt5645.c
另外,platform会通过rockchip_pcm_platform_register()调用devm_snd_dmaengine_pcm_register()进行PCM注册,同时传递DMA配置信息。可参考rockchip_pcm.c和soc-generic-dmaengine-pcm.c
为启动数据传输,会调用soc_pcm_trigger()并进一步调用snd_dmaengine_pcm_trigger()去使能dma,dma中断会执行callback函数dmaengine_pcm_dma_complete()。