linux/sound/pci
Takashi Iwai eb49faa6a4 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>
2013-03-20 18:36:06 +01:00
..
ac97 ALSA: ac97 - Fix missing NULL check in snd_ac97_cvol_new() 2012-10-15 09:55:48 +02:00
ali5451 ALSA: ali5451: remove irq enabling in pointer callback 2013-02-11 16:52:46 +01:00
asihpi ALSA: asihpi - fix potential NULL pointer dereference 2013-03-12 08:34:36 +01:00
au88x0 ALSA: au88x0 - Define channel map for au88x0 2013-02-14 15:01:52 +01:00
aw2 ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
ca0106 ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
cs46xx ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
cs5535audio ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
ctxfi ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
echoaudio ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
emu10k1 ALSA: emu10k1: Allow to switch hardware sampe rate on EMU 2013-02-25 13:39:51 +01:00
hda ALSA: hda - Fix abuse of snd_hda_lock_devices() for DSP loader 2013-03-20 18:36:06 +01:00
ice1712 ALSA: ice1712: Initialize card->private_data properly 2013-03-07 15:38:58 +01:00
korg1212 ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
lola ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
lx6464es ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
mixart ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
nm256 ALSA: Make snd_printd() and snd_printdd() inline 2013-01-25 18:32:14 +01:00
oxygen ALSA: oxygen: remove __dev* attributes 2012-12-07 07:32:02 +01:00
pcxhr ALSA: Make snd_printd() and snd_printdd() inline 2013-01-25 18:32:14 +01:00
riptide ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
rme9652 Merge branch 'for-linus' into for-next 2013-01-23 08:31:34 +01:00
trident ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
vx222 ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
ymfpci ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
ad1889.c ALSA: ad1889: remove __dev* attributes 2012-12-07 07:31:18 +01:00
ad1889.h
ak4531_codec.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
als300.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
als4000.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
atiixp_modem.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
atiixp.c ALSA: Make snd_printd() and snd_printdd() inline 2013-01-25 18:32:14 +01:00
azt3328.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
azt3328.h ALSA: azt3328: fix previous breakage, improve suspend, cleanups 2009-07-15 12:03:26 +02:00
bt87x.c ALSA: bt87x: Make load_all parameter working again 2013-02-25 09:48:45 +01:00
cmipci.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
cs4281.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
cs5530.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
ens1370.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
ens1371.c
es1938.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
es1968.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
fm801.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
intel8x0.c ALSA: Make snd_printd() and snd_printdd() inline 2013-01-25 18:32:14 +01:00
intel8x0m.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
Kconfig ALSA: add missing HAS_IOPORT and GENERIC_HARDIRQS dependencies 2013-02-07 14:46:13 +01:00
maestro3.c ALSA: Make snd_printd() and snd_printdd() inline 2013-01-25 18:32:14 +01:00
Makefile ALSA: Add the driver for Digigram Lola PCI-e boards 2011-05-03 16:31:05 +02:00
rme32.c ALSA: rme32.c irq enabling after spin_lock_irq 2013-02-11 16:12:24 +01:00
rme96.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
sis7019.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
sis7019.h
sonicvibes.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
via82xx_modem.c ALSA: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
via82xx.c ALSA: Make snd_printd() and snd_printdd() inline 2013-01-25 18:32:14 +01:00