1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
--- ../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 |
|