ALSA: hda - Fix abuse of snd_hda_lock_devices() for DSP loader
authorTakashi Iwai <tiwai@suse.de>
Fri, 15 Mar 2013 08:19:11 +0000 (09:19 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 20 Mar 2013 17:36:06 +0000 (18:36 +0100)
commiteb49faa6a4703698fa5d8b304b01e7f59e7d1f11
tree13fcb4aedfee2a58bd690690b7ca7f17b0608cf9
parenta686fd141e20244ad75f80ad54706da07d7bb90a
ALSA: hda - Fix abuse of snd_hda_lock_devices() for DSP loader

The current DSP loader code abuses snd_hda_lock_devices() for ensuring
the DSP loader not conflicting with the other normal operations.  But
this trick obviously doesn't work for the PM resume since the streams
are kept opened there where snd_hda_lock_devices() returns -EBUSY.
That means we need another lock mechanism instead of abuse.

This patch provides the new lock state to azx_dev.  Theoretically it's
possible that the DSP loader conflicts with the stream that has been
already assigned for another PCM.  If it's running, the DSP loader
should simply fail.  If not -- it's the case for PM resume --, we
should assign this stream temporarily to the DSP loader, and take it
back to the PCM after finishing DSP loading.  If the PCM is operated
during the DSP loading, it should get an error, too.

Reported-and-tested-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_intel.c