From the ALSA wiki
I think the answer to this question depends on the application you are using. Refer to FAQ028 to set up the duplication devices in .asoundrc. Having done that, to play stereo files on a 5.1 setup, you can do:
$ mplayer -ao alsa:device=ch51dup <filename>
and for 5.1 channel encoded audio, you can just use:
$ mplayer <filename>
mplayer by default selects the surround51 device for 5-channel encoded audio. AFAIK, there is no way to instruct mplayer to automatically use the ch51dup device for two-channel input, and the default surround51 for 5-channel.
But that was not the question. Doing it this way means additional setup compliations with _every_ application. Is ALSA not capable of detecting the input data type automaticaly?