diff options
author | yongari <yongari@FreeBSD.org> | 2012-12-20 05:02:12 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2012-12-20 05:02:12 +0000 |
commit | f2a98a14f8f6ac849a289519cc6ce8440ec3508a (patch) | |
tree | 74d22ebce5817e75c57b1e313d36f7a3e5e3c1a6 | |
parent | 0bf55e8b804d2a44fb71e418bdfad66764896b9b (diff) | |
download | FreeBSD-src-f2a98a14f8f6ac849a289519cc6ce8440ec3508a.zip FreeBSD-src-f2a98a14f8f6ac849a289519cc6ce8440ec3508a.tar.gz |
Recognize 5720S PHY and treat it as 5708S PHY.
Unfortunately 5720S uses 5709S PHY id so add a hack to detect 5720S
PHY by checking parent device name. 5720S PHY does not support 2500SX.
Tested by: Geans Pin < geanspin <> broadcom dot com >
-rw-r--r-- | sys/dev/mii/brgphy.c | 26 | ||||
-rw-r--r-- | sys/dev/mii/miidevs | 2 |
2 files changed, 17 insertions, 11 deletions
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c index f89dbe8..be4276c 100644 --- a/sys/dev/mii/brgphy.c +++ b/sys/dev/mii/brgphy.c @@ -204,6 +204,13 @@ brgphy_attach(device_t dev) &brgphy_funcs, 0); bsc->serdes_flags = 0; + ifp = sc->mii_pdata->mii_ifp; + + /* Find the MAC driver associated with this PHY. */ + if (strcmp(ifp->if_dname, "bge") == 0) + bge_sc = ifp->if_softc; + else if (strcmp(ifp->if_dname, "bce") == 0) + bce_sc = ifp->if_softc; /* Handle any special cases based on the PHY ID */ switch (sc->mii_mpd_oui) { @@ -235,22 +242,21 @@ brgphy_attach(device_t dev) sc->mii_flags |= MIIF_HAVEFIBER; break; case MII_MODEL_BROADCOM2_BCM5709S: - bsc->serdes_flags |= BRGPHY_5709S; + /* + * XXX + * 5720S and 5709S shares the same PHY id. + * Assume 5720S PHY if parent device is bge(4). + */ + if (bge_sc != NULL) + bsc->serdes_flags |= BRGPHY_5708S; + else + bsc->serdes_flags |= BRGPHY_5709S; sc->mii_flags |= MIIF_HAVEFIBER; break; } break; } - ifp = sc->mii_pdata->mii_ifp; - - /* Find the MAC driver associated with this PHY. */ - if (strcmp(ifp->if_dname, "bge") == 0) { - bge_sc = ifp->if_softc; - } else if (strcmp(ifp->if_dname, "bce") == 0) { - bce_sc = ifp->if_softc; - } - PHY_RESET(sc); /* Read the PHY's capabilities. */ diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs index 3ccaf37..4220906 100644 --- a/sys/dev/mii/miidevs +++ b/sys/dev/mii/miidevs @@ -180,7 +180,7 @@ model BROADCOM2 BCM5722 0x002d BCM5722 1000BASE-T media interface model BROADCOM2 BCM5784 0x003a BCM5784 10/100/1000baseT PHY model BROADCOM2 BCM5709C 0x003c BCM5709 10/100/1000baseT PHY model BROADCOM2 BCM5761 0x003d BCM5761 10/100/1000baseT PHY -model BROADCOM2 BCM5709S 0x003f BCM5709S 1000/2500baseSX PHY +model BROADCOM2 BCM5709S 0x003f BCM5709S/5720S 1000/2500baseSX PHY model BROADCOM3 BCM57780 0x0019 BCM57780 1000BASE-T media interface model BROADCOM3 BCM5717C 0x0020 BCM5717C 1000BASE-T media interface model BROADCOM3 BCM5719C 0x0022 BCM5719C 1000BASE-T media interface |