[alsa-devel] [regression] 2.6.25-rc4 snd-es18xx broken on Alpha

Bob Tracy rct at frus.com
Tue Mar 18 04:24:27 CET 2008


I'll try the below when I get back from my business trip (in approx.
two weeks).  Apologies for the inconvenience, but the Alpha hardly
qualifies as a laptop :-).  If someone else with a Miata (or other
Alpha with the ES1888 sound device) cares to give this a try, I *will*
be keeping up with my e-mail.

--Bob

Rene Herman wrote:
> Okay, thought I'd stare at this thing a bit -- there's no specific 1888 
> documentation available it seems but I did notice something in the 1878 
> datasheet which might mean something. The docs says that bits 0-1 are don't 
> care for DMA but don't for IRQ, so could it possibly be as simple as the 
> attached?
> 
> 1878 sheet doesn't document register 0x7f, it seems...
> 
> Assuming it's not just this, this thing is going to require quite a bit of 
> trial and error and without the hardware this will be troublesome. I expect 
> this is not it, since the arch init code also doesn't care about bit 0 when 
> setting that same register for IRQ 5.
> 
> If this is not it -- I'd try s/0x50/0x10/ in that line, even completely 
> commenting out the IRQ setting line (with the arch code built in) and just 
> generally frolic around 'till something blows up...
> 
> Rene.
> 

> diff --git a/sound/isa/es18xx.c b/sound/isa/es18xx.c
> index 90498e4..71d1b96 100644
> --- a/sound/isa/es18xx.c
> +++ b/sound/isa/es18xx.c
> @@ -1449,16 +1449,16 @@ static int __devinit snd_es18xx_initialize(struct snd_es18xx *chip)
>  		switch (chip->irq) {
>  		case 2:
>  		case 9:
> -			irqmask = 0;
> +			irqmask = 0x0;
>  			break;
>  		case 5:
> -			irqmask = 1;
> +			irqmask = 0x5;
>  			break;
>  		case 7:
> -			irqmask = 2;
> +			irqmask = 0xa;
>  			break;
>  		case 10:
> -			irqmask = 3;
> +			irqmask = 0xf;
>  			break;
>  		default:
>  			snd_printk(KERN_ERR "invalid irq %d\n", chip->irq);
> @@ -1497,7 +1497,7 @@ static int __devinit snd_es18xx_initialize(struct snd_es18xx *chip)
>  		}
>  
>  		/* Enable and set Audio 1 IRQ */
> -		snd_es18xx_write(chip, 0xB1, 0x50 | (irqmask << 2));
> +		snd_es18xx_write(chip, 0xB1, 0x50 | irqmask);
>  		/* Enable and set Audio 1 DMA */
>  		snd_es18xx_write(chip, 0xB2, 0x50 | (dma1mask << 2));
>  		/* Set Audio 2 DMA */
> @@ -1513,7 +1513,9 @@ static int __devinit snd_es18xx_initialize(struct snd_es18xx *chip)
>  			   FM enabled */
>  			snd_es18xx_mixer_write(chip, 0x40, 0x43 | (chip->mpu_port & 0xf0) >> 1);
>  		}
> +#if 0
>  		snd_es18xx_mixer_write(chip, 0x7f, ((irqmask + 1) << 1) | 0x01);
> +#endif
>  	}
>  	if (chip->caps & ES18XX_NEW_RATE) {
>  		/* Change behaviour of register A1


More information about the Alsa-devel mailing list