On 7/11/2021 19:47, Chris Johns wrote:
On 10/7/21 12:53 am, Kinsey Moore wrote:
When the MII bus is unterminated on unused interfaces, it results in PHY
read timeouts which manifest as spurious PHYs during the attach call.
Detect these timeouts during the probe so the device can be ignored.
---
freebsd/sys/dev/cadence/if_cgem.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/freebsd/sys/dev/cadence/if_cgem.c
b/freebsd/sys/dev/cadence/if_cgem.c
index 34df7ac7..51e0bd6d 100644
--- a/freebsd/sys/dev/cadence/if_cgem.c
+++ b/freebsd/sys/dev/cadence/if_cgem.c
@@ -1955,6 +1955,24 @@ cgem_probe(device_t dev)
return (ENXIO);
#endif /* __rtems__ */
+ struct cgem_softc *sc = device_get_softc(dev);
+ int val, rid = 0;
+
+ /* Check for PHY read timeouts which indicate an unterminated MII bus */
+ sc->mem_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid,
+ RF_ACTIVE);
+
+ val = cgem_miibus_readreg(dev, 0, MII_BMSR);
+ if (val == -1) {
+ bus_release_resource(dev, SYS_RES_MEMORY, &rid,
+ sc->mem_res);
+ sc->mem_res = NULL;
+ return (ENXIO);
+ }
+ bus_release_resource(dev, SYS_RES_MEMORY, &rid,
+ sc->mem_res);
+ sc->mem_res = NULL;
Should this change be in an "#else /* __rtems__ */" section until merged
upstream?
Otherwise this change is looking good.
Chris
+
device_set_desc(dev, "Cadence CGEM Gigabit Ethernet Interface");
return (0);
}
I'll wrap it in the #else block before commit, thanks.
Kinsey
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel