linux/sound/pci
Takashi Iwai ea9b43addc ALSA: hda - Fix broken workaround for HDMI/SPDIF conflicts
The commit [dcda58061: ALSA: hda - Add workaround for conflicting
IEC958 controls] introduced a workaround for cards that have both
SPDIF and HDMI devices for giving device=1 to SPDIF control elements.
It turned out, however, that this workaround doesn't work well -

- The workaround checks only conflicts in a single codec, but SPDIF
  and HDMI are provided by multiple codecs in many cases, and

- ALSA mixer abstraction doesn't care about the device number in ctl
  elements, thus you'll get errors from amixer such as
  % amixer scontrols -c 0
  ALSA lib simple_none.c:1551:(simple_add1) helem (MIXER,'IEC958
  Playback Switch',0,1,0) appears twice or more
  amixer: Mixer hw:0 load error: Invalid argument

This patch fixes the previous broken workaround.  Instead of changing
the device number of SPDIF ctl elements, shift the element indices of
such controls up to 16.  Also, the conflict check is performed over
all codecs found on the bus.

HDMI devices will be put to dev=0,index=0 as before.  Only the
conflicting SPDIF device is moved to a different place.  The new place
of SPDIF device is supposed by the updated alsa-lib HDA-Intel.conf,
respectively.

Reported-by: Stephan Raue <stephan@openelec.tv>
Reported-by: Anssi Hannula <anssi.hannula@iki.fi>
Cc: <stable@vger.kernel.org> [v3.8]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2013-02-12 17:09:19 +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: pci: remove __dev* attributes 2012-12-07 07:20:55 +01:00
au88x0 ALSA: au88x0: fix incorrect left shift 2013-01-07 09:33:56 +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 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-12-13 12:00:02 -08:00
hda ALSA: hda - Fix broken workaround for HDMI/SPDIF conflicts 2013-02-12 17:09:19 +01:00
ice1712 ALSA: ice1712: fix boundary check in snd_wm8766_write() 2013-02-07 09:52:15 +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
bt87x.c ALSA: bt87X: remove __dev* attributes 2012-12-07 07:31: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