Re: es1371 sound problems

From: Takashi Iwai
Date: Fri Feb 24 2006 - 06:20:28 EST


At Thu, 23 Feb 2006 21:53:09 +0100,
Pavel Machek wrote:
>
> Hi!
>
> After problems with SB Live!, I tried getting another PCI card:
>
> 0000:03:03.0 Multimedia audio controller: Ensoniq 5880 AudioPCI (rev
> 02)
>
> no luck :-(. Now, this is quite a strange machine (dual core), but
> does anyone have any clues? I tried OSS driver, and it did not work,
> so I went back to ALSA:
>
> Advanced Linux Sound Architecture Driver Version 1.0.11rc2 (Wed Jan 04
> 08:57:20 2006 UTC).
> input: PS/2 Generic Mouse as /class/input/input3
> reset at 0x220 failed!!!
> es18xx: [0x220] ESS chip not found
> reset at 0x240 failed!!!
> es18xx: [0x240] ESS chip not found
> reset at 0x260 failed!!!
> es18xx: [0x260] ESS chip not found
> reset at 0x280 failed!!!
> es18xx: [0x280] ESS chip not found
> ACPI: PCI Interrupt 0000:03:02.1[A] -> GSI 18 (level, low) -> IRQ 17
> acpi_bus-0201 [11] bus_set_power : Device is not power
> manageable
> ACPI: PCI Interrupt 0000:03:03.0[A] -> GSI 19 (level, low) -> IRQ 19
> es1371: codec read timeout at 0x3014 [0x40000000]
> es1371: codec read timeout at 0x3014 [0x40000000]
> codec write timeout at 0x3014 [0x40000000]
> codec write timeout at 0x3014 [0x40000000]
> es1371: codec read timeout at 0x3014 [0x40000000]
> es1371: codec read timeout at 0x3014 [0x40000000]
> es1371: codec read timeout at 0x3014 [0x40000000]
> es1371: codec read timeout at 0x3014 [0x40000000]
> es1371: codec read timeout at 0x3014 [0x40000000]

I've seen similar messages in some reports but haven't figured out the
cause yet.

To be sure, could you check the patch below, making the wait time in
codec acceessor longer?
Also, try to build ens1371 driver as a module.


Takashi


diff -u -r1.93 ens1370.c
--- linux/sound/pci/ens1370.c 16 Jan 2006 16:40:05 -0000 1.93
+++ linux/sound/pci/ens1370.c 24 Feb 2006 11:20:03 -0000
@@ -612,7 +612,7 @@
unsigned int t, x;

mutex_lock(&ensoniq->src_mutex);
- for (t = 0; t < POLL_COUNT; t++) {
+ for (t = 0; t < 50; t++) {
if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) {
/* save the current state for latter */
x = snd_es1371_wait_src_ready(ensoniq);
@@ -639,6 +639,7 @@
mutex_unlock(&ensoniq->src_mutex);
return;
}
+ msleep(1);
}
mutex_unlock(&ensoniq->src_mutex);
snd_printk(KERN_ERR "codec write timeout at 0x%lx [0x%x]\n",
@@ -653,7 +654,7 @@

__again:
mutex_lock(&ensoniq->src_mutex);
- for (t = 0; t < POLL_COUNT; t++) {
+ for (t = 0; t < 50; t++) {
if (!(inl(ES_REG(ensoniq, 1371_CODEC)) & ES_1371_CODEC_WIP)) {
/* save the current state for latter */
x = snd_es1371_wait_src_ready(ensoniq);
@@ -699,6 +700,7 @@
}
goto __again;
}
+ msleep(1);
}
mutex_unlock(&ensoniq->src_mutex);
snd_printk(KERN_ERR "es1371: codec read timeout at 0x%lx [0x%x]\n",
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/