高通-音频驱动程序

\kernel\sound\core\control.c

\kernel\sound\core\

\kernel\sound\soc\codecs\Msm8x16-wcd.c

高通-音频驱动程序_第1张图片

从上往下的大致流程:

amixer-用户层  

  |->snd_ctl_ioctl-系统调用  

       |->snd_ctl_elem_write_user-内核钩子函数  

            |->snd_ctl_elem_wirte-  

                 |->snd_ctl_find_id-遍历kcontrol链表找到与给定id相匹配的kctl  

                 |->kctl->put()-调用kctl的成员函数put()  

                      |->snd_soc_put_volsw

modem重启了的代码:\kernel\drivers\soc\qcom\smd.c

高通-音频驱动程序_第2张图片

起始ioctl:\kernel\sound\core\control_compat.c

高通-音频驱动程序_第3张图片

snd_ctl_elem_write_user_compat >> snd_ctl_elem_write >> result = kctl->put(kctl, control);

ADC1 Volume函数get put设置\kernel\sound\soc\codecs\msm8x16-wcd.c

高通-音频驱动程序_第4张图片

高通-音频驱动程序_第5张图片

最终读写寄存器函数:\kernel\sound\soc\soc-core.c

高通-音频驱动程序_第6张图片

更往上:\kernel\sound\core\control.c:

高通-音频驱动程序_第7张图片

创建的设备文件: dev/snd/controlC0

解析dts:\kernel\sound\soc\msm\msm8x16.c

你可能感兴趣的:(音频)