diff options
| author | Eric Paris <eparis@redhat.com> | 2011-05-26 17:20:14 -0400 |
|---|---|---|
| committer | Eric Paris <eparis@redhat.com> | 2011-05-26 17:20:14 -0400 |
| commit | ea77f7a2e8561012cf100c530170f12351c3b53e (patch) | |
| tree | 7302ac1064f4e364aadda84020a176804fb86e22 /include/linux/usb | |
| parent | 7a627e3b9a2bd0f06945bbe64bcf403e788ecf6e (diff) | |
| parent | 61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf (diff) | |
Merge commit 'v2.6.39' into 20110526
Conflicts:
lib/flex_array.c
security/selinux/avc.c
security/selinux/hooks.c
security/selinux/ss/policydb.c
security/smack/smack_lsm.c
Diffstat (limited to 'include/linux/usb')
| -rw-r--r-- | include/linux/usb/Kbuild | 1 | ||||
| -rw-r--r-- | include/linux/usb/ch11.h | 46 | ||||
| -rw-r--r-- | include/linux/usb/ch9.h | 4 | ||||
| -rw-r--r-- | include/linux/usb/composite.h | 2 | ||||
| -rw-r--r-- | include/linux/usb/ehci_def.h | 6 | ||||
| -rw-r--r-- | include/linux/usb/functionfs.h | 4 | ||||
| -rw-r--r-- | include/linux/usb/gadget.h | 4 | ||||
| -rw-r--r-- | include/linux/usb/hcd.h | 43 | ||||
| -rw-r--r-- | include/linux/usb/midi.h | 2 | ||||
| -rw-r--r-- | include/linux/usb/msm_hsusb.h | 2 | ||||
| -rw-r--r-- | include/linux/usb/otg.h | 7 | ||||
| -rw-r--r-- | include/linux/usb/serial.h | 9 | ||||
| -rw-r--r-- | include/linux/usb/ulpi.h | 5 | ||||
| -rw-r--r-- | include/linux/usb/usbnet.h | 8 | ||||
| -rw-r--r-- | include/linux/usb/wusb.h | 2 |
15 files changed, 109 insertions, 36 deletions
diff --git a/include/linux/usb/Kbuild b/include/linux/usb/Kbuild index 51410e0200cf..ed91fb62674b 100644 --- a/include/linux/usb/Kbuild +++ b/include/linux/usb/Kbuild | |||
| @@ -2,6 +2,7 @@ header-y += audio.h | |||
| 2 | header-y += cdc.h | 2 | header-y += cdc.h |
| 3 | header-y += ch9.h | 3 | header-y += ch9.h |
| 4 | header-y += ch11.h | 4 | header-y += ch11.h |
| 5 | header-y += functionfs.h | ||
| 5 | header-y += gadgetfs.h | 6 | header-y += gadgetfs.h |
| 6 | header-y += midi.h | 7 | header-y += midi.h |
| 7 | header-y += g_printer.h | 8 | header-y += g_printer.h |
diff --git a/include/linux/usb/ch11.h b/include/linux/usb/ch11.h index 10ec0699bea4..4ebaf0824179 100644 --- a/include/linux/usb/ch11.h +++ b/include/linux/usb/ch11.h | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #define HUB_RESET_TT 9 | 26 | #define HUB_RESET_TT 9 |
| 27 | #define HUB_GET_TT_STATE 10 | 27 | #define HUB_GET_TT_STATE 10 |
| 28 | #define HUB_STOP_TT 11 | 28 | #define HUB_STOP_TT 11 |
| 29 | #define HUB_SET_DEPTH 12 | ||
| 29 | 30 | ||
| 30 | /* | 31 | /* |
| 31 | * Hub class additional requests defined by USB 3.0 spec | 32 | * Hub class additional requests defined by USB 3.0 spec |
| @@ -61,6 +62,12 @@ | |||
| 61 | #define USB_PORT_FEAT_TEST 21 | 62 | #define USB_PORT_FEAT_TEST 21 |
| 62 | #define USB_PORT_FEAT_INDICATOR 22 | 63 | #define USB_PORT_FEAT_INDICATOR 22 |
| 63 | #define USB_PORT_FEAT_C_PORT_L1 23 | 64 | #define USB_PORT_FEAT_C_PORT_L1 23 |
| 65 | #define USB_PORT_FEAT_C_PORT_LINK_STATE 25 | ||
| 66 | #define USB_PORT_FEAT_C_PORT_CONFIG_ERROR 26 | ||
| 67 | #define USB_PORT_FEAT_PORT_REMOTE_WAKE_MASK 27 | ||
| 68 | #define USB_PORT_FEAT_BH_PORT_RESET 28 | ||
| 69 | #define USB_PORT_FEAT_C_BH_PORT_RESET 29 | ||
| 70 | #define USB_PORT_FEAT_FORCE_LINKPM_ACCEPT 30 | ||
| 64 | 71 | ||
| 65 | /* | 72 | /* |
| 66 | * Port feature selectors added by USB 3.0 spec. | 73 | * Port feature selectors added by USB 3.0 spec. |
| @@ -102,7 +109,6 @@ struct usb_port_status { | |||
| 102 | #define USB_PORT_STAT_TEST 0x0800 | 109 | #define USB_PORT_STAT_TEST 0x0800 |
| 103 | #define USB_PORT_STAT_INDICATOR 0x1000 | 110 | #define USB_PORT_STAT_INDICATOR 0x1000 |
| 104 | /* bits 13 to 15 are reserved */ | 111 | /* bits 13 to 15 are reserved */ |
| 105 | #define USB_PORT_STAT_SUPER_SPEED 0x8000 /* Linux-internal */ | ||
| 106 | 112 | ||
| 107 | /* | 113 | /* |
| 108 | * Additions to wPortStatus bit field from USB 3.0 | 114 | * Additions to wPortStatus bit field from USB 3.0 |
| @@ -110,8 +116,14 @@ struct usb_port_status { | |||
| 110 | */ | 116 | */ |
| 111 | #define USB_PORT_STAT_LINK_STATE 0x01e0 | 117 | #define USB_PORT_STAT_LINK_STATE 0x01e0 |
| 112 | #define USB_SS_PORT_STAT_POWER 0x0200 | 118 | #define USB_SS_PORT_STAT_POWER 0x0200 |
| 119 | #define USB_SS_PORT_STAT_SPEED 0x1c00 | ||
| 113 | #define USB_PORT_STAT_SPEED_5GBPS 0x0000 | 120 | #define USB_PORT_STAT_SPEED_5GBPS 0x0000 |
| 114 | /* Valid only if port is enabled */ | 121 | /* Valid only if port is enabled */ |
| 122 | /* Bits that are the same from USB 2.0 */ | ||
| 123 | #define USB_SS_PORT_STAT_MASK (USB_PORT_STAT_CONNECTION | \ | ||
| 124 | USB_PORT_STAT_ENABLE | \ | ||
| 125 | USB_PORT_STAT_OVERCURRENT | \ | ||
| 126 | USB_PORT_STAT_RESET) | ||
| 115 | 127 | ||
| 116 | /* | 128 | /* |
| 117 | * Definitions for PORT_LINK_STATE values | 129 | * Definitions for PORT_LINK_STATE values |
| @@ -132,8 +144,8 @@ struct usb_port_status { | |||
| 132 | 144 | ||
| 133 | /* | 145 | /* |
| 134 | * wPortChange bit field | 146 | * wPortChange bit field |
| 135 | * See USB 2.0 spec Table 11-22 | 147 | * See USB 2.0 spec Table 11-22 and USB 2.0 LPM ECN Table-4.10 |
| 136 | * Bits 0 to 4 shown, bits 5 to 15 are reserved | 148 | * Bits 0 to 5 shown, bits 6 to 15 are reserved |
| 137 | */ | 149 | */ |
| 138 | #define USB_PORT_STAT_C_CONNECTION 0x0001 | 150 | #define USB_PORT_STAT_C_CONNECTION 0x0001 |
| 139 | #define USB_PORT_STAT_C_ENABLE 0x0002 | 151 | #define USB_PORT_STAT_C_ENABLE 0x0002 |
| @@ -141,6 +153,13 @@ struct usb_port_status { | |||
| 141 | #define USB_PORT_STAT_C_OVERCURRENT 0x0008 | 153 | #define USB_PORT_STAT_C_OVERCURRENT 0x0008 |
| 142 | #define USB_PORT_STAT_C_RESET 0x0010 | 154 | #define USB_PORT_STAT_C_RESET 0x0010 |
| 143 | #define USB_PORT_STAT_C_L1 0x0020 | 155 | #define USB_PORT_STAT_C_L1 0x0020 |
| 156 | /* | ||
| 157 | * USB 3.0 wPortChange bit fields | ||
| 158 | * See USB 3.0 spec Table 10-11 | ||
| 159 | */ | ||
| 160 | #define USB_PORT_STAT_C_BH_RESET 0x0020 | ||
| 161 | #define USB_PORT_STAT_C_LINK_STATE 0x0040 | ||
| 162 | #define USB_PORT_STAT_C_CONFIG_ERROR 0x0080 | ||
| 144 | 163 | ||
| 145 | /* | 164 | /* |
| 146 | * wHubCharacteristics (masks) | 165 | * wHubCharacteristics (masks) |
| @@ -175,7 +194,9 @@ struct usb_hub_status { | |||
| 175 | */ | 194 | */ |
| 176 | 195 | ||
| 177 | #define USB_DT_HUB (USB_TYPE_CLASS | 0x09) | 196 | #define USB_DT_HUB (USB_TYPE_CLASS | 0x09) |
| 197 | #define USB_DT_SS_HUB (USB_TYPE_CLASS | 0x0a) | ||
| 178 | #define USB_DT_HUB_NONVAR_SIZE 7 | 198 | #define USB_DT_HUB_NONVAR_SIZE 7 |
| 199 | #define USB_DT_SS_HUB_SIZE 12 | ||
| 179 | 200 | ||
| 180 | struct usb_hub_descriptor { | 201 | struct usb_hub_descriptor { |
| 181 | __u8 bDescLength; | 202 | __u8 bDescLength; |
| @@ -184,11 +205,22 @@ struct usb_hub_descriptor { | |||
| 184 | __le16 wHubCharacteristics; | 205 | __le16 wHubCharacteristics; |
| 185 | __u8 bPwrOn2PwrGood; | 206 | __u8 bPwrOn2PwrGood; |
| 186 | __u8 bHubContrCurrent; | 207 | __u8 bHubContrCurrent; |
| 187 | /* add 1 bit for hub status change; round to bytes */ | ||
| 188 | __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8]; | ||
| 189 | __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8]; | ||
| 190 | } __attribute__ ((packed)); | ||
| 191 | 208 | ||
| 209 | /* 2.0 and 3.0 hubs differ here */ | ||
| 210 | union { | ||
| 211 | struct { | ||
| 212 | /* add 1 bit for hub status change; round to bytes */ | ||
| 213 | __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8]; | ||
| 214 | __u8 PortPwrCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8]; | ||
| 215 | } __attribute__ ((packed)) hs; | ||
| 216 | |||
| 217 | struct { | ||
| 218 | __u8 bHubHdrDecLat; | ||
| 219 | __u16 wHubDelay; | ||
| 220 | __u16 DeviceRemovable; | ||
| 221 | } __attribute__ ((packed)) ss; | ||
| 222 | } u; | ||
| 223 | } __attribute__ ((packed)); | ||
| 192 | 224 | ||
| 193 | /* port indicator status selectors, tables 11-7 and 11-25 */ | 225 | /* port indicator status selectors, tables 11-7 and 11-25 */ |
| 194 | #define HUB_LED_AUTO 0 | 226 | #define HUB_LED_AUTO 0 |
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h index ab461948b579..b72f305ce6bd 100644 --- a/include/linux/usb/ch9.h +++ b/include/linux/usb/ch9.h | |||
| @@ -584,7 +584,9 @@ struct usb_ss_ep_comp_descriptor { | |||
| 584 | 584 | ||
| 585 | #define USB_DT_SS_EP_COMP_SIZE 6 | 585 | #define USB_DT_SS_EP_COMP_SIZE 6 |
| 586 | /* Bits 4:0 of bmAttributes if this is a bulk endpoint */ | 586 | /* Bits 4:0 of bmAttributes if this is a bulk endpoint */ |
| 587 | #define USB_SS_MAX_STREAMS(p) (1 << (p & 0x1f)) | 587 | #define USB_SS_MAX_STREAMS(p) (1 << ((p) & 0x1f)) |
| 588 | /* Bits 1:0 of bmAttributes if this is an isoc endpoint */ | ||
| 589 | #define USB_SS_MULT(p) (1 + ((p) & 0x3)) | ||
| 588 | 590 | ||
| 589 | /*-------------------------------------------------------------------------*/ | 591 | /*-------------------------------------------------------------------------*/ |
| 590 | 592 | ||
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index 3d29a7dcac2d..882a084a8411 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h | |||
| @@ -188,7 +188,7 @@ ep_choose(struct usb_gadget *g, struct usb_endpoint_descriptor *hs, | |||
| 188 | * @bind() method is then used to initialize all the functions and then | 188 | * @bind() method is then used to initialize all the functions and then |
| 189 | * call @usb_add_function() for them. | 189 | * call @usb_add_function() for them. |
| 190 | * | 190 | * |
| 191 | * Those functions would normally be independant of each other, but that's | 191 | * Those functions would normally be independent of each other, but that's |
| 192 | * not mandatory. CDC WMC devices are an example where functions often | 192 | * not mandatory. CDC WMC devices are an example where functions often |
| 193 | * depend on other functions, with some functions subsidiary to others. | 193 | * depend on other functions, with some functions subsidiary to others. |
| 194 | * Such interdependency may be managed in any way, so long as all of the | 194 | * Such interdependency may be managed in any way, so long as all of the |
diff --git a/include/linux/usb/ehci_def.h b/include/linux/usb/ehci_def.h index 2e262cb15425..e49dfd45baa4 100644 --- a/include/linux/usb/ehci_def.h +++ b/include/linux/usb/ehci_def.h | |||
| @@ -127,7 +127,9 @@ struct ehci_regs { | |||
| 127 | #define PORT_WKDISC_E (1<<21) /* wake on disconnect (enable) */ | 127 | #define PORT_WKDISC_E (1<<21) /* wake on disconnect (enable) */ |
| 128 | #define PORT_WKCONN_E (1<<20) /* wake on connect (enable) */ | 128 | #define PORT_WKCONN_E (1<<20) /* wake on connect (enable) */ |
| 129 | /* 19:16 for port testing */ | 129 | /* 19:16 for port testing */ |
| 130 | #define PORT_TEST_PKT (0x4<<16) /* Port Test Control - packet test */ | 130 | #define PORT_TEST(x) (((x)&0xf)<<16) /* Port Test Control */ |
| 131 | #define PORT_TEST_PKT PORT_TEST(0x4) /* Port Test Control - packet test */ | ||
| 132 | #define PORT_TEST_FORCE PORT_TEST(0x5) /* Port Test Control - force enable */ | ||
| 131 | #define PORT_LED_OFF (0<<14) | 133 | #define PORT_LED_OFF (0<<14) |
| 132 | #define PORT_LED_AMBER (1<<14) | 134 | #define PORT_LED_AMBER (1<<14) |
| 133 | #define PORT_LED_GREEN (2<<14) | 135 | #define PORT_LED_GREEN (2<<14) |
| @@ -157,7 +159,7 @@ struct ehci_regs { | |||
| 157 | #define USBMODE_CM_IDLE (0<<0) /* idle state */ | 159 | #define USBMODE_CM_IDLE (0<<0) /* idle state */ |
| 158 | 160 | ||
| 159 | /* Moorestown has some non-standard registers, partially due to the fact that | 161 | /* Moorestown has some non-standard registers, partially due to the fact that |
| 160 | * its EHCI controller has both TT and LPM support. HOSTPCx are extentions to | 162 | * its EHCI controller has both TT and LPM support. HOSTPCx are extensions to |
| 161 | * PORTSCx | 163 | * PORTSCx |
| 162 | */ | 164 | */ |
| 163 | #define HOSTPC0 0x84 /* HOSTPC extension */ | 165 | #define HOSTPC0 0x84 /* HOSTPC extension */ |
diff --git a/include/linux/usb/functionfs.h b/include/linux/usb/functionfs.h index 6f649c13193b..7587ef934ba8 100644 --- a/include/linux/usb/functionfs.h +++ b/include/linux/usb/functionfs.h | |||
| @@ -45,7 +45,7 @@ struct usb_functionfs_descs_head { | |||
| 45 | * | off | name | type | description | | 45 | * | off | name | type | description | |
| 46 | * |-----+-----------+--------------+--------------------------------------| | 46 | * |-----+-----------+--------------+--------------------------------------| |
| 47 | * | 0 | magic | LE32 | FUNCTIONFS_{FS,HS}_DESCRIPTORS_MAGIC | | 47 | * | 0 | magic | LE32 | FUNCTIONFS_{FS,HS}_DESCRIPTORS_MAGIC | |
| 48 | * | 4 | lenght | LE32 | length of the whole data chunk | | 48 | * | 4 | length | LE32 | length of the whole data chunk | |
| 49 | * | 8 | fs_count | LE32 | number of full-speed descriptors | | 49 | * | 8 | fs_count | LE32 | number of full-speed descriptors | |
| 50 | * | 12 | hs_count | LE32 | number of high-speed descriptors | | 50 | * | 12 | hs_count | LE32 | number of high-speed descriptors | |
| 51 | * | 16 | fs_descrs | Descriptor[] | list of full-speed descriptors | | 51 | * | 16 | fs_descrs | Descriptor[] | list of full-speed descriptors | |
| @@ -86,7 +86,7 @@ struct usb_functionfs_strings_head { | |||
| 86 | * | 0 | lang | LE16 | language code | | 86 | * | 0 | lang | LE16 | language code | |
| 87 | * | 2 | strings | String[str_count] | array of strings in given language | | 87 | * | 2 | strings | String[str_count] | array of strings in given language | |
| 88 | * | 88 | * |
| 89 | * For each string ther is one strings entry (ie. there are str_count | 89 | * For each string there is one strings entry (ie. there are str_count |
| 90 | * string entries). Each String is a NUL terminated string encoded in | 90 | * string entries). Each String is a NUL terminated string encoded in |
| 91 | * UTF-8. | 91 | * UTF-8. |
| 92 | */ | 92 | */ |
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 006412ce2303..e538172c0f64 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h | |||
| @@ -72,7 +72,7 @@ struct usb_ep; | |||
| 72 | * Bulk endpoints can use any size buffers, and can also be used for interrupt | 72 | * Bulk endpoints can use any size buffers, and can also be used for interrupt |
| 73 | * transfers. interrupt-only endpoints can be much less functional. | 73 | * transfers. interrupt-only endpoints can be much less functional. |
| 74 | * | 74 | * |
| 75 | * NOTE: this is analagous to 'struct urb' on the host side, except that | 75 | * NOTE: this is analogous to 'struct urb' on the host side, except that |
| 76 | * it's thinner and promotes more pre-allocation. | 76 | * it's thinner and promotes more pre-allocation. |
| 77 | */ | 77 | */ |
| 78 | 78 | ||
| @@ -269,7 +269,7 @@ static inline void usb_ep_free_request(struct usb_ep *ep, | |||
| 269 | * | 269 | * |
| 270 | * Control endpoints ... after getting a setup() callback, the driver queues | 270 | * Control endpoints ... after getting a setup() callback, the driver queues |
| 271 | * one response (even if it would be zero length). That enables the | 271 | * one response (even if it would be zero length). That enables the |
| 272 | * status ack, after transfering data as specified in the response. Setup | 272 | * status ack, after transferring data as specified in the response. Setup |
| 273 | * functions may return negative error codes to generate protocol stalls. | 273 | * functions may return negative error codes to generate protocol stalls. |
| 274 | * (Note that some USB device controllers disallow protocol stall responses | 274 | * (Note that some USB device controllers disallow protocol stall responses |
| 275 | * in some cases.) When control responses are deferred (the response is | 275 | * in some cases.) When control responses are deferred (the response is |
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index a854fe89484e..0097136ba45d 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h | |||
| @@ -76,6 +76,10 @@ struct usb_hcd { | |||
| 76 | struct kref kref; /* reference counter */ | 76 | struct kref kref; /* reference counter */ |
| 77 | 77 | ||
| 78 | const char *product_desc; /* product/vendor string */ | 78 | const char *product_desc; /* product/vendor string */ |
| 79 | int speed; /* Speed for this roothub. | ||
| 80 | * May be different from | ||
| 81 | * hcd->driver->flags & HCD_MASK | ||
| 82 | */ | ||
| 79 | char irq_descr[24]; /* driver + bus # */ | 83 | char irq_descr[24]; /* driver + bus # */ |
| 80 | 84 | ||
| 81 | struct timer_list rh_timer; /* drives root-hub polling */ | 85 | struct timer_list rh_timer; /* drives root-hub polling */ |
| @@ -99,6 +103,8 @@ struct usb_hcd { | |||
| 99 | #define HCD_FLAG_POLL_RH 2 /* poll for rh status? */ | 103 | #define HCD_FLAG_POLL_RH 2 /* poll for rh status? */ |
| 100 | #define HCD_FLAG_POLL_PENDING 3 /* status has changed? */ | 104 | #define HCD_FLAG_POLL_PENDING 3 /* status has changed? */ |
| 101 | #define HCD_FLAG_WAKEUP_PENDING 4 /* root hub is resuming? */ | 105 | #define HCD_FLAG_WAKEUP_PENDING 4 /* root hub is resuming? */ |
| 106 | #define HCD_FLAG_RH_RUNNING 5 /* root hub is running? */ | ||
| 107 | #define HCD_FLAG_DEAD 6 /* controller has died? */ | ||
| 102 | 108 | ||
| 103 | /* The flags can be tested using these macros; they are likely to | 109 | /* The flags can be tested using these macros; they are likely to |
| 104 | * be slightly faster than test_bit(). | 110 | * be slightly faster than test_bit(). |
| @@ -108,6 +114,8 @@ struct usb_hcd { | |||
| 108 | #define HCD_POLL_RH(hcd) ((hcd)->flags & (1U << HCD_FLAG_POLL_RH)) | 114 | #define HCD_POLL_RH(hcd) ((hcd)->flags & (1U << HCD_FLAG_POLL_RH)) |
| 109 | #define HCD_POLL_PENDING(hcd) ((hcd)->flags & (1U << HCD_FLAG_POLL_PENDING)) | 115 | #define HCD_POLL_PENDING(hcd) ((hcd)->flags & (1U << HCD_FLAG_POLL_PENDING)) |
| 110 | #define HCD_WAKEUP_PENDING(hcd) ((hcd)->flags & (1U << HCD_FLAG_WAKEUP_PENDING)) | 116 | #define HCD_WAKEUP_PENDING(hcd) ((hcd)->flags & (1U << HCD_FLAG_WAKEUP_PENDING)) |
| 117 | #define HCD_RH_RUNNING(hcd) ((hcd)->flags & (1U << HCD_FLAG_RH_RUNNING)) | ||
| 118 | #define HCD_DEAD(hcd) ((hcd)->flags & (1U << HCD_FLAG_DEAD)) | ||
| 111 | 119 | ||
| 112 | /* Flags that get set only during HCD registration or removal. */ | 120 | /* Flags that get set only during HCD registration or removal. */ |
| 113 | unsigned rh_registered:1;/* is root hub registered? */ | 121 | unsigned rh_registered:1;/* is root hub registered? */ |
| @@ -138,7 +146,9 @@ struct usb_hcd { | |||
| 138 | * bandwidth_mutex should be dropped after a successful control message | 146 | * bandwidth_mutex should be dropped after a successful control message |
| 139 | * to the device, or resetting the bandwidth after a failed attempt. | 147 | * to the device, or resetting the bandwidth after a failed attempt. |
| 140 | */ | 148 | */ |
| 141 | struct mutex bandwidth_mutex; | 149 | struct mutex *bandwidth_mutex; |
| 150 | struct usb_hcd *shared_hcd; | ||
| 151 | struct usb_hcd *primary_hcd; | ||
| 142 | 152 | ||
| 143 | 153 | ||
| 144 | #define HCD_BUFFER_POOLS 4 | 154 | #define HCD_BUFFER_POOLS 4 |
| @@ -201,6 +211,7 @@ struct hc_driver { | |||
| 201 | int flags; | 211 | int flags; |
| 202 | #define HCD_MEMORY 0x0001 /* HC regs use memory (else I/O) */ | 212 | #define HCD_MEMORY 0x0001 /* HC regs use memory (else I/O) */ |
| 203 | #define HCD_LOCAL_MEM 0x0002 /* HC needs local memory */ | 213 | #define HCD_LOCAL_MEM 0x0002 /* HC needs local memory */ |
| 214 | #define HCD_SHARED 0x0004 /* Two (or more) usb_hcds share HW */ | ||
| 204 | #define HCD_USB11 0x0010 /* USB 1.1 */ | 215 | #define HCD_USB11 0x0010 /* USB 1.1 */ |
| 205 | #define HCD_USB2 0x0020 /* USB 2.0 */ | 216 | #define HCD_USB2 0x0020 /* USB 2.0 */ |
| 206 | #define HCD_USB3 0x0040 /* USB 3.0 */ | 217 | #define HCD_USB3 0x0040 /* USB 3.0 */ |
| @@ -234,6 +245,19 @@ struct hc_driver { | |||
| 234 | int (*urb_dequeue)(struct usb_hcd *hcd, | 245 | int (*urb_dequeue)(struct usb_hcd *hcd, |
| 235 | struct urb *urb, int status); | 246 | struct urb *urb, int status); |
| 236 | 247 | ||
| 248 | /* | ||
| 249 | * (optional) these hooks allow an HCD to override the default DMA | ||
| 250 | * mapping and unmapping routines. In general, they shouldn't be | ||
| 251 | * necessary unless the host controller has special DMA requirements, | ||
| 252 | * such as alignment contraints. If these are not specified, the | ||
| 253 | * general usb_hcd_(un)?map_urb_for_dma functions will be used instead | ||
| 254 | * (and it may be a good idea to call these functions in your HCD | ||
| 255 | * implementation) | ||
| 256 | */ | ||
| 257 | int (*map_urb_for_dma)(struct usb_hcd *hcd, struct urb *urb, | ||
| 258 | gfp_t mem_flags); | ||
| 259 | void (*unmap_urb_for_dma)(struct usb_hcd *hcd, struct urb *urb); | ||
| 260 | |||
| 237 | /* hw synch, freeing endpoint resources that urb_dequeue can't */ | 261 | /* hw synch, freeing endpoint resources that urb_dequeue can't */ |
| 238 | void (*endpoint_disable)(struct usb_hcd *hcd, | 262 | void (*endpoint_disable)(struct usb_hcd *hcd, |
| 239 | struct usb_host_endpoint *ep); | 263 | struct usb_host_endpoint *ep); |
| @@ -330,8 +354,10 @@ extern int usb_hcd_submit_urb(struct urb *urb, gfp_t mem_flags); | |||
| 330 | extern int usb_hcd_unlink_urb(struct urb *urb, int status); | 354 | extern int usb_hcd_unlink_urb(struct urb *urb, int status); |
| 331 | extern void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb, | 355 | extern void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb, |
| 332 | int status); | 356 | int status); |
| 333 | extern void unmap_urb_setup_for_dma(struct usb_hcd *, struct urb *); | 357 | extern int usb_hcd_map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb, |
| 334 | extern void unmap_urb_for_dma(struct usb_hcd *, struct urb *); | 358 | gfp_t mem_flags); |
| 359 | extern void usb_hcd_unmap_urb_setup_for_dma(struct usb_hcd *, struct urb *); | ||
| 360 | extern void usb_hcd_unmap_urb_for_dma(struct usb_hcd *, struct urb *); | ||
| 335 | extern void usb_hcd_flush_endpoint(struct usb_device *udev, | 361 | extern void usb_hcd_flush_endpoint(struct usb_device *udev, |
| 336 | struct usb_host_endpoint *ep); | 362 | struct usb_host_endpoint *ep); |
| 337 | extern void usb_hcd_disable_endpoint(struct usb_device *udev, | 363 | extern void usb_hcd_disable_endpoint(struct usb_device *udev, |
| @@ -347,8 +373,12 @@ extern int usb_hcd_get_frame_number(struct usb_device *udev); | |||
| 347 | 373 | ||
| 348 | extern struct usb_hcd *usb_create_hcd(const struct hc_driver *driver, | 374 | extern struct usb_hcd *usb_create_hcd(const struct hc_driver *driver, |
| 349 | struct device *dev, const char *bus_name); | 375 | struct device *dev, const char *bus_name); |
| 376 | extern struct usb_hcd *usb_create_shared_hcd(const struct hc_driver *driver, | ||
| 377 | struct device *dev, const char *bus_name, | ||
| 378 | struct usb_hcd *shared_hcd); | ||
| 350 | extern struct usb_hcd *usb_get_hcd(struct usb_hcd *hcd); | 379 | extern struct usb_hcd *usb_get_hcd(struct usb_hcd *hcd); |
| 351 | extern void usb_put_hcd(struct usb_hcd *hcd); | 380 | extern void usb_put_hcd(struct usb_hcd *hcd); |
| 381 | extern int usb_hcd_is_primary_hcd(struct usb_hcd *hcd); | ||
| 352 | extern int usb_add_hcd(struct usb_hcd *hcd, | 382 | extern int usb_add_hcd(struct usb_hcd *hcd, |
| 353 | unsigned int irqnum, unsigned long irqflags); | 383 | unsigned int irqnum, unsigned long irqflags); |
| 354 | extern void usb_remove_hcd(struct usb_hcd *hcd); | 384 | extern void usb_remove_hcd(struct usb_hcd *hcd); |
| @@ -622,13 +652,6 @@ static inline void usbmon_urb_complete(struct usb_bus *bus, struct urb *urb, | |||
| 622 | 652 | ||
| 623 | /*-------------------------------------------------------------------------*/ | 653 | /*-------------------------------------------------------------------------*/ |
| 624 | 654 | ||
| 625 | /* hub.h ... DeviceRemovable in 2.4.2-ac11, gone in 2.4.10 */ | ||
| 626 | /* bleech -- resurfaced in 2.4.11 or 2.4.12 */ | ||
| 627 | #define bitmap DeviceRemovable | ||
| 628 | |||
| 629 | |||
| 630 | /*-------------------------------------------------------------------------*/ | ||
| 631 | |||
| 632 | /* random stuff */ | 655 | /* random stuff */ |
| 633 | 656 | ||
| 634 | #define RUN_CONTEXT (in_irq() ? "in_irq" \ | 657 | #define RUN_CONTEXT (in_irq() ? "in_irq" \ |
diff --git a/include/linux/usb/midi.h b/include/linux/usb/midi.h index 1d1040865661..c8c52e3c91de 100644 --- a/include/linux/usb/midi.h +++ b/include/linux/usb/midi.h | |||
| @@ -70,7 +70,7 @@ struct usb_midi_out_jack_descriptor { | |||
| 70 | __u8 bJackID; | 70 | __u8 bJackID; |
| 71 | __u8 bNrInputPins; /* p */ | 71 | __u8 bNrInputPins; /* p */ |
| 72 | struct usb_midi_source_pin pins[]; /* [p] */ | 72 | struct usb_midi_source_pin pins[]; /* [p] */ |
| 73 | /*__u8 iJack; -- ommitted due to variable-sized pins[] */ | 73 | /*__u8 iJack; -- omitted due to variable-sized pins[] */ |
| 74 | } __attribute__ ((packed)); | 74 | } __attribute__ ((packed)); |
| 75 | 75 | ||
| 76 | #define USB_DT_MIDI_OUT_SIZE(p) (7 + 2 * (p)) | 76 | #define USB_DT_MIDI_OUT_SIZE(p) (7 + 2 * (p)) |
diff --git a/include/linux/usb/msm_hsusb.h b/include/linux/usb/msm_hsusb.h index 3675e03b1539..3657403eac18 100644 --- a/include/linux/usb/msm_hsusb.h +++ b/include/linux/usb/msm_hsusb.h | |||
| @@ -55,7 +55,7 @@ enum otg_control_type { | |||
| 55 | 55 | ||
| 56 | /** | 56 | /** |
| 57 | * struct msm_otg_platform_data - platform device data | 57 | * struct msm_otg_platform_data - platform device data |
| 58 | * for msm72k_otg driver. | 58 | * for msm_otg driver. |
| 59 | * @phy_init_seq: PHY configuration sequence. val, reg pairs | 59 | * @phy_init_seq: PHY configuration sequence. val, reg pairs |
| 60 | * terminated by -1. | 60 | * terminated by -1. |
| 61 | * @vbus_power: VBUS power on/off routine. | 61 | * @vbus_power: VBUS power on/off routine. |
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index a1a1e7a73ec9..6e40718f5abe 100644 --- a/include/linux/usb/otg.h +++ b/include/linux/usb/otg.h | |||
| @@ -66,6 +66,7 @@ struct otg_transceiver { | |||
| 66 | 66 | ||
| 67 | u8 default_a; | 67 | u8 default_a; |
| 68 | enum usb_otg_state state; | 68 | enum usb_otg_state state; |
| 69 | enum usb_xceiv_events last_event; | ||
| 69 | 70 | ||
| 70 | struct usb_bus *host; | 71 | struct usb_bus *host; |
| 71 | struct usb_gadget *gadget; | 72 | struct usb_gadget *gadget; |
| @@ -74,7 +75,7 @@ struct otg_transceiver { | |||
| 74 | void __iomem *io_priv; | 75 | void __iomem *io_priv; |
| 75 | 76 | ||
| 76 | /* for notification of usb_xceiv_events */ | 77 | /* for notification of usb_xceiv_events */ |
| 77 | struct blocking_notifier_head notifier; | 78 | struct atomic_notifier_head notifier; |
| 78 | 79 | ||
| 79 | /* to pass extra port status to the root hub */ | 80 | /* to pass extra port status to the root hub */ |
| 80 | u16 port_status; | 81 | u16 port_status; |
| @@ -234,13 +235,13 @@ otg_start_srp(struct otg_transceiver *otg) | |||
| 234 | static inline int | 235 | static inline int |
| 235 | otg_register_notifier(struct otg_transceiver *otg, struct notifier_block *nb) | 236 | otg_register_notifier(struct otg_transceiver *otg, struct notifier_block *nb) |
| 236 | { | 237 | { |
| 237 | return blocking_notifier_chain_register(&otg->notifier, nb); | 238 | return atomic_notifier_chain_register(&otg->notifier, nb); |
| 238 | } | 239 | } |
| 239 | 240 | ||
| 240 | static inline void | 241 | static inline void |
| 241 | otg_unregister_notifier(struct otg_transceiver *otg, struct notifier_block *nb) | 242 | otg_unregister_notifier(struct otg_transceiver *otg, struct notifier_block *nb) |
| 242 | { | 243 | { |
| 243 | blocking_notifier_chain_unregister(&otg->notifier, nb); | 244 | atomic_notifier_chain_unregister(&otg->notifier, nb); |
| 244 | } | 245 | } |
| 245 | 246 | ||
| 246 | /* for OTG controller drivers (and maybe other stuff) */ | 247 | /* for OTG controller drivers (and maybe other stuff) */ |
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index c9049139a7a5..b29f70b2ecae 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
| @@ -191,7 +191,8 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data) | |||
| 191 | * @id_table: pointer to a list of usb_device_id structures that define all | 191 | * @id_table: pointer to a list of usb_device_id structures that define all |
| 192 | * of the devices this structure can support. | 192 | * of the devices this structure can support. |
| 193 | * @num_ports: the number of different ports this device will have. | 193 | * @num_ports: the number of different ports this device will have. |
| 194 | * @bulk_in_size: bytes to allocate for bulk-in buffer (0 = end-point size) | 194 | * @bulk_in_size: minimum number of bytes to allocate for bulk-in buffer |
| 195 | * (0 = end-point size) | ||
| 195 | * @bulk_out_size: bytes to allocate for bulk-out buffer (0 = end-point size) | 196 | * @bulk_out_size: bytes to allocate for bulk-out buffer (0 = end-point size) |
| 196 | * @calc_num_ports: pointer to a function to determine how many ports this | 197 | * @calc_num_ports: pointer to a function to determine how many ports this |
| 197 | * device has dynamically. It will be called after the probe() | 198 | * device has dynamically. It will be called after the probe() |
| @@ -260,7 +261,7 @@ struct usb_serial_driver { | |||
| 260 | const unsigned char *buf, int count); | 261 | const unsigned char *buf, int count); |
| 261 | /* Called only by the tty layer */ | 262 | /* Called only by the tty layer */ |
| 262 | int (*write_room)(struct tty_struct *tty); | 263 | int (*write_room)(struct tty_struct *tty); |
| 263 | int (*ioctl)(struct tty_struct *tty, struct file *file, | 264 | int (*ioctl)(struct tty_struct *tty, |
| 264 | unsigned int cmd, unsigned long arg); | 265 | unsigned int cmd, unsigned long arg); |
| 265 | void (*set_termios)(struct tty_struct *tty, | 266 | void (*set_termios)(struct tty_struct *tty, |
| 266 | struct usb_serial_port *port, struct ktermios *old); | 267 | struct usb_serial_port *port, struct ktermios *old); |
| @@ -268,8 +269,8 @@ struct usb_serial_driver { | |||
| 268 | int (*chars_in_buffer)(struct tty_struct *tty); | 269 | int (*chars_in_buffer)(struct tty_struct *tty); |
| 269 | void (*throttle)(struct tty_struct *tty); | 270 | void (*throttle)(struct tty_struct *tty); |
| 270 | void (*unthrottle)(struct tty_struct *tty); | 271 | void (*unthrottle)(struct tty_struct *tty); |
| 271 | int (*tiocmget)(struct tty_struct *tty, struct file *file); | 272 | int (*tiocmget)(struct tty_struct *tty); |
| 272 | int (*tiocmset)(struct tty_struct *tty, struct file *file, | 273 | int (*tiocmset)(struct tty_struct *tty, |
| 273 | unsigned int set, unsigned int clear); | 274 | unsigned int set, unsigned int clear); |
| 274 | int (*get_icount)(struct tty_struct *tty, | 275 | int (*get_icount)(struct tty_struct *tty, |
| 275 | struct serial_icounter_struct *icount); | 276 | struct serial_icounter_struct *icount); |
diff --git a/include/linux/usb/ulpi.h b/include/linux/usb/ulpi.h index 82b1507f4735..9595796d62ed 100644 --- a/include/linux/usb/ulpi.h +++ b/include/linux/usb/ulpi.h | |||
| @@ -184,4 +184,9 @@ | |||
| 184 | struct otg_transceiver *otg_ulpi_create(struct otg_io_access_ops *ops, | 184 | struct otg_transceiver *otg_ulpi_create(struct otg_io_access_ops *ops, |
| 185 | unsigned int flags); | 185 | unsigned int flags); |
| 186 | 186 | ||
| 187 | #ifdef CONFIG_USB_ULPI_VIEWPORT | ||
| 188 | /* access ops for controllers with a viewport register */ | ||
| 189 | extern struct otg_io_access_ops ulpi_viewport_access_ops; | ||
| 190 | #endif | ||
| 191 | |||
| 187 | #endif /* __LINUX_USB_ULPI_H */ | 192 | #endif /* __LINUX_USB_ULPI_H */ |
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index 44842c8d38c0..605b0aa8d852 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h | |||
| @@ -68,6 +68,7 @@ struct usbnet { | |||
| 68 | # define EVENT_RX_PAUSED 5 | 68 | # define EVENT_RX_PAUSED 5 |
| 69 | # define EVENT_DEV_WAKING 6 | 69 | # define EVENT_DEV_WAKING 6 |
| 70 | # define EVENT_DEV_ASLEEP 7 | 70 | # define EVENT_DEV_ASLEEP 7 |
| 71 | # define EVENT_DEV_OPEN 8 | ||
| 71 | }; | 72 | }; |
| 72 | 73 | ||
| 73 | static inline struct usb_driver *driver_of(struct usb_interface *intf) | 74 | static inline struct usb_driver *driver_of(struct usb_interface *intf) |
| @@ -97,11 +98,14 @@ struct driver_info { | |||
| 97 | 98 | ||
| 98 | #define FLAG_LINK_INTR 0x0800 /* updates link (carrier) status */ | 99 | #define FLAG_LINK_INTR 0x0800 /* updates link (carrier) status */ |
| 99 | 100 | ||
| 101 | #define FLAG_POINTTOPOINT 0x1000 /* possibly use "usb%d" names */ | ||
| 102 | |||
| 100 | /* | 103 | /* |
| 101 | * Indicates to usbnet, that USB driver accumulates multiple IP packets. | 104 | * Indicates to usbnet, that USB driver accumulates multiple IP packets. |
| 102 | * Affects statistic (counters) and short packet handling. | 105 | * Affects statistic (counters) and short packet handling. |
| 103 | */ | 106 | */ |
| 104 | #define FLAG_MULTI_PACKET 0x1000 | 107 | #define FLAG_MULTI_PACKET 0x2000 |
| 108 | #define FLAG_RX_ASSEMBLE 0x4000 /* rx packets may span >1 frames */ | ||
| 105 | 109 | ||
| 106 | /* init device ... can sleep, or cause probe() failure */ | 110 | /* init device ... can sleep, or cause probe() failure */ |
| 107 | int (*bind)(struct usbnet *, struct usb_interface *); | 111 | int (*bind)(struct usbnet *, struct usb_interface *); |
| @@ -172,7 +176,9 @@ struct cdc_state { | |||
| 172 | }; | 176 | }; |
| 173 | 177 | ||
| 174 | extern int usbnet_generic_cdc_bind(struct usbnet *, struct usb_interface *); | 178 | extern int usbnet_generic_cdc_bind(struct usbnet *, struct usb_interface *); |
| 179 | extern int usbnet_cdc_bind(struct usbnet *, struct usb_interface *); | ||
| 175 | extern void usbnet_cdc_unbind(struct usbnet *, struct usb_interface *); | 180 | extern void usbnet_cdc_unbind(struct usbnet *, struct usb_interface *); |
| 181 | extern void usbnet_cdc_status(struct usbnet *, struct urb *); | ||
| 176 | 182 | ||
| 177 | /* CDC and RNDIS support the same host-chosen packet filters for IN transfers */ | 183 | /* CDC and RNDIS support the same host-chosen packet filters for IN transfers */ |
| 178 | #define DEFAULT_FILTER (USB_CDC_PACKET_TYPE_BROADCAST \ | 184 | #define DEFAULT_FILTER (USB_CDC_PACKET_TYPE_BROADCAST \ |
diff --git a/include/linux/usb/wusb.h b/include/linux/usb/wusb.h index 63ebdcc5dda6..0c4d4ca370ec 100644 --- a/include/linux/usb/wusb.h +++ b/include/linux/usb/wusb.h | |||
| @@ -126,7 +126,7 @@ enum { | |||
| 126 | /** | 126 | /** |
| 127 | * WUSB IE: Channel Stop (WUSB1.0[7.5.8]) | 127 | * WUSB IE: Channel Stop (WUSB1.0[7.5.8]) |
| 128 | * | 128 | * |
| 129 | * Tells devices the host is going to stop sending MMCs and will dissapear. | 129 | * Tells devices the host is going to stop sending MMCs and will disappear. |
| 130 | */ | 130 | */ |
| 131 | struct wuie_channel_stop { | 131 | struct wuie_channel_stop { |
| 132 | struct wuie_hdr hdr; | 132 | struct wuie_hdr hdr; |
