diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/usb.h | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/include/linux/usb.h b/include/linux/usb.h index a748815ee629..1eb4762d9ea8 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -953,7 +953,6 @@ extern int usb_disabled(void); | |||
953 | #define URB_ISO_ASAP 0x0002 /* iso-only, urb->start_frame | 953 | #define URB_ISO_ASAP 0x0002 /* iso-only, urb->start_frame |
954 | * ignored */ | 954 | * ignored */ |
955 | #define URB_NO_TRANSFER_DMA_MAP 0x0004 /* urb->transfer_dma valid on submit */ | 955 | #define URB_NO_TRANSFER_DMA_MAP 0x0004 /* urb->transfer_dma valid on submit */ |
956 | #define URB_NO_SETUP_DMA_MAP 0x0008 /* urb->setup_dma valid on submit */ | ||
957 | #define URB_NO_FSBR 0x0020 /* UHCI-specific */ | 956 | #define URB_NO_FSBR 0x0020 /* UHCI-specific */ |
958 | #define URB_ZERO_PACKET 0x0040 /* Finish bulk OUT with short packet */ | 957 | #define URB_ZERO_PACKET 0x0040 /* Finish bulk OUT with short packet */ |
959 | #define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt | 958 | #define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt |
@@ -1049,12 +1048,8 @@ typedef void (*usb_complete_t)(struct urb *); | |||
1049 | * @setup_packet: Only used for control transfers, this points to eight bytes | 1048 | * @setup_packet: Only used for control transfers, this points to eight bytes |
1050 | * of setup data. Control transfers always start by sending this data | 1049 | * of setup data. Control transfers always start by sending this data |
1051 | * to the device. Then transfer_buffer is read or written, if needed. | 1050 | * to the device. Then transfer_buffer is read or written, if needed. |
1052 | * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the | 1051 | * @setup_dma: DMA pointer for the setup packet. The caller must not use |
1053 | * device driver has provided this DMA address for the setup packet. | 1052 | * this field; setup_packet must point to a valid buffer. |
1054 | * The host controller driver should use this in preference to | ||
1055 | * setup_packet, but the HCD may chose to ignore the address if it must | ||
1056 | * copy the setup packet into internal structures. Therefore, setup_packet | ||
1057 | * must always point to a valid buffer. | ||
1058 | * @start_frame: Returns the initial frame for isochronous transfers. | 1053 | * @start_frame: Returns the initial frame for isochronous transfers. |
1059 | * @number_of_packets: Lists the number of ISO transfer buffers. | 1054 | * @number_of_packets: Lists the number of ISO transfer buffers. |
1060 | * @interval: Specifies the polling interval for interrupt or isochronous | 1055 | * @interval: Specifies the polling interval for interrupt or isochronous |
@@ -1086,13 +1081,14 @@ typedef void (*usb_complete_t)(struct urb *); | |||
1086 | * bounce buffer or talking to an IOMMU), | 1081 | * bounce buffer or talking to an IOMMU), |
1087 | * although they're cheap on commodity x86 and ppc hardware. | 1082 | * although they're cheap on commodity x86 and ppc hardware. |
1088 | * | 1083 | * |
1089 | * Alternatively, drivers may pass the URB_NO_xxx_DMA_MAP transfer flags, | 1084 | * Alternatively, drivers may pass the URB_NO_TRANSFER_DMA_MAP transfer flag, |
1090 | * which tell the host controller driver that no such mapping is needed since | 1085 | * which tells the host controller driver that no such mapping is needed for |
1086 | * the transfer_buffer since | ||
1091 | * the device driver is DMA-aware. For example, a device driver might | 1087 | * the device driver is DMA-aware. For example, a device driver might |
1092 | * allocate a DMA buffer with usb_alloc_coherent() or call usb_buffer_map(). | 1088 | * allocate a DMA buffer with usb_alloc_coherent() or call usb_buffer_map(). |
1093 | * When these transfer flags are provided, host controller drivers will | 1089 | * When this transfer flag is provided, host controller drivers will |
1094 | * attempt to use the dma addresses found in the transfer_dma and/or | 1090 | * attempt to use the dma address found in the transfer_dma |
1095 | * setup_dma fields rather than determining a dma address themselves. | 1091 | * field rather than determining a dma address themselves. |
1096 | * | 1092 | * |
1097 | * Note that transfer_buffer must still be set if the controller | 1093 | * Note that transfer_buffer must still be set if the controller |
1098 | * does not support DMA (as indicated by bus.uses_dma) and when talking | 1094 | * does not support DMA (as indicated by bus.uses_dma) and when talking |
@@ -1115,11 +1111,9 @@ typedef void (*usb_complete_t)(struct urb *); | |||
1115 | * should always terminate with a short packet, even if it means adding an | 1111 | * should always terminate with a short packet, even if it means adding an |
1116 | * extra zero length packet. | 1112 | * extra zero length packet. |
1117 | * | 1113 | * |
1118 | * Control URBs must provide a setup_packet. The setup_packet and | 1114 | * Control URBs must provide a valid pointer in the setup_packet field. |
1119 | * transfer_buffer may each be mapped for DMA or not, independently of | 1115 | * Unlike the transfer_buffer, the setup_packet may not be mapped for DMA |
1120 | * the other. The transfer_flags bits URB_NO_TRANSFER_DMA_MAP and | 1116 | * beforehand. |
1121 | * URB_NO_SETUP_DMA_MAP indicate which buffers have already been mapped. | ||
1122 | * URB_NO_SETUP_DMA_MAP is ignored for non-control URBs. | ||
1123 | * | 1117 | * |
1124 | * Interrupt URBs must provide an interval, saying how often (in milliseconds | 1118 | * Interrupt URBs must provide an interval, saying how often (in milliseconds |
1125 | * or, for highspeed devices, 125 microsecond units) | 1119 | * or, for highspeed devices, 125 microsecond units) |