Commit 64613472 authored by Jaroslav Kysela's avatar Jaroslav Kysela

ALSA CVS update - Takashi Iwai <tiwai@suse.de>

Documentation,NM256 driver
- added a blacklist to avoid the possible hang-up at module loading.
- added notes about the hang-up problem to ALSA-Configuration.txt.
parent 9c9b6622
......@@ -788,6 +788,8 @@ Module parameters
Module supports autoprobe and multiple chips (max 8).
The power-management is supported.
Note: on some notebooks the buffer address cannot be detected
automatically, or causes hang-up during initialization.
In such a case, specify the buffer top address explicity via
......@@ -797,9 +799,24 @@ Module parameters
Sony F270: buffer_top=0x272800
The driver supports only ac97 codec. It's possible to force
to initialize/use ac97 although it's not detected. In such a
case, use force_ac97=1 option.
The power-management is supported.
case, use force_ac97=1 option - but *NO* guarantee whether it
works!
Note: The NM256 chip can be linked internally with non-AC97
codecs. This driver supports only the AC97 codec, and won't work
with machines with other (most likely CS423x or OPL3SAx) chips,
even though the device is detected in lspci. In such a case, try
other drivers, e.g. snd-cs4232 or snd-opl3sa2. Some has ISA-PnP
but some doesn't have ISA PnP. You'll need to speicfy isapnp=0
and proper hardware parameters in the case without ISA PnP.
Note: This driver is really crappy. It's a porting from the
OSS driver, which is a result of black-magic reverse engineering.
The detection of codec will fail if the driver is loaded *after*
X-server as described above. You might be able to force to load
the module, but it may result in hang-up. Hence, make sure that
you load this module *before* X if you encounter this kind of
problem.
Module snd-opl3sa2
------------------
......
......@@ -1532,6 +1532,21 @@ snd_nm256_create(snd_card_t *card, struct pci_dev *pci,
}
struct nm256_quirk {
unsigned short vendor;
unsigned short device;
int type;
};
#define NM_BLACKLISTED 1
static struct nm256_quirk nm256_quirks[] __devinitdata = {
/* HP omnibook 4150 has cs4232 codec internally */
{ .vendor = 0x103c, .device = 0x0007, .type = NM_BLACKLISTED },
{ } /* terminator */
};
static int __devinit snd_nm256_probe(struct pci_dev *pci,
const struct pci_device_id *pci_id)
{
......@@ -1540,6 +1555,8 @@ static int __devinit snd_nm256_probe(struct pci_dev *pci,
nm256_t *chip;
int err;
unsigned int xbuffer_top;
struct nm256_quirk *q;
u16 subsystem_vendor, subsystem_device;
if ((err = pci_enable_device(pci)) < 0)
return err;
......@@ -1551,6 +1568,18 @@ static int __devinit snd_nm256_probe(struct pci_dev *pci,
return -ENOENT;
}
pci_read_config_word(pci, PCI_SUBSYSTEM_VENDOR_ID, &subsystem_vendor);
pci_read_config_word(pci, PCI_SUBSYSTEM_ID, &subsystem_device);
for (q = nm256_quirks; q->vendor; q++) {
if (q->vendor == subsystem_vendor && q->device == subsystem_device) {
if (q->type == NM_BLACKLISTED) {
printk(KERN_INFO "nm256: The device is blacklisted. Loading stopped\n");
return -ENODEV;
}
}
}
card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
if (card == NULL)
return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment