[alsa-devel] module snd-atiixp issue with suspend/hibernate/resume

Ryan Dunn oryandunn.ml at gmail.com
Thu Apr 30 06:43:02 CEST 2009

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; 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>
> wrote:
> > I have a Compaq V2000 laptop with the ATI IXP chipset and make use of the
> > 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
> 7.
> > At this point a reboot will NOT fix the problem.  The only way to fix it
> is
> > to remove and reinsert the module with modprobe.
> >
> > This is on a fresh Ubuntu 9.04 install.  Any ideas?  I wasn't sure if
> this
> > should be reported here or on the kernel list.  I saw a similar issue
> with
> > 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
> you
> > 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 ;-)
> HTH,
> Lee

More information about the Alsa-devel mailing list