diff options
-rw-r--r-- | drivers/usb/core/hub.c | 11 | ||||
-rw-r--r-- | drivers/usb/core/hub.h | 1 |
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 1815034ccb7a..830c851384bf 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -2211,12 +2211,13 @@ static int hub_port_debounce(struct usb_hub *hub, int port1) | |||
2211 | return portstatus; | 2211 | return portstatus; |
2212 | } | 2212 | } |
2213 | 2213 | ||
2214 | static void ep0_reinit(struct usb_device *udev) | 2214 | void usb_ep0_reinit(struct usb_device *udev) |
2215 | { | 2215 | { |
2216 | usb_disable_endpoint(udev, 0 + USB_DIR_IN); | 2216 | usb_disable_endpoint(udev, 0 + USB_DIR_IN); |
2217 | usb_disable_endpoint(udev, 0 + USB_DIR_OUT); | 2217 | usb_disable_endpoint(udev, 0 + USB_DIR_OUT); |
2218 | usb_enable_endpoint(udev, &udev->ep0); | 2218 | usb_enable_endpoint(udev, &udev->ep0); |
2219 | } | 2219 | } |
2220 | EXPORT_SYMBOL_GPL(usb_ep0_reinit); | ||
2220 | 2221 | ||
2221 | #define usb_sndaddr0pipe() (PIPE_CONTROL << 30) | 2222 | #define usb_sndaddr0pipe() (PIPE_CONTROL << 30) |
2222 | #define usb_rcvaddr0pipe() ((PIPE_CONTROL << 30) | USB_DIR_IN) | 2223 | #define usb_rcvaddr0pipe() ((PIPE_CONTROL << 30) | USB_DIR_IN) |
@@ -2237,7 +2238,7 @@ static int hub_set_address(struct usb_device *udev, int devnum) | |||
2237 | if (retval == 0) { | 2238 | if (retval == 0) { |
2238 | udev->devnum = devnum; /* Device now using proper address */ | 2239 | udev->devnum = devnum; /* Device now using proper address */ |
2239 | usb_set_device_state(udev, USB_STATE_ADDRESS); | 2240 | usb_set_device_state(udev, USB_STATE_ADDRESS); |
2240 | ep0_reinit(udev); | 2241 | usb_ep0_reinit(udev); |
2241 | } | 2242 | } |
2242 | return retval; | 2243 | return retval; |
2243 | } | 2244 | } |
@@ -2473,7 +2474,7 @@ hub_port_init (struct usb_hub *hub, struct usb_device *udev, int port1, | |||
2473 | } | 2474 | } |
2474 | dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i); | 2475 | dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i); |
2475 | udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i); | 2476 | udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i); |
2476 | ep0_reinit(udev); | 2477 | usb_ep0_reinit(udev); |
2477 | } | 2478 | } |
2478 | 2479 | ||
2479 | retval = usb_get_device_descriptor(udev, USB_DT_DEVICE_SIZE); | 2480 | retval = usb_get_device_descriptor(udev, USB_DT_DEVICE_SIZE); |
@@ -2729,7 +2730,7 @@ static void hub_port_connect_change(struct usb_hub *hub, int port1, | |||
2729 | loop_disable: | 2730 | loop_disable: |
2730 | hub_port_disable(hub, port1, 1); | 2731 | hub_port_disable(hub, port1, 1); |
2731 | loop: | 2732 | loop: |
2732 | ep0_reinit(udev); | 2733 | usb_ep0_reinit(udev); |
2733 | release_address(udev); | 2734 | release_address(udev); |
2734 | usb_put_dev(udev); | 2735 | usb_put_dev(udev); |
2735 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) | 2736 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) |
@@ -3164,7 +3165,7 @@ int usb_reset_device(struct usb_device *udev) | |||
3164 | 3165 | ||
3165 | /* ep0 maxpacket size may change; let the HCD know about it. | 3166 | /* ep0 maxpacket size may change; let the HCD know about it. |
3166 | * Other endpoints will be handled by re-enumeration. */ | 3167 | * Other endpoints will be handled by re-enumeration. */ |
3167 | ep0_reinit(udev); | 3168 | usb_ep0_reinit(udev); |
3168 | ret = hub_port_init(parent_hub, udev, port1, i); | 3169 | ret = hub_port_init(parent_hub, udev, port1, i); |
3169 | if (ret >= 0 || ret == -ENOTCONN || ret == -ENODEV) | 3170 | if (ret >= 0 || ret == -ENOTCONN || ret == -ENODEV) |
3170 | break; | 3171 | break; |
diff --git a/drivers/usb/core/hub.h b/drivers/usb/core/hub.h index d672cd81a3e4..2a116ce53c9b 100644 --- a/drivers/usb/core/hub.h +++ b/drivers/usb/core/hub.h | |||
@@ -195,5 +195,6 @@ struct usb_tt_clear { | |||
195 | }; | 195 | }; |
196 | 196 | ||
197 | extern void usb_hub_tt_clear_buffer(struct usb_device *dev, int pipe); | 197 | extern void usb_hub_tt_clear_buffer(struct usb_device *dev, int pipe); |
198 | extern void usb_ep0_reinit(struct usb_device *); | ||
198 | 199 | ||
199 | #endif /* __LINUX_HUB_H */ | 200 | #endif /* __LINUX_HUB_H */ |