---------------------
PatchSet 3161 
Date: 2005/05/09 09:20:31
Author: cladisch
Branch: HEAD
Tag: (none) 
Log:
Summary: usb-audio - enable high speed (not) on Audigy 2 NX

The SB Audigy 2 NX needs a special boot-up command before it works in
high speed mode.

However, we don't actually enable it yet because high speed
synchronization doesn't seem to work with this device.

Members: 
	usb/usbaudio.c:1.128->1.129 

Index: /sound/usb/usbaudio.c
diff -u /sound/usb/usbaudio.c.old /sound/usb/usbaudio.c
--- /sound/usb/usbaudio.c.old	Wed May  4 06:56:04 2005
+++ /sound/usb/usbaudio.c	Mon May  9 01:20:31 2005
@@ -2925,6 +2925,25 @@
 	return 0;
 }
 
+static int snd_usb_audigy2nx_boot_quirk(struct usb_device *dev)
+{
+#if 0
+	/* TODO: enable this when high speed synchronization actually works */
+	u8 buf = 1;
+
+	snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a,
+			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+			0, 0, &buf, 1, 1000);
+	if (buf == 0) {
+		snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0x29,
+				USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+				1, 2000, NULL, 0, 1000);
+		return -ENODEV;
+	}
+#endif
+	return 0;
+}
+
 
 /*
  * audio-interface quirks
@@ -3154,6 +3173,11 @@
 			goto __err_val;
 		config = dev->actconfig;
 	}
+	/* SB Audigy 2 NX needs its own boot-up magic, too */
+	if (id == USB_ID(0x041e, 0x3020)) {
+		if (snd_usb_audigy2nx_boot_quirk(dev) < 0)
+			goto __err_val;
+	}
 
 	/*
 	 * found a config.  now register to ALSA