ALSA: usb-audio: Add duplex mode for Digidesign Mbox 1 and enable mixer
authorDamien Zammit <damien@zamaudio.com>
Tue, 11 Nov 2014 14:09:55 +0000 (01:09 +1100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 11 Nov 2014 14:13:00 +0000 (15:13 +0100)
This patch provides duplex support for the Digidesign Mbox 1 sound
card and has been a work in progress for about a year.
Users have confirmed on my website that previous versions of this patch
have worked on the hardware and I have been testing extensively.

It also enables the mixer control for providing clock source
selector based on the previous patch.
The sample rate has been hardcoded to 48kHz because it works better with
the S/PDIF sync mode when the sample rate is locked.  This is the
highest rate that the device supports and no loss of functionality
is observed by restricting the sample rate apart from the inability to selec
a lower rate.

Signed-off-by: Damien Zammit <damien@zamaudio.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/quirks-table.h

index c657752a420c024aba8c61fa8ced9b8971434fcf..13f44fd0e930fb72d45fe51637eda598cfa08199 100644 (file)
@@ -2944,7 +2944,7 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                .data = (const struct snd_usb_audio_quirk[]){
                        {
                                .ifnum = 0,
-                               .type = QUIRK_IGNORE_INTERFACE,
+                               .type = QUIRK_AUDIO_STANDARD_MIXER,
                        },
                        {
                                .ifnum = 1,
@@ -2955,16 +2955,40 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                                        .iface = 1,
                                        .altsetting = 1,
                                        .altset_idx = 1,
-                                       .attributes = UAC_EP_CS_ATTR_SAMPLE_RATE,
+                                       .attributes = 0x4,
                                        .endpoint = 0x02,
-                                       .ep_attr = 0x01,
-                                       .rates = SNDRV_PCM_RATE_44100 |
-                                                SNDRV_PCM_RATE_48000,
-                                       .rate_min = 44100,
+                                       .ep_attr = USB_ENDPOINT_XFER_ISOC |
+                                               USB_ENDPOINT_SYNC_SYNC,
+                                       .maxpacksize = 0x130,
+                                       .rates = SNDRV_PCM_RATE_48000,
+                                       .rate_min = 48000,
                                        .rate_max = 48000,
-                                       .nr_rates = 2,
+                                       .nr_rates = 1,
                                        .rate_table = (unsigned int[]) {
-                                               44100, 48000
+                                               48000
+                                       }
+                               }
+                       },
+                       {
+                               .ifnum = 1,
+                               .type = QUIRK_AUDIO_FIXED_ENDPOINT,
+                               .data = &(const struct audioformat) {
+                                       .formats = SNDRV_PCM_FMTBIT_S24_3BE,
+                                       .channels = 2,
+                                       .iface = 1,
+                                       .altsetting = 1,
+                                       .altset_idx = 1,
+                                       .attributes = 0x4,
+                                       .endpoint = 0x81,
+                                       .ep_attr = USB_ENDPOINT_XFER_ISOC |
+                                               USB_ENDPOINT_SYNC_ASYNC,
+                                       .maxpacksize = 0x130,
+                                       .rates = SNDRV_PCM_RATE_48000,
+                                       .rate_min = 48000,
+                                       .rate_max = 48000,
+                                       .nr_rates = 1,
+                                       .rate_table = (unsigned int[]) {
+                                               48000
                                        }
                                }
                        },
@@ -2972,7 +2996,6 @@ YAMAHA_DEVICE(0x7010, "UB99"),
                                .ifnum = -1
                        }
                }
-
        }
 },
 
This page took 0.030647 seconds and 5 git commands to generate.