On Wed, 6 Aug 2008, Simon Arlott wrote:
> Doing the HCD initcalls last certainly ought to work.
Right - so then all that's needed is to move usb/ before most other things that take a while to init, and it has some time to initialise usb devices in the background.
Not exactly -- you should move most of usb/ forward so that it comes
before usb/host/. Or alternatively move usb/host/ later so that it comes after the rest of usb/.
> So what exactly do you recommend?
I'm not an expert on what can be done with the Makefile process, perhaps there's an easier way to move things around based on a config option. If host init is moved before device init for everyone, wouldn't there be too many side effects?
Doesn't the host init _already_ come before device init? If host init were moved _after_ device init, I don't think there would be a lot of side effects. But it's hard to be sure without trying it.
Lack of a keyboard makes it impossible to do anything if the module fails to load... as I understand it when the HCD init runs, any BIOS emulation stops?
That's right. The host driver kicks the BIOS off the hardware.
Although if HCD is a module too...
>> If even one device driver and the hcd is compiled in, they'd need to >> wait for every USB device to finish init before the usbhid probe could complete.
> > What if usbhid is the one device driver that is compiled in? :-)
That was the situation I was thinking of - surely that would be compiled in if the HCDs were?
I noticed in your logs earlier that some of your USB drivers were compiled in and others weren't. Maybe if _all_ of them were compiled in you wouldn't experience as much contention and the init delays would be shorter.