cvs commit: src/sys/dev/usb usb.c
Ian Dowse
iedowse at maths.tcd.ie
Sat Mar 26 08:44:10 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-all
mailing list