Message ID | 1585263554-10258-2-git-send-email-tomcwarren3959@gmail.com |
---|---|
State | Accepted |
Commit | a7a435e7d41db6a611427b4cc5fd506a18fb2c2f |
Delegated to: | Tom Rini |
Headers | show |
Series | net: tegra: Misc network fixes | expand |
On Thu, Mar 26, 2020 at 03:59:13PM -0700, tomcwarren3959@gmail.com wrote: > From: Tom Warren <twarren@nvidia.com> > > This is a WAR for DHCP failure after rebooting from the L4T kernel. The > r8169.c kernel driver is setting bit 19 of the rt816x HW register 0xF0, > which goes by FuncEvent and MISC in various driver source/datasheets. > That bit is called RxDv_Gated_En in the r8169.c kernel driver. Clear it > here at the end of probe to ensure that U-Boot can get an IP assigned > via DHCP. > > Signed-off-by: Tom Warren <twarren@nvidia.com> Applied to u-boot/next, thanks!
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c index 5ccdfdd..ff89e28 100644 --- a/drivers/net/rtl8169.c +++ b/drivers/net/rtl8169.c @@ -237,6 +237,9 @@ enum RTL8169_register_content { /*_TBICSRBit*/ TBILinkOK = 0x02000000, + + /* FuncEvent/Misc */ + RxDv_Gated_En = 0x80000, }; static struct { @@ -1207,6 +1210,19 @@ static int rtl8169_eth_probe(struct udevice *dev) return ret; } + /* + * WAR for DHCP failure after rebooting from kernel. + * Clear RxDv_Gated_En bit which was set by kernel driver. + * Without this, U-Boot can't get an IP via DHCP. + * Register (FuncEvent, aka MISC) and RXDV_GATED_EN bit are from + * the r8169.c kernel driver. + */ + + u32 val = RTL_R32(FuncEvent); + debug("%s: FuncEvent/Misc (0xF0) = 0x%08X\n", __func__, val); + val &= ~RxDv_Gated_En; + RTL_W32(FuncEvent, val); + return 0; }