summaryrefslogtreecommitdiff
path: root/drivers/net/rtl8169.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2020-06-12 14:58:12 -0400
committerTom Rini <trini@konsulko.com>2020-06-12 14:58:12 -0400
commit8a1292ce3e21205645a155b23ac083a3fc6b64c1 (patch)
tree48fcd8954ca5d99a1b0e834d24031fbc353bf762 /drivers/net/rtl8169.c
parentd16b38f42704fe3cc94fbee1601be96045013151 (diff)
parentf1d925d9c39628d346b3809408695cd5c8b8faa2 (diff)
Merge branch '2020-06-12-next-net' into next
- Merge tbs2910 distro boot support and associated clean-ups and size reduction. - Assorted networking corrections / bugfixes. - Drop smc911x standalone API example as it was likely non-functional for a long time. - Enhanced support for TI PHYs - rtl8139 DM conversion
Diffstat (limited to 'drivers/net/rtl8169.c')
-rw-r--r--drivers/net/rtl8169.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 75058fdadc0..fb4fae20e53 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -240,6 +240,9 @@ enum RTL8169_register_content {
/*_TBICSRBit*/
TBILinkOK = 0x02000000,
+
+ /* FuncEvent/Misc */
+ RxDv_Gated_En = 0x80000,
};
static struct {
@@ -1210,6 +1213,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;
}