Commit:     cac19c3ba123369b7c1199e20bb01fb265004ff5
Parent:     1b290a510c12be91b6a2f7d6a07ef61b8ee9f06a
Author:     Thibault Le Meur <[EMAIL PROTECTED]>
AuthorDate: Fri Jul 13 11:50:23 2007 +0200
Committer:  Jaroslav Kysela <[EMAIL PROTECTED]>
CommitDate: Fri Jul 20 11:11:52 2007 +0200

    [ALSA] usb-audio - Fix AC3 with M-Audio Audiophile USB
    Fixed AC3 interface in device_setup=0x00 mode thanks to Hakan
    Lennestal and updated documentation
    Signed-off-by: Thibault Le Meur <[EMAIL PROTECTED]>
    Signed-off-by: Takashi Iwai <[EMAIL PROTECTED]>
    Signed-off-by: Jaroslav Kysela <[EMAIL PROTECTED]>
 Documentation/sound/alsa/Audiophile-Usb.txt |   22 ++++++++++++++++------
 sound/usb/usbaudio.c                        |   13 ++++++++++++-
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt 
index 5b7a548..2ad5e63 100644
--- a/Documentation/sound/alsa/Audiophile-Usb.txt
+++ b/Documentation/sound/alsa/Audiophile-Usb.txt
@@ -1,4 +1,4 @@
-       Guide to using M-Audio Audiophile USB with ALSA and Jack        v1.4
+       Guide to using M-Audio Audiophile USB with ALSA and Jack        v1.5
            Thibault Le Meur <[EMAIL PROTECTED]>
@@ -12,6 +12,8 @@ History
  - Added Low Endianness nature of 16bits-modes
    found by Hakan Lennestal <[EMAIL PROTECTED]>
  - Modifying document structure
+* v1.5 - Thibault Le Meur (2007-07-12)
+ - Added AC3/DTS passthru info
 1 - Audiophile USB Specs and correct usage
@@ -105,9 +107,12 @@ way (I suppose the device's index is 1):
 In this mode, the device uses Big Endian byte-encoding so that 
 supported audio format are S16_BE for 16-bit depth modes and S24_3BE for 
-24-bits depth mode. One exception is the hw:1,2 port which is reported 
-to be Little Endian compliant (supposedly supporting S16_LE) but processes 
-in fact only S16_BE streams.
+24-bits depth mode.
+One exception is the hw:1,2 port which was reported to be Little Endian 
+compliant (supposedly supporting S16_LE) but processes in fact only S16_BE 
+This has been fixed in kernel 2.6.23 and above and now the hw:1,2 interface 
+is reported to be big endian in this default driver mode.
  * playing a S24_3BE encoded raw file to the Ao port
@@ -116,6 +121,8 @@ Examples:
    % arecord -D hw:1,1 -c2  -t raw -r48000 -fS24_3BE test.raw
  * playing a S16_BE encoded raw file to the Do port
    % aplay -D hw:1,1 -c2 -t raw -r48000 -fS16_BE test.raw
+ * playing an ac3 sample file to the Do port
+   % aplay -D hw:1,2 --channels=6 ac3_S16_BE_encoded_file.raw
 If you're happy with the default Alsa driver mode and don't experience any 
 issue with this mode, then you can skip the following chapter.
@@ -205,13 +212,16 @@ mode" above for an aplay command example) - AC3 w/ DTS passthru mode
-This mode is untested, I have no AC3 compliant device to test it. I uses:
+Thanks to Hakan Lennestal, I now have a report saying that this mode works.
  * device_setup=0x03
    - 16bits 48kHz mode with only the Do port enabled 
-   - AC3 with DTS passthru (not tested)
+   - AC3 with DTS passthru
    - Caution with this setup the Do port is mapped to the pcm device hw:1,0
+The command line used to playback the AC3/DTS encoded .wav-files in this mode:
+   % aplay -D hw:1,0 --channels=6 ac3_S16_LE_encoded_file.raw
 3.2.2 - How to use the device_setup parameter
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index 834b0af..7bd5852 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -2532,7 +2532,18 @@ static int parse_audio_format_i(struct snd_usb_audio 
*chip, struct audioformat *
                 *        but we give normal PCM format to get the existing
                 *        apps working...
-               pcm_format = SNDRV_PCM_FORMAT_S16_LE;
+               switch (chip->usb_id) {
+               case USB_ID(0x0763, 0x2003): /* M-Audio Audiophile USB */
+                       if (device_setup[chip->index] == 0x00 && 
+                           fp->altsetting == 6)
+                               pcm_format = SNDRV_PCM_FORMAT_S16_BE;
+                       else
+                               pcm_format = SNDRV_PCM_FORMAT_S16_LE;
+                       break;
+               default:
+                       pcm_format = SNDRV_PCM_FORMAT_S16_LE;
+               }
        } else {
                pcm_format = parse_audio_format_i_type(chip, fp, format, fmt);
                if (pcm_format < 0)
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to