diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2009-04-27 22:57:50 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-16 00:44:49 -0400 |
commit | 6d65b78a093552fb42448480d4c66bf093a6d4cf (patch) | |
tree | 38d5797b9cdd60421d6b28db225d34c9f2e56f6f /include | |
parent | 3ffbba9511b4148cbe1f6b6238686adaeaca8feb (diff) |
USB: Support for submitting control URBs under xHCI.
Warn users of URB_NO_SETUP_DMA_MAP about xHCI behavior.
Device drivers can choose to DMA map the setup packet of a control transfer
before submitting the URB to the USB core. Drivers then set the
URB_NO_SETUP_DMA_MAP and pass in the DMA memory address in setup_dma, instead of
providing a kernel address for setup_packet. However, xHCI requires that the
setup packet be copied into an internal data structure, and we need a kernel
memory address pointer for that. Warn users of URB_NO_SETUP_DMA_MAP that they
should provide a valid pointer for setup_packet, along with the DMA address.
FIXME: I'm not entirely sure how to work around this in the xHCI driver
or USB core.
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/usb.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h index 475cb75cc378..112a2d6e922f 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -1044,7 +1044,9 @@ typedef void (*usb_complete_t)(struct urb *); | |||
1044 | * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the | 1044 | * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the |
1045 | * device driver has provided this DMA address for the setup packet. | 1045 | * device driver has provided this DMA address for the setup packet. |
1046 | * The host controller driver should use this in preference to | 1046 | * The host controller driver should use this in preference to |
1047 | * setup_packet. | 1047 | * setup_packet, but the HCD may chose to ignore the address if it must |
1048 | * copy the setup packet into internal structures. Therefore, setup_packet | ||
1049 | * must always point to a valid buffer. | ||
1048 | * @start_frame: Returns the initial frame for isochronous transfers. | 1050 | * @start_frame: Returns the initial frame for isochronous transfers. |
1049 | * @number_of_packets: Lists the number of ISO transfer buffers. | 1051 | * @number_of_packets: Lists the number of ISO transfer buffers. |
1050 | * @interval: Specifies the polling interval for interrupt or isochronous | 1052 | * @interval: Specifies the polling interval for interrupt or isochronous |