At Fri, 14 Mar 2008 21:18:19 -0400, Tyson Whitehead wrote:
On Fri March 14 2008, Bob Tracy wrote:
A quick followup... Since we're in agreement this isn't a regression, I've updated my working source tree to 2.6.25-rc5. Built the new kernel with the patch to omit es1888_init(), and as near as I can tell, that function does nothing useful on the Miata platform. At the very least, not having it makes no difference to any of the ALSA drivers I've tried: snd-sb8 still works great, and snd-es18xx is still broken in the same way originally described at the beginning of this long thread.
I'll try a build with the old OSS "sb" driver, and if that works ok, we may be able to do away with es1888_init() on the Miata. Tyson -- I think you have a Miata if I'm remembering correctly: can you confirm these observations?
I actually ran into some problems with my Alpha, and I haven't managed to get get it full operational again yet. I replaced the CPU fan, installed the new aboot, and left it trying to recover the filesystems. It was an unhappy story all around -- damn that CMD646 chipset, I was under the impression that driver had acquired some recent fixups. Anyway, if this succeeds, I'll try and compile up a new kernel with the patch when I get a chance.
With regard to the sound driver, the es18xx does endless looping on the first second or so of sound on my box (a PWS500au) unless I apply my patch, which just enables the alternative interupt detection code in the driver.
I vaguely remember about the patch... The patch below was on my local tree but never pushed because of lack of testing. Does it work for you?
Even then, though, I believe it still only works in 8bit mode.
Maybe the problem is in a different place, then...
thanks,
Takashi
---
diff -r 82e6201fc907 sound/isa/es18xx.c --- a/sound/isa/es18xx.c Mon Mar 17 14:36:24 2008 +0100 +++ b/sound/isa/es18xx.c Mon Mar 17 17:32:59 2008 +0100 @@ -765,9 +765,10 @@ static irqreturn_t snd_es18xx_interrupt( /* Read Interrupt status */ status = snd_es18xx_mixer_read(chip, 0x7f) >> 4; } -#if 0 - else { - status = 0; + +#ifdef CONFIG_ALPHA + if (!(status & (AUDIO1_IRQ | AUDIO2_IRQ))) { + /* status = 0; */ if (inb(chip->port + 0x0C) & 0x01) status |= AUDIO1_IRQ; if (snd_es18xx_mixer_read(chip, 0x7A) & 0x80) @@ -777,7 +778,6 @@ static irqreturn_t snd_es18xx_interrupt( status |= HWV_IRQ; } #endif - /* Audio 1 & Audio 2 */ if (status & AUDIO2_IRQ) { if (chip->active & DAC2)