diff options
| author | Marius Strobl <marius@FreeBSD.org> | 2007-01-13 00:17:39 +0000 |
|---|---|---|
| committer | Marius Strobl <marius@FreeBSD.org> | 2007-01-13 00:17:39 +0000 |
| commit | 2e0b46632104eb6bf84f37f031a30b36eed52ade (patch) | |
| tree | e5e4fd82fcc2fadf315140cad3259f51a6798359 /sys/dev/mii | |
| parent | 2bf52b991f1857beb8255f06e61bcf99b0c84680 (diff) | |
Notes
Diffstat (limited to 'sys/dev/mii')
| -rw-r--r-- | sys/dev/mii/rlphy.c | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/sys/dev/mii/rlphy.c b/sys/dev/mii/rlphy.c index 47d76092b1ee..243b608b5d13 100644 --- a/sys/dev/mii/rlphy.c +++ b/sys/dev/mii/rlphy.c @@ -82,6 +82,15 @@ DRIVER_MODULE(rlphy, miibus, rlphy_driver, rlphy_devclass, 0, 0); static int rlphy_service(struct mii_softc *, struct mii_data *, int); static void rlphy_status(struct mii_softc *); +/* + * RealTek internal PHYs don't have vendor/device ID registers; + * re(4) and rl(4) fake up a return value of all zeros. + */ +static const struct mii_phydesc rlintphys[] = { + { 0, 0, "RealTek internal media interface" }, + MII_PHY_END +}; + static const struct mii_phydesc rlphys[] = { MII_PHY_DESC(REALTEK, RTL8201L), MII_PHY_END @@ -90,7 +99,6 @@ static const struct mii_phydesc rlphys[] = { static int rlphy_probe(device_t dev) { - struct mii_attach_args *ma; const char *nic; int rv; @@ -98,25 +106,10 @@ rlphy_probe(device_t dev) if (rv <= 0) return (rv); - /* - * RealTek interal PHYs don't have vendor/device ID registers; - * the `re' and `rl' drivers fake up a return value of all zeros. - */ - ma = device_get_ivars(dev); - if (MII_OUI(ma->mii_id1, ma->mii_id2) != 0 || - MII_MODEL(ma->mii_id2) != 0) - return (ENXIO); - - /* - * Make sure the parent is an `rl' or an `re'. - */ nic = device_get_name(device_get_parent(device_get_parent(dev))); - if (strcmp(nic, "rl") != 0 && strcmp(nic, "re") != 0) - return (ENXIO); - - device_set_desc(dev, "RealTek internal media interface"); - - return (BUS_PROBE_DEFAULT); + if (strcmp(nic, "rl") == 0 && strcmp(nic, "re") == 0) + return (mii_phy_dev_probe(dev, rlintphys, BUS_PROBE_DEFAULT)); + return (ENXIO); } static int |
