
On 06/21/2018 01:37 AM, Peter Robinson wrote:
On Mon, Jun 18, 2018 at 7:56 PM, Andrew Thomas andrew.thomas@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@oracle.com
Tested-by: Peter Robinson pbrobinson@gmail.com
Tested on the RPi 3B+ and certainly improves this situation a number of Fedora users have seen.
Thanks for testing!
One odd, and inexplicable, issue I have encountered is that some VGA monitors will cause the dwc2/lan78xx combination to fail.
I have a DVI based monitor, which causes the failure. Whereas an HDMI monitor works fine. I hesitate to guess why this is.
For the monitor which causes problems, I am using a config file with:
hdmi_ignore_edid=0xa5000080 hdmi_group=2 hdmi_mode=85
With this config, I see no issues with the troublesome monitor.
It's just bizzarre :-)
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@lists.denx.de https://lists.denx.de/listinfo/u-boot