diff options
Diffstat (limited to 'freebsd/sys/dev/cadence/if_cgem.c')
-rw-r--r-- | freebsd/sys/dev/cadence/if_cgem.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/freebsd/sys/dev/cadence/if_cgem.c b/freebsd/sys/dev/cadence/if_cgem.c index 34df7ac7..3eaaf6b2 100644 --- a/freebsd/sys/dev/cadence/if_cgem.c +++ b/freebsd/sys/dev/cadence/if_cgem.c @@ -1953,6 +1953,25 @@ cgem_probe(device_t dev) if (ofw_bus_search_compatible(dev, compat_data)->ocd_data == 0) return (ENXIO); +#else /* __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; #endif /* __rtems__ */ device_set_desc(dev, "Cadence CGEM Gigabit Ethernet Interface"); |