--- ../alsa-kernel/usb/mixer.c	2010-03-12 12:21:47.911524364 +0100
+++ mixer.c	2010-03-12 12:26:11.336022654 +0100
@@ -1,3 +1,5 @@
+#include "mixer.inc"
+
 /*
  *   (Tentative) USB Audio Driver for ALSA
  *
@@ -128,6 +130,14 @@
 	USB_XU_SOFT_LIMIT_SELECTOR = 0x03	/* soft limiter */
 };
 
+#ifndef USB_DT_CS_DEVICE
+#define USB_DT_CS_DEVICE		0x21
+#define USB_DT_CS_CONFIG		0x22
+#define USB_DT_CS_STRING		0x23
+#define USB_DT_CS_INTERFACE		0x24
+#define USB_DT_CS_ENDPOINT		0x25
+#endif
+
 /*
  * manual mapping of mixer names
  * if the mixer topology is too complicated and the parsed names are
@@ -1967,7 +1977,11 @@
 	}
 }
 
+#if !defined(OLD_USB) && !defined(CONFIG_SND_NEW_IRQ_HANDLER)
+static void snd_usb_mixer_status_complete(struct urb *urb, struct pt_regs *regs)
+#else
 static void snd_usb_mixer_status_complete(struct urb *urb)
+#endif
 {
 	struct usb_mixer_interface *mixer = urb->context;
 
@@ -2011,7 +2025,11 @@
 		return 0;
 
 	epnum = usb_endpoint_num(ep);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
 	buffer_length = le16_to_cpu(ep->wMaxPacketSize);
+#else
+	buffer_length = ep->wMaxPacketSize;
+#endif
 	transfer_buffer = kmalloc(buffer_length, GFP_KERNEL);
 	if (!transfer_buffer)
 		return -ENOMEM;
