Patch 2.6.32.28 to 2.6.32.32
/drivers/usb/core/hub.c
blob:fc722a025bd2927c0aa5346d12c610fb4d8fbce9 -> blob:ed3aa7a91afe3f6ac30a14404af7dea9a2ba595c
--- drivers/usb/core/hub.c
+++ drivers/usb/core/hub.c
@@ -22,7 +22,6 @@
#include <linux/kthread.h>
#include <linux/mutex.h>
#include <linux/freezer.h>
-#include <linux/usb/quirks.h>
#include <asm/uaccess.h>
#include <asm/byteorder.h>
@@ -648,8 +647,6 @@ static void hub_init_func3(struct work_s
static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
{
struct usb_device *hdev = hub->hdev;
- struct usb_hcd *hcd;
- int ret;
int port1;
int status;
bool need_debounce_delay = false;
@@ -688,25 +685,6 @@ static void hub_activate(struct usb_hub
atomic_set(&to_usb_interface(hub->intfdev)->
pm_usage_cnt, 1);
return; /* Continues at init2: below */
- } else if (type == HUB_RESET_RESUME) {
- /* The internal host controller state for the hub device
- * may be gone after a host power loss on system resume.
- * Update the device's info so the HW knows it's a hub.
- */
- hcd = bus_to_hcd(hdev->bus);
- if (hcd->driver->update_hub_device) {
- ret = hcd->driver->update_hub_device(hcd, hdev,
- &hub->tt, GFP_NOIO);
- if (ret < 0) {
- dev_err(hub->intfdev, "Host not "
- "accepting hub info "
- "update.\n");
- dev_err(hub->intfdev, "LS/FS devices "
- "and hubs may not work "
- "under this hub\n.");
- }
- }
- hub_power_on(hub, true);
} else {
hub_power_on(hub, true);
}
@@ -1790,6 +1768,7 @@ int usb_new_device(struct usb_device *ud
if (udev->parent)
usb_autoresume_device(udev->parent);
+ usb_detect_quirks(udev);
err = usb_enumerate_device(udev); /* Read descriptors */
if (err < 0)
goto fail;
@@ -2704,11 +2683,6 @@ hub_port_init (struct usb_hub *hub, stru
udev->ttport = hdev->ttport;
} else if (udev->speed != USB_SPEED_HIGH
&& hdev->speed == USB_SPEED_HIGH) {
- if (!hub->tt.hub) {
- dev_err(&udev->dev, "parent hub has no TT\n");
- retval = -EINVAL;
- goto fail;
- }
udev->tt = &hub->tt;
udev->ttport = port1;
}
@@ -2847,16 +2821,13 @@ hub_port_init (struct usb_hub *hub, stru
else
i = udev->descriptor.bMaxPacketSize0;
if (le16_to_cpu(udev->ep0.desc.wMaxPacketSize) != i) {
- if (udev->speed == USB_SPEED_LOW ||
+ if (udev->speed != USB_SPEED_FULL ||
!(i == 8 || i == 16 || i == 32 || i == 64)) {
- dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i);
+ dev_err(&udev->dev, "ep0 maxpacket = %d\n", i);
retval = -EMSGSIZE;
goto fail;
}
- if (udev->speed == USB_SPEED_FULL)
- dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
- else
- dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i);
+ dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i);
usb_ep0_reinit(udev);
}
@@ -3092,10 +3063,6 @@ static void hub_port_connect_change(stru
if (status < 0)
goto loop;
- usb_detect_quirks(udev);
- if (udev->quirks & USB_QUIRK_DELAY_INIT)
- msleep(1000);
-
/* consecutive bus-powered hubs aren't reliable; they can
* violate the voltage drop budget. if the new child has
* a "powered" LED, users should notice we didn't enable it