|
@@ -2661,17 +2661,16 @@ static int hub_port_reset(struct usb_hub *hub, int port1,
|
|
|
{
|
|
|
int i, status;
|
|
|
|
|
|
- if (!warm) {
|
|
|
- /* Block EHCI CF initialization during the port reset.
|
|
|
- * Some companion controllers don't like it when they mix.
|
|
|
- */
|
|
|
- down_read(&ehci_cf_port_reset_rwsem);
|
|
|
- } else {
|
|
|
- if (!hub_is_superspeed(hub->hdev)) {
|
|
|
+ if (!hub_is_superspeed(hub->hdev)) {
|
|
|
+ if (warm) {
|
|
|
dev_err(hub->intfdev, "only USB3 hub support "
|
|
|
"warm reset\n");
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
+ /* Block EHCI CF initialization during the port reset.
|
|
|
+ * Some companion controllers don't like it when they mix.
|
|
|
+ */
|
|
|
+ down_read(&ehci_cf_port_reset_rwsem);
|
|
|
}
|
|
|
|
|
|
/* Reset the port */
|
|
@@ -2709,7 +2708,7 @@ static int hub_port_reset(struct usb_hub *hub, int port1,
|
|
|
port1);
|
|
|
|
|
|
done:
|
|
|
- if (!warm)
|
|
|
+ if (!hub_is_superspeed(hub->hdev))
|
|
|
up_read(&ehci_cf_port_reset_rwsem);
|
|
|
|
|
|
return status;
|