2002-12-18 13:31:01

by Ian Soboroff

[permalink] [raw]
Subject: Trident/ALi 5451 problem, 2.4.20-ac2


Attachments:
(No filename) (543.00 B)
euphrates-dmesg (7.40 kB)
Download all attachments

2002-12-19 13:11:55

by Ian Soboroff

[permalink] [raw]
Subject: Re: Trident/ALi 5451 problem, 2.4.20-ac2

Ian Soboroff <[email protected]> writes:

> Just tried 2.4.20-ac2 on my Fujitsu P-2040, and it seems to have a
> problem initializing the sound:
>
> (from dmesg)
>
> Trident 4DWave/SiS 7018/ALi 5451,Tvia CyberPro 5050 PCI Audio, version 0.14.10h,
> 17:35:49 Dec 16 2002
> PCI: Found IRQ 9 for device 00:04.0
> trident: ALi Audio Accelerator found at IO 0x1000, IRQ 9
> ALi 5451 did not come out of reset.
> trident_ac97_init: error resetting 5451.

Took a bit of a look... the trident.c part of the patch is pretty
short:

--- linux.vanilla/drivers/sound/trident.c 2002-11-29 21:27:19.000000000 +0
000
+++ linux.20-ac2/drivers/sound/trident.c 2002-11-14 15:24:35.000000000 +0
000
@@ -3936,9 +3936,11 @@
wReg = ali_ac97_get(card, 0, AC97_POWER_CONTROL);
if((wReg & 0x000f) == 0x000f)
return 0;
- udelay(500);
+ udelay(5000);
}
- return 0;
+
+ printk(KERN_ERR "ALi 5451 did not come out of reset.\n");
+ return 1;
}

/* AC97 codec initialisation. */

I guess the loop (which the patch only shows the bottom of) is trying
to reset the AC97, and check the reset witht he ali_ac97_get() call.
The old 2.4.20 code just returned 0 in any case, whether the reset
succeeded or not. On my laptop, if I change this routine back to
return 0 in all cases, sound works fine. With this patch, this
routine returns 1, and the trident.c init aborts.

Perhaps the loop check for reset success isn't right? Or not all ALi
5451's play nice? I've reached the end of my clue.

Ian