summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Jacques Hiblot <jjhiblot@ti.com>2019-01-22 16:48:16 +0100
committerTom Rini <trini@konsulko.com>2019-02-01 09:09:40 -0500
commit1c1464c2b19f1b96885040b8adc9cf5ba3c7b32d (patch)
treef4383eeb4a4b48572e602635dd7e72ee8a925a0c
parenta36c70a36d4660e858dd2ff43d874a3ec013b436 (diff)
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>
-rw-r--r--drivers/usb/gadget/ether.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index e4993dc6e6..0b5a1a4796 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;