static int bmtphy_probe(device_t dev) { int rval; /* Let exphy(4) take precedence for these. */ rval = mii_phy_dev_probe(dev, bmtphys_lp, BUS_PROBE_LOW_PRIORITY); if (rval <= 0) return (rval); return (mii_phy_dev_probe(dev, bmtphys_dp, BUS_PROBE_DEFAULT)); }
static int rlphy_probe(device_t dev) { int rv; rv = mii_phy_dev_probe(dev, rlphys, BUS_PROBE_DEFAULT); if (rv <= 0) return (rv); if (mii_dev_mac_match(dev, "rl") || mii_dev_mac_match(dev, "re")) return (mii_phy_dev_probe(dev, rlintphys, BUS_PROBE_DEFAULT)); return (ENXIO); }
static int rlphy_probe(device_t dev) { const char *nic; int rv; rv = mii_phy_dev_probe(dev, rlphys, BUS_PROBE_DEFAULT); if (rv <= 0) return (rv); nic = device_get_name(device_get_parent(device_get_parent(dev))); if (strcmp(nic, "rl") == 0 || strcmp(nic, "re") == 0) return (mii_phy_dev_probe(dev, rlintphys, BUS_PROBE_DEFAULT)); return (ENXIO); }
static int bmtphy_probe(device_t dev) { int rval; /* Let exphy(4) take precedence for these. */ rval = mii_phy_dev_probe(dev, bmtphys_lp, BUS_PROBE_LOW_PRIORITY); #ifndef __HAIKU__ if (rval <= 0) #else if (rval <= 0 && rval != ENXIO) return (rval); #endif return (mii_phy_dev_probe(dev, bmtphys_dp, BUS_PROBE_DEFAULT)); }
static int tlphy_probe(device_t dev) { if (strcmp(device_get_name(device_get_parent(device_get_parent(dev))), "tl") != 0) return (ENXIO); return (mii_phy_dev_probe(dev, tlphys, BUS_PROBE_DEFAULT)); }
static int rlphy_attach(device_t dev) { struct mii_softc *sc; struct mii_attach_args *ma; struct mii_data *mii; struct rlphy_softc *rsc; sc = device_get_softc(dev); ma = device_get_ivars(dev); sc->mii_dev = device_get_parent(dev); mii = device_get_softc(sc->mii_dev); /* * Check whether we're the RTL8201L PHY and remember so the status * routine can query the proper register for speed detection. */ rsc = (struct rlphy_softc *)sc; if (mii_phy_dev_probe(dev, rlphys, 0) == 0) rsc->sc_is_RTL8201L++; /* * The RealTek PHY can never be isolated, so never allow non-zero * instances! */ if (mii->mii_instance != 0) { device_printf(dev, "ignoring this PHY, non-zero instance\n"); return (ENXIO); } LIST_INSERT_HEAD(&mii->mii_phys, sc, mii_list); sc->mii_inst = mii->mii_instance; sc->mii_phy = ma->mii_phyno; sc->mii_service = rlphy_service; sc->mii_pdata = mii; mii->mii_instance++; sc->mii_flags |= MIIF_NOISOLATE; #define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL) ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_TX, IFM_LOOP, sc->mii_inst), MII_MEDIA_100_TX); mii_phy_reset(sc); sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; device_printf(dev, " "); mii_phy_add_media(sc); printf("\n"); #undef ADD MIIBUS_MEDIAINIT(sc->mii_dev); return (0); }
static int rlswitch_probe(device_t dev) { int rv; rv = mii_phy_dev_probe(dev, rlswitches, BUS_PROBE_DEFAULT); if (rv <= 0) return (rv); return (ENXIO); }
static int micphy_probe(device_t dev) { return (mii_phy_dev_probe(dev, micphys, BUS_PROBE_DEFAULT)); }
static int nsphyter_probe(device_t dev) { return (mii_phy_dev_probe(dev, nsphyters, BUS_PROBE_DEFAULT)); }