
Hi Jean-Jacques,
If the host does not respond in time, the initialization fails. However the usb ether driver will still be registered. This will make usb_gadget_probe_driver() fail the next time the initialization is attempted because it cannot find an available UDC.
Fixing this by calling _usb_eth_halt() when the init fails.
Acked-by: Lukasz Majewski lukma@denx.de
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
drivers/usb/gadget/ether.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index 3b3d9af681..57edaa3ac8 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c @@ -2333,6 +2333,8 @@ fail: }
/*-------------------------------------------------------------------------*/ +static void _usb_eth_halt(struct ether_priv *priv);
static int _usb_eth_init(struct ether_priv *priv) { struct eth_dev *dev = &priv->ethdev; @@ -2406,6 +2408,7 @@ static int _usb_eth_init(struct ether_priv *priv) rx_submit(dev, dev->rx_req, 0); return 0; fail:
- _usb_eth_halt(priv); return -1;
}
@@ -2485,7 +2488,7 @@ static int _usb_eth_recv(struct ether_priv *priv) return 0; }
-void _usb_eth_halt(struct ether_priv *priv) +static void _usb_eth_halt(struct ether_priv *priv) { struct eth_dev *dev = &priv->ethdev;
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de