On Mon, Oct 21, 2013 at 12:24:22PM +0400, Alexander Shiyan wrote: > Host with inoperable ULPI able to bring the system into an > infinite loop. The patch adds error checking during initialization > to avoid this. > > Signed-off-by: Alexander Shiyan <shc_work@xxxxxxx> Applied, thanks Sascha > --- > drivers/usb/host/ehci-hcd.c | 12 ++++++++---- > 1 file changed, 8 insertions(+), 4 deletions(-) > > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c > index cb6a592..2da3edd 100644 > --- a/drivers/usb/host/ehci-hcd.c > +++ b/drivers/usb/host/ehci-hcd.c > @@ -748,6 +748,7 @@ static int ehci_init(struct usb_host *host) > struct ehci_priv *ehci = to_ehci(host); > uint32_t reg; > uint32_t cmd; > + int ret = 0; > > ehci_halt(ehci); > > @@ -755,8 +756,11 @@ static int ehci_init(struct usb_host *host) > if (ehci_reset(ehci) != 0) > return -1; > > - if (ehci->init) > - ehci->init(ehci->drvdata); > + if (ehci->init) { > + ret = ehci->init(ehci->drvdata); > + if (ret) > + return ret; > + } > > ehci->qh_list->qh_link = cpu_to_hc32((uint32_t)ehci->qh_list | QH_LINK_TYPE_QH); > ehci->qh_list->qh_endpt1 = cpu_to_hc32((1 << 15) | (USB_SPEED_HIGH << 12)); > @@ -799,9 +803,9 @@ static int ehci_init(struct usb_host *host) > ehci->rootdev = 0; > > if (ehci->post_init) > - ehci->post_init(ehci->drvdata); > + ret = ehci->post_init(ehci->drvdata); > > - return 0; > + return ret; > } > > static int > -- > 1.8.1.5 > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox