summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/mii/exphy.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/sys/dev/mii/exphy.c b/sys/dev/mii/exphy.c
index 3ba7b351c10..55ccad79aff 100644
--- a/sys/dev/mii/exphy.c
+++ b/sys/dev/mii/exphy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: exphy.c,v 1.6 1999/12/07 22:01:28 jason Exp $ */
+/* $OpenBSD: exphy.c,v 1.7 2000/02/16 05:06:01 jason Exp $ */
/* $NetBSD: exphy.c,v 1.15.6.1 1999/04/23 15:39:33 perry Exp $ */
/*-
@@ -110,8 +110,10 @@ exphymatch(parent, match, aux)
/*
* Argh, 3Com PHY reports oui == 0 model == 0!
*/
- if (MII_OUI(ma->mii_id1, ma->mii_id2) != 0 &&
- MII_MODEL(ma->mii_id2) != 0)
+ if ((MII_OUI(ma->mii_id1, ma->mii_id2) != 0 ||
+ MII_MODEL(ma->mii_id2) != 0) &&
+ (MII_OUI(ma->mii_id1, ma->mii_id2) != MII_OUI_BROADCOM ||
+ MII_MODEL(ma->mii_id2) != MII_MODEL_BROADCOM_3C905C))
return (0);
/*
@@ -132,7 +134,15 @@ exphyattach(parent, self, aux)
struct mii_attach_args *ma = aux;
struct mii_data *mii = ma->mii_data;
- printf(": 3Com internal media interface\n");
+ if (MII_OUI(ma->mii_id1, ma->mii_id2) == 0 &&
+ MII_MODEL(ma->mii_id2) == 0)
+ printf(": 3Com internal media interface\n");
+ else if (MII_OUI(ma->mii_id1, ma->mii_id2) == MII_OUI_BROADCOM &&
+ MII_MODEL(ma->mii_id2) == MII_MODEL_BROADCOM_3C905C)
+ printf(": %s, rev. %d\n", MII_STR_BROADCOM_3C905C,
+ MII_REV(ma->mii_id2));
+ else
+ printf(": unknown phy\n");
sc->mii_inst = mii->mii_instance;
sc->mii_phy = ma->mii_phyno;