--- ../alsa-kernel/usb/urb.c	2010-03-10 09:22:24.488022926 +0100
+++ urb.c	2010-03-10 09:53:00.839522084 +0100
@@ -1,3 +1,5 @@
+#define __NO_VERSION__
+#include "usbaudio.inc"
 /*
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -69,9 +71,12 @@
 		if (test_bit(i, &subs->active_mask)) {
 			if (!test_and_set_bit(i, &subs->unlink_mask)) {
 				struct urb *u = subs->dataurb[i].urb;
-				if (async)
+				if (async) {
+#ifdef URB_ASYNC_UNLINK
+					u->transfer_flags |= URB_ASYNC_UNLINK;
+#endif
 					usb_unlink_urb(u);
-				else
+				} else
 					usb_kill_urb(u);
 			}
 		}
@@ -81,9 +86,12 @@
 			if (test_bit(i+16, &subs->active_mask)) {
 				if (!test_and_set_bit(i+16, &subs->unlink_mask)) {
 					struct urb *u = subs->syncurb[i].urb;
-					if (async)
+					if (async) {
+#ifdef URB_ASYNC_UNLINK
+						u->transfer_flags |= URB_ASYNC_UNLINK;
+#endif
 						usb_unlink_urb(u);
-					else
+					} else
 						usb_kill_urb(u);
 				}
 			}
@@ -162,7 +170,11 @@
 /*
  * complete callback from data urb
  */
+#if !defined(OLD_USB) && !defined(CONFIG_SND_NEW_IRQ_HANDLER)
+static void snd_complete_urb(struct urb *urb, struct pt_regs *regs)
+#else
 static void snd_complete_urb(struct urb *urb)
+#endif
 {
 	struct snd_urb_ctx *ctx = urb->context;
 	struct snd_usb_substream *subs = ctx->subs;
@@ -185,7 +197,11 @@
 /*
  * complete callback from sync urb
  */
+#if !defined(OLD_USB) && !defined(CONFIG_SND_NEW_IRQ_HANDLER)
+static void snd_complete_sync_urb(struct urb *urb, struct pt_regs *regs)
+#else
 static void snd_complete_sync_urb(struct urb *urb)
+#endif
 {
 	struct snd_urb_ctx *ctx = urb->context;
 	struct snd_usb_substream *subs = ctx->subs;
@@ -333,7 +349,9 @@
 			if (!u->urb)
 				goto out_of_memory;
 			u->urb->transfer_buffer = subs->syncbuf + i * 4;
+#ifdef HAVE_USB_BUFFERS
 			u->urb->transfer_dma = subs->sync_dma + i * 4;
+#endif
 			u->urb->transfer_buffer_length = 4;
 			u->urb->pipe = subs->syncpipe;
 			u->urb->transfer_flags = URB_ISO_ASAP |
