我正在尝试为我的PCI声卡创建一个简单的驱动程序,我将在其中使用ALSA API。当然,我遇到了一个问题:我不能让我的司机工作。
所以这里有一些细节:
正如我所说,我的声卡是PCI设备。为了启动我的驱动程序,我不得不停止原来运行的snd_intel8x0驱动程序,因为它占用了设备并且无法访问(我的驱动程序的探测功能从未执行过)。所以我将snd_intel8x0驱动程序列入黑名单(在/etc/modporbe.d/blacklist.conf中添加了一行)。 从此刻起,我的驱动程序就可以启动了 - 探测功能已经启动。
不幸的是,当snd_intel8x0驱动程序被列入黑名单时,ALSA api似乎也消失了。我观察到以下内容:
[...] alsa:未知符号snd_card_register(错误0)
[...] alsa:未知符号snd_card_create(错误0)
[...] alsa:未知符号snd_card_free(错误0)
[...] alsa:未知符号snd_device_new(错误0)
在文件/ proc / kallsyms中没有snd *符号(如果原始驱动程序snd_intel8x0正在运行,所有上述snd *函数都在/ proc / kallsyms中可用)
有文件夹/ proc / asound(如果snd_intel8x0正在运行asound文件夹)
所以我的问题:
如何让我的PCI声卡使用我的驱动程序而不是snd_intel8x0?
如何为我的驱动程序提供ALSA?
一般情况下:为什么当snd_intel8x0被列入黑名单时,ALSA会消失?
提前谢谢你 Grts,Nedelin
答案 0 :(得分:0)
驱动程序snd-intel8x0
适用于Intel和兼容的AC'97控制器。
如果您有这样的控制器,snd-intel8x0
是正确使用的驱动程序。
如果您的设备确实需要新功能,请扩展snd-intel8x0
驱动程序。
如果你真的想为snd-intel8x0
写一个替代品,那么将后者放入blacklist.conf
是正确的方法。
当前加载的模块和您尝试加载的模块不兼容时,会出现“未知符号”错误。
重新编译ALSA时,应在加载新模块之前卸载所有snd*
模块。