黑名单音频驱动程序会导致ALSA死亡

时间:2012-11-01 10:27:41

标签: driver alsa

我正在尝试为我的PCI声卡创建一个简单的驱动程序,我将在其中使用ALSA API。当然,我遇到了一个问题:我不能让我的司机工作。

所以这里有一些细节:

  1. 正如我所说,我的声卡是PCI设备。为了启动我的驱动程序,我不得不停止原来运行的snd_intel8x0驱动程序,因为它占用了设备并且无法访问(我的驱动程序的探测功能从未执行过)。所以我将snd_intel8x0驱动程序列入黑名单(在/etc/modporbe.d/blacklist.conf中添加了一行)。 从此刻起,我的驱动程序就可以启动了 - 探测功能已经启动。

  2. 不幸的是,当snd_intel8x0驱动程序被列入黑名单时,ALSA api似乎也消失了。我观察到以下内容:

    • 当我启动我的驱动程序时,我在dmesg中遇到这些错误:
  3. [...] 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中可用)

    • 有文件夹/ p​​roc / asound(如果snd_intel8x0正在运行asound文件夹)

    所以我的问题:

    1. 如何让我的PCI声卡使用我的驱动程序而不是snd_intel8x0?

    2. 如何为我的驱动程序提供ALSA?

    3. 一般情况下:为什么当snd_intel8x0被列入黑名单时,ALSA会消失?

    4. 提前谢谢你 Grts,Nedelin

1 个答案:

答案 0 :(得分:0)

驱动程序snd-intel8x0适用于Intel和兼容的AC'97控制器。 如果您有这样的控制器,snd-intel8x0是正确使用的驱动程序。

如果您的设备确实需要新功能,请扩展snd-intel8x0驱动程序。

如果你真的想为snd-intel8x0写一个替代品,那么将后者放入blacklist.conf是正确的方法。


当前加载的模块和您尝试加载的模块不兼容时,会出现“未知符号”错误。 重新编译ALSA时,应在加载新模块之前卸载所有snd*模块。