cvs commit: src/sys/dev/usb usb.c

Ian Dowse iedowse at maths.tcd.ie
Sat Mar 26 08:44:09 PST 2005


In message <20050326160107.GA92727 at www.portaone.com>, Maxim Sobolev writes:
>Please note that when I take ehci out of kernel those devices are
>attached before root fs is mounted. If it can help I can send you
>dmesg without ehci.

Ah, for directly connected low/full speed devices I guess we need
to do the ehci explore in order to hand the port over to the companion
controller.

Below is a possible solution to this. Alternatively even just
changing the usb_coldexplist TAILQ_INSERT_TAIL to a TAILQ_INSERT_HEAD
would probably do the trick.

Let me know if this helps.

Thanks,

Ian

Index: usb.c
===================================================================
RCS file: /dump/FreeBSD-CVS/src/sys/dev/usb/usb.c,v
retrieving revision 1.105
diff -u -r1.105 usb.c
--- usb.c	19 Mar 2005 19:27:38 -0000	1.105
+++ usb.c	26 Mar 2005 16:33:37 -0000
@@ -301,8 +301,14 @@
 		 * the keyboard will not work until after cold boot.
 		 */
 #if defined(__FreeBSD__)
-		if (cold)
-			TAILQ_INSERT_TAIL(&usb_coldexplist, sc, sc_coldexplist);
+		if (cold) {
+			/* Explore high-speed busses now, but defer others. */
+			if (speed == USB_SPEED_HIGH)
+				dev->hub->explore(sc->sc_bus->root_hub);
+			else
+				TAILQ_INSERT_TAIL(&usb_coldexplist, sc,
+				    sc_coldexplist);
+		}
 #else
 		if (cold && (sc->sc_dev.dv_cfdata->cf_flags & 1))
 			dev->hub->explore(sc->sc_bus->root_hub);
@@ -952,7 +958,7 @@
 	sc->sc_port.device = NULL;
 }
 
-/* Explore all USB busses at the end of device configuration. */
+/* Explore USB busses at the end of device configuration. */
 Static void
 usb_cold_explore(void *arg)
 {



More information about the cvs-src mailing list