aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-05-19 15:41:55 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-05-19 15:41:55 -0700
commit25041f79438a354d98305ea5650676997d915670 (patch)
treeffcb2778266e14b255bcb93df4c35778a63d52fd /usb
parent16651762680ae5506ff1ce63d9f17788b1d0f61a (diff)
downloadpatches-25041f79438a354d98305ea5650676997d915670.tar.gz
add usb patch
Diffstat (limited to 'usb')
-rw-r--r--usb/usb_interrupt_msg.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/usb/usb_interrupt_msg.patch b/usb/usb_interrupt_msg.patch
new file mode 100644
index 00000000000000..d7cce20f2529b8
--- /dev/null
+++ b/usb/usb_interrupt_msg.patch
@@ -0,0 +1,67 @@
+From foo@baz Tue Apr 9 12:12:43 2002
+Date: Fri, 19 May 2006 13:20:20 -0700
+To: Greg KH <greg@kroah.com>
+From: Greg Kroah-Hartman <gregkh@suse.de>
+Subject: USB: add usb_interrupt_msg() function for api completeness.
+
+Really just a wrapper around usb_bulk_msg() but now it's documented
+much better.
+
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/message.c | 31 +++++++++++++++++++++++++++++++
+ include/linux/usb.h | 2 ++
+ 2 files changed, 33 insertions(+)
+
+--- gregkh-2.6.orig/drivers/usb/core/message.c
++++ gregkh-2.6/drivers/usb/core/message.c
+@@ -158,6 +158,37 @@ int usb_control_msg(struct usb_device *d
+
+
+ /**
++ * usb_interrupt_msg - Builds an interrupt urb, sends it off and waits for completion
++ * @usb_dev: pointer to the usb device to send the message to
++ * @pipe: endpoint "pipe" to send the message to
++ * @data: pointer to the data to send
++ * @len: length in bytes of the data to send
++ * @actual_length: pointer to a location to put the actual length transferred in bytes
++ * @timeout: time in msecs to wait for the message to complete before
++ * timing out (if 0 the wait is forever)
++ * Context: !in_interrupt ()
++ *
++ * This function sends a simple interrupt message to a specified endpoint and
++ * waits for the message to complete, or timeout.
++ *
++ * If successful, it returns 0, otherwise a negative error number. The number
++ * of actual bytes transferred will be stored in the actual_length paramater.
++ *
++ * Don't use this function from within an interrupt context, like a bottom half
++ * handler. If you need an asynchronous message, or need to send a message
++ * from within interrupt context, use usb_submit_urb() If a thread in your
++ * driver uses this call, make sure your disconnect() method can wait for it to
++ * complete. Since you don't have a handle on the URB used, you can't cancel
++ * the request.
++ */
++int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
++ void *data, int len, int *actual_length, int timeout)
++{
++ return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout);
++}
++EXPORT_SYMBOL_GPL(usb_interrupt_msg);
++
++/**
+ * usb_bulk_msg - Builds a bulk urb, sends it off and waits for completion
+ * @usb_dev: pointer to the usb device to send the message to
+ * @pipe: endpoint "pipe" to send the message to
+--- gregkh-2.6.orig/include/linux/usb.h
++++ gregkh-2.6/include/linux/usb.h
+@@ -1021,6 +1021,8 @@ void usb_buffer_unmap_sg (struct usb_dev
+ extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
+ __u8 request, __u8 requesttype, __u16 value, __u16 index,
+ void *data, __u16 size, int timeout);
++extern int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
++ void *data, int len, int *actual_length, int timeout);
+ extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
+ void *data, int len, int *actual_length,
+ int timeout);