usb: ether: call _usb_eth_halt() if initialization fails

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.

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
Acked-by: Lukasz Majewski <lukma@denx.de>
This commit is contained in:
Jean-Jacques Hiblot 2019-01-22 16:48:16 +01:00 committed by Tom Rini
parent a36c70a36d
commit 1c1464c2b1

View file

@ -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;