[PATCH] OHCI suspend/resume issue.

"Zephaniah E. Hull" <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
OHCI isn't coming back on the OLPC after resume.

After a bit of testing, the problem seems to have come down to two points.

The first is that ohci_pci_resume is not forcing the root hub to be resumed
properly, that's a fairly trivial and obviously correct patch.

The second is trickier, ohci_rh_resume is getting called in a state that it
thinks is an indication that it's coming back from a SUSPEND where it did not
lose power.

I've patched it, and hopefully there won't be any false positives, but I don't
have another machine to do suspend/resume testing on, so while it works for me,
I can't guarantee that it won't cause problems for others.

In any case, USB 1.1 devices directly plugged into the machine didn't work
after resume before this, and do now.

Signed-off-by: Zephaniah E. Hull <[email protected]>

diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
index bb9cc59..3660dcc 100644
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -165,6 +165,12 @@ static int ohci_rh_resume (struct ohci_hcd *ohci)
 		}
 	} else switch (ohci->hc_control & OHCI_CTRL_HCFS) {
 	case OHCI_USB_SUSPEND:
+		/* FIXME: we should try to detect loss of VBUS better. */
+	   	if (!autostopped) {
+			ohci_dbg (ohci, "resume root hub -- lost power\n");
+			status = -EBUSY;
+			break;
+		}
 		ohci->hc_control &= ~(OHCI_CTRL_HCFS|OHCI_SCHED_ENABLES);
 		ohci->hc_control |= OHCI_USB_RESUME;
 		ohci_writel (ohci, ohci->hc_control, &ohci->regs->control);
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index 48de318..ae1ecb2 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -282,7 +282,9 @@ static int ohci_pci_resume (struct usb_hcd *hcd)
 	prepare_for_handover(hcd);
 
 	/* Force the PM core to resume the root hub */
-	hcd_to_bus(hcd)->root_hub->dev.power.prev_state.event = PM_EVENT_ON;
+	usb_root_hub_lost_power(hcd->self.root_hub);
+
+	hcd->state = HC_STATE_SUSPENDED;
 	return 0;
 }
 

-- 
	  1024D/E65A7801 Zephaniah E. Hull <[email protected]>
	   92ED 94E4 B1E6 3624 226D  5727 4453 008B E65A 7801
	    CCs of replies from mailing lists are requested.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/

_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFGuyaLRFMAi+ZaeAERAsPIAKC2jTVjNykGL9eDY5jqzG2sFrD4PACfRqrb
7v6Myjs4ebpuuS6cH2sil/Q=
=Iez5
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.