[U-Boot] [PATCH 1/1] dwc2 USB controller hangs with lan78xx

Peter Robinson pbrobinson at gmail.com
Thu Jun 21 08:37:45 UTC 2018


On Mon, Jun 18, 2018 at 7:56 PM, Andrew Thomas <andrew.thomas at oracle.com> wrote:
> This bug is the combination of dwc2 USB controller and lan78xx
> USB ethernet controller, which is the combination in use on
> the Raspberry Pi Model 3 B+.
>
> When the host attempts to receive a packet, but a packet has not
> arrived, the lan78xx controller responds by setting BIR
> (Bulk-In Empty Response) to NAK. Unfortunately, this hangs
> the USB controller and requires the USB controller to
> be reset.
>
> The fix proposed is to have the lan78xx controller respond
> by setting BIR to ZLP.
>
> Signed-off-by: Andrew Thomas <andrew.thomas at oracle.com>
Tested-by: Peter Robinson <pbrobinson at gmail.com>

Tested on the RPi 3B+ and certainly improves this situation a number
of Fedora users have seen.

> ---
>  drivers/usb/eth/lan78xx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/eth/lan78xx.c b/drivers/usb/eth/lan78xx.c
> index c5ff379..e8ee665 100644
> --- a/drivers/usb/eth/lan78xx.c
> +++ b/drivers/usb/eth/lan78xx.c
> @@ -296,7 +296,7 @@ static int lan78xx_basic_reset(struct usb_device *udev,
>         ret = lan7x_read_reg(udev, LAN78XX_USB_CFG0, &val);
>         if (ret)
>                 return ret;
> -       val |= LAN78XX_USB_CFG0_BIR;
> +       val &= ~LAN78XX_USB_CFG0_BIR;
>         return lan7x_write_reg(udev, LAN78XX_USB_CFG0, val);
>  }
>
> --
> 1.8.3.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot


More information about the U-Boot mailing list