--- fc722a025bd2927c0aa5346d12c610fb4d8fbce9 +++ ed3aa7a91afe3f6ac30a14404af7dea9a2ba595c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -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