--
一:alsa kernel部分主要提供两个东西
①controlC* 一般只有controlC0
②pcmC*D*p/c 23个cpm,C* card;D* device;p/c p:play back(播放)c:capture(录音);
b3680:/ # cd dev/snd/ b3680:/dev/snd # ls -l total 0 crw-rw---- 1 system audio 14, 12 2016-12-04 01:03 adsp crw-rw---- 1 system audio 14, 4 2016-12-04 01:03 audio crw-rw---- 1 system audio 116, 36 2016-12-04 01:03 comprC0D23 crw-rw---- 1 system audio 116, 2 2016-12-04 01:03 controlC0 crw-rw---- 1 system audio 14, 3 2016-12-04 01:03 dsp crw-rw---- 1 system audio 14, 0 2016-12-04 01:03 mixer crw-rw---- 1 system audio 116, 3 2016-12-04 01:03 pcmC0D0p crw-rw---- 1 system audio 116, 19 2016-12-04 01:03 pcmC0D10p crw-rw---- 1 system audio 116, 20 2016-12-04 01:03 pcmC0D11p crw-rw---- 1 system audio 116, 21 2016-12-04 01:03 pcmC0D12c crw-rw---- 1 system audio 116, 22 2016-12-04 01:03 pcmC0D13c crw-rw---- 1 system audio 116, 23 2016-12-04 01:03 pcmC0D14p crw-rw---- 1 system audio 116, 24 2016-12-04 01:03 pcmC0D15c crw-rw---- 1 system audio 116, 25 2016-12-04 01:03 pcmC0D16c crw-rw---- 1 system audio 116, 27 2016-12-04 01:03 pcmC0D17c crw-rw---- 1 system audio 116, 26 2016-12-04 01:03 pcmC0D17p crw-rw---- 1 system audio 116, 28 2016-12-04 01:03 pcmC0D18p crw-rw---- 1 system audio 116, 29 2016-12-04 01:03 pcmC0D19p crw-rw---- 1 system audio 116, 4 2016-12-04 01:03 pcmC0D1c crw-rw---- 1 system audio 116, 30 2016-12-04 01:03 pcmC0D20p crw-rw---- 1 system audio 116, 31 2016-12-04 01:03 pcmC0D21p crw-rw---- 1 system audio 116, 34 2016-12-04 01:03 pcmC0D22c crw-rw---- 1 system audio 116, 35 2016-12-04 01:03 pcmC0D24p crw-rw---- 1 system audio 116, 6 2016-12-04 01:03 pcmC0D2c crw-rw---- 1 system audio 116, 5 2016-12-04 01:03 pcmC0D2p crw-rw---- 1 system audio 116, 8 2016-12-04 01:03 pcmC0D3c crw-rw---- 1 system audio 116, 7 2016-12-04 01:03 pcmC0D3p crw-rw---- 1 system audio 116, 10 2016-12-04 01:03 pcmC0D4c crw-rw---- 1 system audio 116, 9 2016-12-04 01:03 pcmC0D4p crw-rw---- 1 system audio 116, 12 2016-12-04 01:03 pcmC0D5c crw-rw---- 1 system audio 116, 11 2016-12-04 01:03 pcmC0D5p crw-rw---- 1 system audio 116, 14 2016-12-04 01:03 pcmC0D6c crw-rw---- 1 system audio 116, 13 2016-12-04 01:03 pcmC0D6p crw-rw---- 1 system audio 116, 16 2016-12-04 01:03 pcmC0D7c crw-rw---- 1 system audio 116, 15 2016-12-04 01:03 pcmC0D7p crw-rw---- 1 system audio 116, 17 2016-12-04 01:03 pcmC0D8p crw-rw---- 1 system audio 116, 18 2016-12-04 01:03 pcmC0D9c crw-rw---- 1 system audio 116, 1 2016-12-04 01:03 seq crw-rw---- 1 system audio 14, 1 2016-12-04 01:03 sequencer crw-rw---- 1 system audio 14, 8 2016-12-04 01:03 sequencer2 crw-rw---- 1 system audio 116, 33 2016-12-04 01:03 timer b3680:/dev/snd #
二:kernel部分代码组成
五部分:
01:platform: 一般是指某一个SoC平台,比如MT6582, MT6595, MT6752等等,与音频相关的通常包含该SoC中的Clock、FAE、I2S、DMA等等
02:platform_dai(cpu_dai):连接platform和machine;
03:codec:字面上的意思就是编解码器,Codec里面包含了I2S接口、DAC、ADC、Mixer、PA(功放),通常包含多种输入(Mic、Line-in、I2S、PCM)和多个输出(耳机、喇叭、听筒,Line-out),Codec和Platform一样,是可重用的部件;
04:codec_dai:连接codec和machine;
05:machine:连接platform,coedec;
三:platform(pcm)注册流程
对于mt6737平台用 /kernel-3.18/sound$ vi soc/mediatek/mt_soc_audio_v3/目录下文件,如下pcm相关代码:
lynn.feng:~/project/Git/i6168/kernel-3.18/sound$ vi soc/mediatek/mt_soc_audio_v3/mt_soc_pcm_ mt_soc_pcm_bt_dai.c mt_soc_pcm_dl1_bt.c mt_soc_pcm_fm_i2s_awb.c mt_soc_pcm_mrgrx_awb.c mt_soc_pcm_voice_md2_bt.c mt_soc_pcm_capture2.c mt_soc_pcm_dl1.c mt_soc_pcm_fm_i2s.c mt_soc_pcm_mrgrx.c mt_soc_pcm_voice_md2.c mt_soc_pcm_capture.c mt_soc_pcm_dl1_i2s0.c mt_soc_pcm_fmtx.c mt_soc_pcm_routing.c mt_soc_pcm_common.c mt_soc_pcm_dl1_i2s0Dl1.c mt_soc_pcm_hdmi.c mt_soc_pcm_uldlloopback.c mt_soc_pcm_common.h mt_soc_pcm_dl2.c mt_soc_pcm_hp_impedance.c mt_soc_pcm_voice_md1_bt.c mt_soc_pcm_dl1_awb.c mt_soc_pcm_dummy.c mt_soc_pcm_i2s0_awb.c mt_soc_pcm_voice_md1.c
以录音为例来分析:
soc/mediatek/mt_soc_audio_v3/mt_soc_pcm_capture.c
--
--
四
soc/mediatek/mt_soc_audio_v3/mt_soc_codec_63xx.c
--
原文:http://www.cnblogs.com/Ph-one/p/6718666.html