我正在尝试为我的 PCI 声卡创建一个简单的驱动程序,我将在其中使用 ALSA api。当然我也面临一个问题:我不能让我的司机工作。
所以这里有一些细节:
正如我提到的,我的声卡是 PCI 设备。为了启动我的驱动程序,我不得不停止最初运行的 snd_intel8x0 驱动程序,因为它已经占用了设备并且无法访问(我的驱动程序的探测功能从未执行过)。所以我将 snd_intel8x0 驱动程序列入了黑名单(在 /etc/modporbe.d/blacklist.conf 中添加了一行)。从这一刻起,我的驱动程序就可以启动了——探测功能启动了。
不幸的是,当 snd_intel8x0 驱动程序被列入黑名单时,ALSA api 似乎也消失了。我观察到以下几点:
- 当我启动我的驱动程序时,我在 dmesg 中收到这些错误:
[...] 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,内德林