Message ID | 20190122154819.3171-2-jjhiblot@ti.com |
---|---|
State | Accepted |
Commit | 1c1464c2b19f1b96885040b8adc9cf5ba3c7b32d |
Delegated to: | Tom Rini |
Headers | show |
Series | Enable DM USB support (host and gadget) and full RNDIS boot flow | expand |
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
On Tue, Jan 22, 2019 at 04:48:16PM +0100, Jean-Jacques Hiblot wrote: > 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> Applied to u-boot/master, thanks!
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;
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> --- drivers/usb/gadget/ether.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)