aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Saab <ps@FreeBSD.org>2005-05-19 21:08:59 +0000
committerPaul Saab <ps@FreeBSD.org>2005-05-19 21:08:59 +0000
commit419c028b362fe4652f97d7f5507035d6781e1fb8 (patch)
treedb9fce258664da1df5237f7560b1cea1e7b1c5b3
parentfff7ff711b38ca4f3b647b50c27c252e1cc8cc52 (diff)
downloadsrc-419c028b362fe4652f97d7f5507035d6781e1fb8.tar.gz
src-419c028b362fe4652f97d7f5507035d6781e1fb8.zip
Support the 5714C
Submitted by: John Cagle <john dot cagle at hp dot com>
Notes
Notes: svn path=/head/; revision=146413
-rw-r--r--sys/dev/bge/if_bge.c9
-rw-r--r--sys/dev/bge/if_bgereg.h3
-rw-r--r--sys/dev/mii/brgphy.c7
-rw-r--r--sys/dev/mii/miidevs1
4 files changed, 20 insertions, 0 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index bf785edf7c6d..d5a6d27f2c7c 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -155,6 +155,8 @@ static struct bge_type bge_devs[] = {
"Broadcom BCM5705M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M_ALT,
"Broadcom BCM5705M Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5714C,
+ "Broadcom BCM5714C Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5721,
"Broadcom BCM5721 Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5750,
@@ -2297,6 +2299,13 @@ bge_attach(dev)
sc->bge_chiprev = BGE_CHIPREV(sc->bge_chipid);
/*
+ * Treat the 5714 like the 5750 until we have more info
+ * on this chip.
+ */
+ if (sc->bge_asicrev == BGE_ASICREV_BCM5714)
+ sc->bge_asicrev = BGE_ASICREV_BCM5750;
+
+ /*
* XXX: Broadcom Linux driver. Not in specs or eratta.
* PCI-Express?
*/
diff --git a/sys/dev/bge/if_bgereg.h b/sys/dev/bge/if_bgereg.h
index ac12570a1635..3296bd1c648f 100644
--- a/sys/dev/bge/if_bgereg.h
+++ b/sys/dev/bge/if_bgereg.h
@@ -239,6 +239,7 @@
#define BGE_CHIPID_BCM5705_A3 0x30030000
#define BGE_CHIPID_BCM5750_A0 0x40000000
#define BGE_CHIPID_BCM5750_A1 0x40010000
+#define BGE_CHIPID_BCM5714_A0 0x50000000
/* shorthand one */
#define BGE_ASICREV(x) ((x) >> 28)
@@ -248,6 +249,7 @@
#define BGE_ASICREV_BCM5704 0x02
#define BGE_ASICREV_BCM5705 0x03
#define BGE_ASICREV_BCM5750 0x04
+#define BGE_ASICREV_BCM5714 0x05
/* chip revisions */
#define BGE_CHIPREV(x) ((x) >> 24)
@@ -1868,6 +1870,7 @@ struct bge_status_block {
#define BCOM_DEVICEID_BCM5721 0x1659
#define BCOM_DEVICEID_BCM5705M 0x165D
#define BCOM_DEVICEID_BCM5705M_ALT 0x165E
+#define BCOM_DEVICEID_BCM5714C 0x1668
#define BCOM_DEVICEID_BCM5750 0x1676
#define BCOM_DEVICEID_BCM5750M 0x167C
#define BCOM_DEVICEID_BCM5751 0x1677
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c
index 9e62df19ac1f..25a81ef9efef 100644
--- a/sys/dev/mii/brgphy.c
+++ b/sys/dev/mii/brgphy.c
@@ -153,6 +153,12 @@ brgphy_probe(dev)
return(0);
}
+ if (MII_OUI(ma->mii_id1, ma->mii_id2) == MII_OUI_xxBROADCOM &&
+ MII_MODEL(ma->mii_id2) == MII_MODEL_xxBROADCOM_BCM5714) {
+ device_set_desc(dev, MII_STR_xxBROADCOM_BCM5714);
+ return(0);
+ }
+
return(ENXIO);
}
@@ -631,6 +637,7 @@ brgphy_reset(struct mii_softc *sc)
bcm5704_load_dspcode(sc);
break;
case MII_MODEL_xxBROADCOM_BCM5750:
+ case MII_MODEL_xxBROADCOM_BCM5714:
bcm5750_load_dspcode(sc);
break;
}
diff --git a/sys/dev/mii/miidevs b/sys/dev/mii/miidevs
index 993f261e5910..b694036dad04 100644
--- a/sys/dev/mii/miidevs
+++ b/sys/dev/mii/miidevs
@@ -122,6 +122,7 @@ model xxBROADCOM BCM5703 0x0016 BCM5703 10/100/1000baseTX PHY
model xxBROADCOM BCM5704 0x0019 BCM5704 10/100/1000baseTX PHY
model xxBROADCOM BCM5705 0x001a BCM5705 10/100/1000baseTX PHY
model xxBROADCOM BCM5750 0x0018 BCM5750 10/100/1000baseTX PHY
+model xxBROADCOM BCM5714 0x0034 BCM5714 10/100/1000baseTX PHY
/* Cicada Semiconductor PHYs (now owned by Vitesse?) */
model CICADA CS8201 0x0001 Cicada CS8201 10/100/1000TX PHY