How to use ALSA and PCI correctly
I am trying to create a simple driver for my PCI sound card in which I will use the ALSA api. And of course I face a problem: I can't make my driver work.
So here are some details:
1. As I mentioned my sound card is a PCI device. In order to start my driver I had to stop the originally running snd_intel8x0 driver, as it had occupied the device and it was not accessible(the probe function of my driver was never executed). So I blacklisted the snd_intel8x0 driver (added line in /etc/modporbe.d/blacklist.conf).
From this moment on my driver can be started - the probe function is started.
2. Unfortunately when snd_intel8x0 driver is blacklisted ALSA api also seems to disappear. I observe the following:
- when I start my driver I get these errors in dmesg:
[...] alsa: Unknown symbol snd_card_register (err 0)
[...] alsa: Unknown symbol snd_card_create (err 0)
[...] alsa: Unknown symbol snd_card_free (err 0)
[...] alsa: Unknown symbol snd_device_new (err 0)
- in file /proc/kallsyms there are no snd* symbols (if the original driver snd_intel8x0 is running all of the above mentioned snd* functions are available in /proc/kallsyms)
- there is folder /proc/asound (if snd_intel8x0 is running asound folder is present)
So my questions:
1. How can I make my PCI audio card use my driver and not snd_intel8x0?
2. How do I make ALSA available for my driver?
3. In general: why does ALSA disappear when snd_intel8x0 is blacklisted?
Thank you in advance