[alsa-devel] module snd-atiixp issue with suspend/hibernate/resume
tiwai at suse.de
Thu Apr 30 07:53:43 CEST 2009
At Thu, 30 Apr 2009 00:43:02 -0400,
Ryan Dunn wrote:
> Thanks Lee,
> I grabbed the kernel source from the repos and started perusing the code. It
> looks like when the module is installed, the call chain starts in atiixp.c and
> moves into ac97/ac97_codec.c via a call to snd_ac97_tune_hardware() which
> ultimately twiddles a bit in the AC97_POWERDOWN register. I'm not sure yet if
> the suspend method properly saves this register on suspend or not;
It should. snd_ac97_resume() writes the cached value.
Check /proc/asound/card0/codec97#0/ac97#*+regs files before and after
suspend. You can change the codec register value directly via proc
# echo 0x12 0x1234 > /proc/asound/card0/codec97#0/ac97#0-0+regs
(only when you build with the debug option).
The bit 0x8000 of the power-down register should correspond to LED.
> or if the
> same call chain needs to be repeated on a resume. I appreciate your quick and
> relevant answer. When I get time, I'll start adding some debug printouts to
> try this out.
> Also, the struct ac97_quirk ac97_quirks array has a couple of entries in it
> currently (in the atiixp.c file). How do I get the subvender/subdevice id's
> for my system (I didn't seem to have luck with lspci, unless I'm not looking
> in the right fields)? Would it be possible to edit the driver so that an
> explict module option would not be needed on my hardware?
> On Wed, Apr 29, 2009 at 10:42 PM, Lee Revell <rlrevell at joe-job.com> wrote:
> On Wed, Apr 29, 2009 at 12:06 AM, Ryan Dunn <oryandunn.ml at gmail.com>
> > I have a Compaq V2000 laptop with the ATI IXP chipset and make use of
> > snd-atiixp module. The laptop needs to have the ac97_quirk option set
> to 7
> > to enable the mute LED. After setting this option in the
> > /etc/modprobe.d/options.conf file, the mute LED works after a reboot.
> > However, after a resume from suspend or hibernate, the mute LED does not
> > work. The alsa-info.sh script reports that the quirk is still set with
> > At this point a reboot will NOT fix the problem. The only way to fix it
> > to remove and reinsert the module with modprobe.
> > This is on a fresh Ubuntu 9.04 install. Any ideas? I wasn't sure if
> > should be reported here or on the kernel list. I saw a similar issue
> > the ac97_quirk on the kernel list and they were referred here. I'm a
> > software developer, so I'd be willing to try ideas/possible solutions if
> > have them.
> Get the Ubuntu source code for the package that owns that ALSA driver,
> find the place in the driver's initialization code where ac97_quirk=7
> is handled, then check the driver's suspend and resume callbacks and
> make sure the suspend callback is correctly saving the LED state and
> that the resume callback is re-initializing the LED from the saved
> state in the same way the init code does. grep and printk() are your
> friends ;-)
More information about the Alsa-devel