mii: Add RealTek RTL8251 phy found on an ASUS A88XM-Plus mainboard.
authorImre Vadasz <imre@vdsz.com>
Sat, 19 Jul 2014 09:54:27 +0000 (11:54 +0200)
committerImre Vadasz <imre@vdsz.com>
Sat, 19 Jul 2014 10:04:08 +0000 (12:04 +0200)
Taken-From: OpenBSD

sys/dev/netif/mii_layer/miidevs
sys/dev/netif/mii_layer/rgephy.c

index ea9b7ba..14d33b4 100644 (file)
@@ -234,6 +234,7 @@ model QUALSEMI QS6612               0x0000 QS6612 10/100 media interface
 
 /* RealTek Semiconductor PHYs */
 model REALTEK RTL8201L         0x0020 RTL8201L 10/100 media interface
+model xxREALTEK RTL8251                0x0000 RTL8251 media interface
 model xxREALTEK RTL8169S       0x0011 8211B/RTL8169S/8110S media interface
 model REALTEK2 RTL8169S                0x0011 RTL8169S/8110S media interface
 
index 563bee5..585f777 100644 (file)
@@ -75,6 +75,7 @@ static device_method_t rgephy_methods[] = {
 static const struct mii_phydesc rgephys[] = {
        MII_PHYDESC(REALTEK2,   RTL8169S),
        MII_PHYDESC(xxREALTEK,  RTL8169S),
+       MII_PHYDESC(xxREALTEK,  RTL8251),
        MII_PHYDESC_NULL
 };
 
@@ -422,7 +423,8 @@ rgephy_loop(struct mii_softc *sc)
        uint16_t id2;
 
        id2 = PHY_READ(sc, MII_PHYIDR2);
-       if (MII_REV(id2) < 2) {
+       if (MII_MODEL(id2) != MII_MODEL_xxREALTEK_RTL8251 &&
+           MII_REV(id2) < 2) {
                PHY_WRITE(sc, RGEPHY_MII_BMCR, RGEPHY_BMCR_PDOWN);
                DELAY(1000);
        }
@@ -456,7 +458,7 @@ rgephy_load_dspcode(struct mii_softc *sc)
 {
        int val;
 
-       if (sc->mii_rev > 1)
+       if (sc->mii_model == MII_MODEL_xxREALTEK_RTL8251 || sc->mii_rev > 1)
                return;
 
        PHY_WRITE(sc, 31, 0x0001);