I use an AUDIOTRAK OPTOPlay to output audio digitally to my DD/DTS receiver. More than 4 months ago I submitted a patch to the ALSA project. The patch fixes a bug in the usbaudio driver that prevents the use of sample rates other than the default with the OPTOPlay. The bug report has yet to even be reviewed. Compiling a custom kernel package just for this one small fix is a waste of time, so I usually end up just patching the binary.
objdump -h /lib/modules/*/kernel/sound/usb/snd-usb-audio.ko | grep " .text" | cut -d' ' -f19
objdump -d --prefix-addresses /lib/modules/*/kernel/sound/usb/snd-usb-audio.ko | grep "cmp $0x530a92" | cut -d' ' -f1
The above commands will output one offset each. Add the two together and you have the patch offset. Unload the snd-usb-audio module. Open up snd-usb-audio.ko in a hex editor. Overwrite 12 bytes starting at the patch offset with 0x90s. Save and close. Load the module. You should now be able to use sample rates other than the default with the OPTOPlay.