• Steve Soule's avatar
    ALSA: ac97_codec - increase timeout for analog sections to 5 second · f7489027
    Steve Soule authored
    I have a Soundblaster 16PCI. For many years, alsa has had a bug where
    not all of the card's controls are detected (many alsa versions,
    many kernel versions). In particular, Master Playback Volume is
    usually not detected, and so I get no sound or extremely faint sound.
    The problem has always been inconsistent: sometimes all of the controls
    are detected correctly, and sometimes a partial set is detected. It works
    correctly about 10% of the time.
    
    Finally, I got around to tracking down the problem. When the driver
    fails, it prints the kernel message "AC'97 0 analog subsections not
    ready". This message is generated from the function snd_ac97_mixer()
    in ac97_codec.c. The message indicates that the card failed to come
    back after reset within the time limit. The time limit is
    120 milliseconds.
    
    I tried increasing the time limit to 1 second, and found that this
    made the driver work about 70% of the time. I tried increasing it
    to 5 seconds, and it now seems to work 100% of the time.
    
    I expect that this change would be completely harmless for
    existing cards that work, and would only introduce additional
    delay for cards that do not work.
    
    ALSA bug#4032.
    Signed-off-by: default avatarSteve Soule <sts11dbxr@gmail.com>
    Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
    f7489027
ac97_codec.c 92.4 KB