Linux ALSA声卡驱动之二:音频设备与驱动的衔接、注册

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

猜你喜欢

转载自blog.csdn.net/moonlinux20704/article/details/88354115