From f65cb6fc5a364f0efba4fc9f0039c4ddb34ef4dd Mon Sep 17 00:00:00 2001
From: wlf <wulf@rock-chips.com>
Date: Tue, 25 Mar 2014 18:10:53 +0800
Subject: [PATCH] USB: Fix EHCI bug if connect with FS or LS device.

---
 drivers/usb/host/ehci-hub.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index ca6289b4b7ad..d412e135c27d 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -285,6 +285,12 @@ static int ehci_bus_suspend (struct usb_hcd *hcd)
 				t2 |= PORT_WKOC_E | PORT_WKCONN_E;
 		}
 
+#ifdef CONFIG_USB_EHCI_RK
+		/* RK3288 do not support OHCI controller, so clear PORT_OWNER
+		 * here, otherwise EHCI can't be used anymore. wlf@20140325 */
+		t2 &= ~PORT_OWNER;
+#endif
+
 		if (t1 != t2) {
 			ehci_vdbg (ehci, "port %d, %08x -> %08x\n",
 				port + 1, t1, t2);
@@ -1053,6 +1059,12 @@ static int ehci_hub_control (
 				ehci_dbg (ehci,
 					"port %d low speed --> companion\n",
 					wIndex + 1);
+#ifdef CONFIG_USB_EHCI_RK
+				/* RK3288 do not support OHCI controller, so can't set PORT_OWNER
+				 * here, otherwise EHCI can't be used anymore. wlf@20140325 */
+				retval = -ENODEV;
+				break;
+#endif
 				temp |= PORT_OWNER;
 			} else {
 				ehci_vdbg (ehci, "port %d reset\n", wIndex + 1);
-- 
2.34.1