summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2014-11-04 11:14:31 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-03 19:29:55 -0800
commitb2108f1e519e983e5dd5712b3a44f7366ab509e4 (patch)
treea8c8eeb71f6f6809b3327c9a4c3021696d7c47bb
parent01ed67dc70834d00d62b6e754ee0f76301fbc140 (diff)
downloadop-kernel-dev-b2108f1e519e983e5dd5712b3a44f7366ab509e4.zip
op-kernel-dev-b2108f1e519e983e5dd5712b3a44f7366ab509e4.tar.gz
usb: core: notify disconnection when core detects disconnect
It is safe to call notify disconnect when the usb core thinks the device is disconnected. This commit also fixes one bug found at below situation: we have not enabled usb wakeup, we do system suspend when there is an usb device at the port, after suspend, we plug out the usb device, then plug in device again. At that time, the nofity disconnect was not called at current code, as the controller doesn't know the usb device was disconnected during the suspend, but USB core knows the port has changed during that periods. So to fix this problem, and let the usb core call notify disconnect. Cc: 3.17+ <stable@vger.kernel.org> Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/core/hub.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 65a8e50..b649fef 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4624,8 +4624,7 @@ static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
/* Disconnect any existing devices under this port */
if (udev) {
- if (hcd->usb_phy && !hdev->parent &&
- !(portstatus & USB_PORT_STAT_CONNECTION))
+ if (hcd->usb_phy && !hdev->parent)
usb_phy_notify_disconnect(hcd->usb_phy, udev->speed);
usb_disconnect(&port_dev->child);
}
OpenPOWER on IntegriCloud