现在使用的自己开发DM368的板子,板子上有一个外接codec是TLV320AIC3101,而内核默认设置的codec是dm368内置的CQ93VC,我现在要使用外接的TLV320AIC3101,但是不知道该怎么从外部加载这个设备?原先尝试过在内核配置时把sound card support选为M,然后生成了一大堆的模块,有:
sound/soundcore.kosound/core/snd.kosound/core/snd-timer.kosound/core/snd-page-alloc.kosound/core/snd-pcm.kosound/soc/snd-soc-core.kosound/soc/codecs/snd-soc-tlv320aic3x.kosound/soc/davinci/snd-soc-davinci.kosound/soc/davinci/snd-soc-davinci-i2s.ko
(PS:加载I2S时,会出现这样的错误:
[ 140.522999] Error: Driver 'davinci-mcbsp' is already registered, aborting…
insmod: error inserting 'snd-soc-davinci-i2s.ko': -1 Device or resource busy
)sound/soc/davinci/snd-soc-evm.ko
但是依次加载完这些模块后,还是没有反应,在root权限下输入aplay -l时,提示aplay: device_list:240: no soundcards found… 求指导(PS:硬件没有问题)
另外,在网上看到有人在ARM11上也是加载外部的TLV320AIC3101,他也是把TLV320AIC3101编译成模块,但是他就只有两个模块,一个snd-soc-tlv320aic3x.ko和一个平台驱动模块snd-soc-aaa.ko,不像我这里生成了一大堆的模块,我到底是哪里弄错了,还是少了些其他操作?
kooking:
首先应该确保硬件是完好的,可以用CCS先测试一下硬件是不是通的,可以参考一下evm板,这个已经带了aic3101的测试程序:
http://support.spectrumdigital.com/boards/evmdm368/revg/
zhou jiang:
回复 kooking:
已经测过了,硬件是完好的
kooking:
回复 zhou jiang:
看下内核中I2C地址是否和硬件符合,menuconfig选项是不是已经选上了,至少应该有设备节点
zhou jiang:
回复 kooking:
在board-dm368-ipnc.c中添加的i2c board info
{ I2C_BOARD_INFO("tlv320aic3x", 0x18), },
然后menuconfig选项如下:
<M> Sound card support --->--- Sound card support <M> Advanced Linux Sound Architecture ---> < > Open Sound System (DEPRECATED) ---><M> ALSA for SoC audio support --->--- ALSA for SoC audio support <M> SoC Audio for the TI DAVINCI chip <M> SoC Audio support for DaVinci DM644 ,DM355 or DM365 EVM启动板子后,存在/dev/snd这个文件,文件底下包括controlC0 pcmC0D0c pcmC0D0p timer,但依次把生成的模块加载以后,就是没反应,输入 cat /proc/asound/devices33: : timer就只有这个 ,一直没搞清楚到底是什么问题