Dear Dan Murphy, > Add a __weak function that can be overridden to reset devices > attached to an ehci devices after the FEAT_POWER has been submitted > > Signed-off-by: Dan Murphy <dmur...@ti.com> > --- > drivers/usb/host/ehci-hcd.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c > index 706cf0c..fdd3994 100644 > --- a/drivers/usb/host/ehci-hcd.c > +++ b/drivers/usb/host/ehci-hcd.c > @@ -616,6 +616,11 @@ __weak uint32_t *ehci_get_portsc_register(struct > ehci_hcor *hcor, int port) return (uint32_t *)&hcor->or_portsc[port]; > } > > +__weak void ehci_reset_attached_devices(int port) > +{ > + return; > +} > +
Can the reset not happen elsewhere? > int > ehci_submit_root(struct usb_device *dev, unsigned long pipe, void *buffer, > int length, struct devrequest *req) > @@ -777,6 +782,7 @@ ehci_submit_root(struct usb_device *dev, unsigned long > pipe, void *buffer, reg |= EHCI_PS_PP; > ehci_writel(status_reg, reg); > } > + ehci_reset_attached_devices(port); > break; > case USB_PORT_FEAT_RESET: > if ((reg & (EHCI_PS_PE | EHCI_PS_CS)) == EHCI_PS_CS && > @@ -794,6 +800,7 @@ ehci_submit_root(struct usb_device *dev, unsigned long > pipe, void *buffer, reg |= EHCI_PS_PR; > reg &= ~EHCI_PS_PE; > ehci_writel(status_reg, reg); > + NAK > /* > * caller must wait, then call GetPortStatus > * usb 2.0 specification say 50 ms resets on Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot