On 13 September 2011 11:34, Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> wrote: > On Mon, Sep 12, 2011 at 02:26:00PM +0400, Antony Pavlov wrote: >> Signed-off-by: Antony Pavlov <antonynpavlov@xxxxxxxxx> >> --- >> drivers/usb/host/ehci-hcd.c | 9 ++------- >> 1 files changed, 2 insertions(+), 7 deletions(-) >> >> diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c >> index 60fc181..883dc07 100644 >> --- a/drivers/usb/host/ehci-hcd.c >> +++ b/drivers/usb/host/ehci-hcd.c >> @@ -921,15 +921,10 @@ static int ehci_probe(struct device_d *dev) >> host->submit_control_msg = submit_control_msg; >> host->submit_bulk_msg = submit_bulk_msg; >> >> - if (ehci->flags & EHCI_HAS_TT) { >> - /* Set to host mode */ >> - reg = ehci_readl(ehci->hcor + USBMODE); >> - reg |= USBMODE_CM_HC; >> - writel(reg, ehci->hcor + USBMODE); >> - } >> - >> usb_register_host(host); >> >> + ehci_reset(ehci); >> + > > ehci_reset is called from ehci_init. Isn't that enough or do we have to > call it explicitely here? I suppose it's preferable reset the controller after changing "host controller mode" bit (USBMODE_CM_HC). Let's check the file drivers/usb/host/ehci-hcd.c from linux kernel sources, in ehci_reset() we have: if (ehci_is_TDI(ehci)) tdi_reset (ehci); On my Tegra board I found the problem: board hangs up on the first ehci_readl() after setting USBMODE_CM_HC bit. >> reg = HC_VERSION(ehci_readl(&ehci->hccr->cr_capbase)); >> dev_info(dev, "USB EHCI %x.%02x\n", reg >> 8, reg & 0xff); >> >> -- >> 1.7.5.4 >> -- Best regards, Antony Pavlov _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox