[alsa-devel] [Alsa-user] Jetway j7f2 via82xx volume problem: sound suddenly stops when increasing volume: "SOLVED" (well ... sort of)
tiwai at suse.de
Tue Apr 29 15:36:31 CEST 2008
At Tue, 29 Apr 2008 15:25:57 +0200,
Zoilo Gomez wrote:
> >> This is consistent with the apparent introduction of this bug in kernel
> >> 2.6.19 (includes alsa-driver version 1.0.12rc1): no such problem
> >> occurred until 2.6.18, but all kernels since 2.6.19 do suffer from this
> >> problem. The line of code above first shows up in linux-2.6.19.
> >> Unfortunately, since I do not have a datasheet for the VT1617A chip set,
> >> I cannot verify the exact semantics, or suggest an improvement.
> >> Can anyone with a datasheet please suggest a proper patch to this line
> >> of code?
> > The register 0x5c is the VIA specific one. I have a VT1617 (without
> > A) datasheet, and it suggests that the bit corresponds to the
> > "headphone amplifier temperature sensing control". And setting this
> > bit means to _disable_ the temperature sensing control. This sounds
> > rather the correct to set.
> > However, I don't know whether any difference exists betweeen VIA1617
> > and 1617A although the codec id of both are identical.
> > Andrey, any comments about your patch?
> > In anyway, it'd be helpful if we can know which ac97 registers work
> > and wich not. Please take /proc/asound/card0/codec97#*/ac97#*-regs
> > file in both working and non-working cases to compare. Especially,
> > the registers 0x5a and 0x5c look interesting.
> Code containing "snd_ac97_write_cache(a97, 0x5c, 0x20)":
> 0x5a = 8300
> 0x5c = 0000
> Code with "snd_ac97_write_cache(a97, 0x5c, 0x20)" commented out:
> 0x5a = 8301
> 0x5c = 0020
> Quite a surprise to me, I would have expected exactly the opposite .....!?
I would, too. Could you double-check, e.g. by adding a printk?
Also, any difference in other registers?
The reg 0x5a bit 0 is a reserved bits, so no further information about
it on VT1617 datasheet.
> Can you explain this? /proc/asound/card0/codec97#0/ac97#0-0+regs does
> dump current registers, correct? Or is it a toggling bit?
It reads the current register values. So, it's the value right now.
And snd_ac97_write_cache() should overwrite, not toggle. The behavior
is really puzzling.
More information about the Alsa-devel