aboutsummaryrefslogtreecommitdiff
path: root/sys/arm/allwinner/if_awg.c
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2018-02-07 01:54:13 +0000
committerKyle Evans <kevans@FreeBSD.org>2018-02-07 01:54:13 +0000
commit87fb7f5b584f6f1341df4edd657de206a13c4482 (patch)
treeb5600816afec4c3e25a67eba2c11ed7a594b09bc /sys/arm/allwinner/if_awg.c
parentc4b72d8b37fa833fabdb034d2611c2ac3e8f0f68 (diff)
if_awg: Skip emac reset if configured for internal PHY
On the OrangePi One at least, emac reset when an ethernet cable is not plugged in seems to break ethernet. Soft reset will fail, even with increasing the delay and retries to wait for up to 20 seconds. This can be reproduced across at least two different OrangePi One's by simply leaving ethernet cable unplugged when awg attaches. Whether it's plugged in or not through u-boot process makes no difference. Skipping the reset in this configuration doesn't seem to cause any problems, tried across many many reboots with and without ethernet cable plugged in. Tested on: OrangePi One Tested on: Other boards (manu) Reviewed by: manu Differential Revision: https://reviews.freebsd.org/D13974
Notes
Notes: svn path=/head/; revision=328964
Diffstat (limited to 'sys/arm/allwinner/if_awg.c')
-rw-r--r--sys/arm/allwinner/if_awg.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/arm/allwinner/if_awg.c b/sys/arm/allwinner/if_awg.c
index 6f0cef88b185..cb3dc171c77a 100644
--- a/sys/arm/allwinner/if_awg.c
+++ b/sys/arm/allwinner/if_awg.c
@@ -1834,9 +1834,11 @@ awg_attach(device_t dev)
awg_get_eaddr(dev, eaddr);
/* Soft reset EMAC core */
- error = awg_reset(dev);
- if (error != 0)
- return (error);
+ if (!awg_has_internal_phy(dev)) {
+ error = awg_reset(dev);
+ if (error != 0)
+ return (error);
+ }
/* Setup DMA descriptors */
error = awg_setup_dma(dev);