Re: vanilla 2.6.0-test11 and CS4236 card

From: Joseph Pingenot
Date: Tue Dec 02 2003 - 16:06:24 EST

An update. I've traced the problems down into snd_cs4231_probe().
After adding diagnostic printk statements, I get the following:
*vcs4231_inb() returned 0xff
*val is now 0x80
*cs4231_inb & CS4231_INIT returned TRUE
cs4231: port = 0x530, id = 0x0
id is incorrect (id=0x00, but should be 0x0a)
err in call to snd_cs4231_probe
err in call to snd_cs4231_create!
err running snd_cs4236_create!
CS4236+ soundcard not found or device busy
[all but the last line are mine]. the stuff prefixed by "*" comes from
here in snd_cs4231_probe:

for (i = 0; i < 50; i++) {
val = cs4231_inb(chip, CS4231P(REGSEL));
printk(" *vcs4231_inb() returned 0x%0x\n", val);
val &= CS4231_INIT;
printk(" *val is now 0x%0x\n", val);
/*if (cs4231_inb(chip, CS4231P(REGSEL)) & CS4231_INIT) {*/
if (val) {
printk(" *cs4231_inb & CS4231_INIT returned TRUE\n");
} else {
spin_lock_irqsave(&chip->reg_lock, flags);
snd_cs4231_out(chip, CS4231_MISC_INFO, CS4231_MODE2);
id = snd_cs4231_in(chip, CS4231_MISC_INFO) & 0x0f;
printk(" *detecting id: id=%02x\n", id);
spin_unlock_irqrestore(&chip->reg_lock, flags);
if (id == 0x0a)
break; /* this is valid value */

Anyone know what the io port here does, and what the different return
values are? Pointers to documentation is more than welcome! :)


"We continue to live in a world where all our know-how is locked into
binary files in an unknown format. If our documents are our corporate
memory, Microsoft still has us all condemned to Alzheimer's."
--Simon Phipps,

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at