diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-05-19 16:20:20 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-21 18:04:12 -0400 |
commit | 782a7a632e4b0581ade665e3d89ee97c8db0f441 (patch) | |
tree | 3d2e829e4581ff2be519429d8ed81d2fc2305333 | |
parent | caa2a1226741e023a103e091a7f6dce7c42e82ee (diff) |
[PATCH] 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>
-rw-r--r-- | drivers/usb/core/message.c | 31 | ||||
-rw-r--r-- | include/linux/usb.h | 2 |
2 files changed, 33 insertions, 0 deletions
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index 08fb20f06f3e..b2f608b0538d 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c | |||
@@ -158,6 +158,37 @@ int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u | |||
158 | 158 | ||
159 | 159 | ||
160 | /** | 160 | /** |
161 | * usb_interrupt_msg - Builds an interrupt urb, sends it off and waits for completion | ||
162 | * @usb_dev: pointer to the usb device to send the message to | ||
163 | * @pipe: endpoint "pipe" to send the message to | ||
164 | * @data: pointer to the data to send | ||
165 | * @len: length in bytes of the data to send | ||
166 | * @actual_length: pointer to a location to put the actual length transferred in bytes | ||
167 | * @timeout: time in msecs to wait for the message to complete before | ||
168 | * timing out (if 0 the wait is forever) | ||
169 | * Context: !in_interrupt () | ||
170 | * | ||
171 | * This function sends a simple interrupt message to a specified endpoint and | ||
172 | * waits for the message to complete, or timeout. | ||
173 | * | ||
174 | * If successful, it returns 0, otherwise a negative error number. The number | ||
175 | * of actual bytes transferred will be stored in the actual_length paramater. | ||
176 | * | ||
177 | * Don't use this function from within an interrupt context, like a bottom half | ||
178 | * handler. If you need an asynchronous message, or need to send a message | ||
179 | * from within interrupt context, use usb_submit_urb() If a thread in your | ||
180 | * driver uses this call, make sure your disconnect() method can wait for it to | ||
181 | * complete. Since you don't have a handle on the URB used, you can't cancel | ||
182 | * the request. | ||
183 | */ | ||
184 | int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe, | ||
185 | void *data, int len, int *actual_length, int timeout) | ||
186 | { | ||
187 | return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout); | ||
188 | } | ||
189 | EXPORT_SYMBOL_GPL(usb_interrupt_msg); | ||
190 | |||
191 | /** | ||
161 | * usb_bulk_msg - Builds a bulk urb, sends it off and waits for completion | 192 | * usb_bulk_msg - Builds a bulk urb, sends it off and waits for completion |
162 | * @usb_dev: pointer to the usb device to send the message to | 193 | * @usb_dev: pointer to the usb device to send the message to |
163 | * @pipe: endpoint "pipe" to send the message to | 194 | * @pipe: endpoint "pipe" to send the message to |
diff --git a/include/linux/usb.h b/include/linux/usb.h index 1f492c0c7047..317ec9f28bce 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -1008,6 +1008,8 @@ void usb_buffer_unmap_sg (struct usb_device *dev, unsigned pipe, | |||
1008 | extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, | 1008 | extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, |
1009 | __u8 request, __u8 requesttype, __u16 value, __u16 index, | 1009 | __u8 request, __u8 requesttype, __u16 value, __u16 index, |
1010 | void *data, __u16 size, int timeout); | 1010 | void *data, __u16 size, int timeout); |
1011 | extern int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe, | ||
1012 | void *data, int len, int *actual_length, int timeout); | ||
1011 | extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, | 1013 | extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, |
1012 | void *data, int len, int *actual_length, | 1014 | void *data, int len, int *actual_length, |
1013 | int timeout); | 1015 | int timeout); |