1、背景概述
本方案基本MT7628平臺,wm8960爲codecs,i2s總線播放,相關代碼隨後上傳,結合代碼進行分析會更清晰
2、設備註冊與驅動觸發
綜上所述,soc_mtk_i2s_dev、mt76xx_audio_device、soc_mtk_pcm_dev、設備掛載到platform平臺上,從而觸發mt76xx_i2s_driver、soc_driver、mt76xx_pcm_driver驅動程序的probe,註冊掛載相應的dai結構體,codec_wm8960則是掛載在i2c總線上,觸發wm8960_i2c_driver驅動程序的probe。mt76xx_i2s_dai結構體裏的ops是對cpu以及i2s的處理,即上一節說的cpu_dai,wm8960_dai結構體裏的ops是對codecs的處理,也就是上一節說的codec_dai,就是把模擬的音頻信號,轉化爲數字信號等一系列處理。mt76xx_soc_platform,就是上一節說的platform,就是而是按照一定的格式,一定的規則有序的進行傳輸等操作。而mt76xx_audio_device設備掛載,觸發soc_driver的probe則是一個重點,一個驅動初始化的入口,會初始化一系列動作,後面會詳細的解說。
3、源代碼以及文件分佈
在sound/soc/mtk/mt76xx_machine.c裏面,進行一系列platform_device註冊。
在sound/soc/mtk/mt76xx_i2s.c文件中,註冊驅動程序,在soc_mtk_i2s_dev註冊時通過"mt76xx-i2s"匹配執行相應probe
在sound/soc/mtk/mt76xx_pcm.c文件中,註冊驅動程序,在soc_mtk_pcm_dev註冊時通過"mt76xx-pcm"執行相應probe
在sound/soc/codecs/wm8960.c文件中,註冊驅動程序,在設備註冊時通過"wm8960"匹配執行相應probe
在sound/soc/soc-core.c文件中,註冊驅動程序,設備註冊時通過"soc-audio"匹配執行相應probe