Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Mar 2005 21:43:20 +0200
From:      Maxim Sobolev <sobomax@portaone.com>
To:        Ian Dowse <iedowse@maths.tcd.ie>
Cc:        cvs-all@FreeBSD.ORG
Subject:   Re: cvs commit: src/sys/dev/usb usb.c
Message-ID:  <4245BB58.3030206@portaone.com>
In-Reply-To: <200503261644.aa61215@salmon.maths.tcd.ie>
References:  <200503261644.aa61215@salmon.maths.tcd.ie>

next in thread | previous in thread | raw e-mail | index | archive | help
Yes, this patch helps. Thank you very much!

-Maxim

Ian Dowse wrote:
> In message <20050326160107.GA92727@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)
>  {
> 
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4245BB58.3030206>