• Wu Fengguang's avatar
    ALSA: hda - HDMI sticky stream tag support · ef18bede
    Wu Fengguang authored
    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: default avatarWu Fengguang <fengguang.wu@intel.com>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    ef18bede
hda_intel.c 74.2 KB