ALSA: hda - HDMI sticky stream tag support
commitef18beded8ddbaafdf4914bab209f77e60ae3a18
authorWu Fengguang <fengguang.wu@intel.com>
Fri, 25 Dec 2009 05:14:27 +0000 (25 13:14 +0800)
committerTakashi Iwai <tiwai@suse.de>
Fri, 25 Dec 2009 13:17:36 +0000 (25 14:17 +0100)
treea0dc41a87c0d6d68f328ae983ae7a6ffd1444271
parent6b7b284958d47b77d06745b36bc7f36dab769d9b
ALSA: hda - HDMI sticky stream tag support

When we run the following commands in turn (with
CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0),

speaker-test -Dhw:0,3 -c2 -twav  # HDMI
speaker-test -Dhw:0,0 -c2 -twav  # Analog

The second command will produce sound in the analog lineout _as well as_
HDMI sink. The root cause is, device 0 "reuses" the same stream tag that
was used by device 3, and the "intelhdmi - sticky stream id" patch leaves
the HDMI codec in a functional state. So the HDMI codec happily accepts
the audio samples which reuse its stream tag.

The proposed solution is to remember the last device each azx_dev was
assigned to, and prefer to
1) reuse the azx_dev (and hence the stream tag) the HDMI codec last used
2) or assign a never-used azx_dev for HDMI

With this patch and the above two speaker-test commands,
HDMI codec will use stream tag 8 and Analog codec will use 5.

The stream tag used by HDMI codec won't be reused by others, as long
as we don't run out of the 4 playback azx_dev's. The legacy Analog
codec will continue to use stream tag 5 because its device id is 0
(this is a bit tricky).

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_intel.c