Hello,
This is my first ALSA patch ever (in fact, also my first kernel patch and my first e-mail to this mailing list); as such, I'm sorry when I did something wrong and/or didn't follow the procedure properly. I hope you can forgive me.
I recently bought an ASUS Xonar U3 USB audio card. It general it works well with Linux, but unfortunately, it's PCM output channel is unusable for headphones because it allows virtually no volume control (maximum loudness is already reach at a volume level of 2 or 3). The card does also have a digital (S/PDIF) output channel, which however isn't switched on by the Linux USB audio driver:
http://www.mail-archive.com/alsa-user@lists.sourceforge.net/msg28970.html
When I boot into Windows (where the ASUS driver seemingly enables the channel) and then reboot into Linux, I can use this channel and control volume as expected. It's just this turning on of S/PDIF which is missing, as suggested by the alsa-user thread linked to above.
The patchset that follows enables S/PDIF on the Xonar U3 by using the (seemingly compatible) mixer quirks code as for the U1, just as done and tested by the initiator of the alsa-user thread, together with a very minor cleanup (renaming internal xonar_u1_* identifiers to just xonar_u_*). The change seems to work well (tested with the 3.7.0 Ubuntu kernel as found in today' daily version).
Regard, Denis Washington