diff options
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/usbaudio.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index da1fe0f0bca0..34d5f58985b6 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
@@ -2925,6 +2925,25 @@ static int snd_usb_extigy_boot_quirk(struct usb_device *dev, struct usb_interfac | |||
2925 | return 0; | 2925 | return 0; |
2926 | } | 2926 | } |
2927 | 2927 | ||
2928 | static int snd_usb_audigy2nx_boot_quirk(struct usb_device *dev) | ||
2929 | { | ||
2930 | #if 0 | ||
2931 | /* TODO: enable this when high speed synchronization actually works */ | ||
2932 | u8 buf = 1; | ||
2933 | |||
2934 | snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a, | ||
2935 | USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER, | ||
2936 | 0, 0, &buf, 1, 1000); | ||
2937 | if (buf == 0) { | ||
2938 | snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0x29, | ||
2939 | USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, | ||
2940 | 1, 2000, NULL, 0, 1000); | ||
2941 | return -ENODEV; | ||
2942 | } | ||
2943 | #endif | ||
2944 | return 0; | ||
2945 | } | ||
2946 | |||
2928 | 2947 | ||
2929 | /* | 2948 | /* |
2930 | * audio-interface quirks | 2949 | * audio-interface quirks |
@@ -3154,6 +3173,11 @@ static void *snd_usb_audio_probe(struct usb_device *dev, | |||
3154 | goto __err_val; | 3173 | goto __err_val; |
3155 | config = dev->actconfig; | 3174 | config = dev->actconfig; |
3156 | } | 3175 | } |
3176 | /* SB Audigy 2 NX needs its own boot-up magic, too */ | ||
3177 | if (id == USB_ID(0x041e, 0x3020)) { | ||
3178 | if (snd_usb_audigy2nx_boot_quirk(dev) < 0) | ||
3179 | goto __err_val; | ||
3180 | } | ||
3157 | 3181 | ||
3158 | /* | 3182 | /* |
3159 | * found a config. now register to ALSA | 3183 | * found a config. now register to ALSA |