Hi Alan,
On Mon, Mar 25, 2013 at 10:28:04PM +0800, Alan Stern wrote:
> On Mon, 25 Mar 2013, Huang Rui wrote:
>
> > Hi Alan,
> >
> > Thank you to take a look at this issue. Sorry to disturb you again.
> > The PORT ENABLE(PORT_PE) bit in PORTSC register is not set when the
> > port reset, in other words, host controller and device might not do
> > alternating sequence of Chirp Ks and Chirp Js or not be detected. Am I
> > right?
>
> Yes.
Thanks to your confirm.
>
> > I found why the boot issue is not alway reproduced. Because
> > sometimes ehci_hcd is not loaded before ohci_hcd.
> >
> > [ 25.068090] Warning! ehci_hcd should always be loaded before uhci_hcd
> > and ohci_hcd, not after
> >
> > If ehci_hcd is loaded firstly, the USB Reader(in my side) is always
> > detected as high speed device. Then I do below change and boot issue
> > isn't encountered again.
> >
> > diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> > index 180a2b0..30fc91c 100644
> > --- a/drivers/usb/host/ohci-hcd.c
> > +++ b/drivers/usb/host/ohci-hcd.c
> > @@ -1325,7 +1325,7 @@ static int __init ohci_hcd_mod_init(void)
> > clear_bit(USB_OHCI_LOADED, &usb_hcds_loaded);
> > return retval;
> > }
> > -module_init(ohci_hcd_mod_init);
> > +late_initcall(ohci_hcd_mod_init);
> >
> > static void __exit ohci_hcd_mod_exit(void)
> > {
> >
> > But I think it's not a good solution. Have you any idea to have an
> > appropriate way to make ehci_hcd loaded firstly?
>
> In general there is no way to do it. Especially with modern kernels,
> because what matters is ehci-pci, not ehci-hcd. And also because the
> order of probing is not always the same.
>
> I suppose you could build a kernel with CONFIG_USB_EHCI_HCD=y and
> CONFIG_USB_EHCI_PCI=y but CONFIG_USB_OHCI_HCD=m. That might help.
Yes, you're right. Thanks again to your suggestion.
Best Regards,
Rui
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html