svn commit: r204144 - head/sys/dev/mii

Marius Strobl marius at FreeBSD.org
Sat Feb 20 22:01:24 UTC 2010


Author: marius
Date: Sat Feb 20 22:01:24 2010
New Revision: 204144
URL: http://svn.freebsd.org/changeset/base/204144

Log:
  Add support for BCM54K2 found in combination with Apple K2 GMAC.
  
  Submitted by:   Andreas Tobler
  Obtained from:  OpenBSD
  MFC after:      1 week

Modified:
  head/sys/dev/mii/brgphy.c
  head/sys/dev/mii/miidevs

Modified: head/sys/dev/mii/brgphy.c
==============================================================================
--- head/sys/dev/mii/brgphy.c	Sat Feb 20 21:45:04 2010	(r204143)
+++ head/sys/dev/mii/brgphy.c	Sat Feb 20 22:01:24 2010	(r204144)
@@ -104,6 +104,7 @@ static void	brgphy_reset(struct mii_soft
 static void	brgphy_enable_loopback(struct mii_softc *);
 static void	bcm5401_load_dspcode(struct mii_softc *);
 static void	bcm5411_load_dspcode(struct mii_softc *);
+static void	bcm54k2_load_dspcode(struct mii_softc *);
 static void	brgphy_fixup_5704_a0_bug(struct mii_softc *);
 static void	brgphy_fixup_adc_bug(struct mii_softc *);
 static void	brgphy_fixup_adjust_trim(struct mii_softc *);
@@ -117,6 +118,7 @@ static const struct mii_phydesc brgphys[
 	MII_PHY_DESC(xxBROADCOM, BCM5400),
 	MII_PHY_DESC(xxBROADCOM, BCM5401),
 	MII_PHY_DESC(xxBROADCOM, BCM5411),
+	MII_PHY_DESC(xxBROADCOM, BCM54K2),
 	MII_PHY_DESC(xxBROADCOM, BCM5701),
 	MII_PHY_DESC(xxBROADCOM, BCM5703),
 	MII_PHY_DESC(xxBROADCOM, BCM5704),
@@ -415,6 +417,9 @@ brgphy_service(struct mii_softc *sc, str
 			case MII_MODEL_xxBROADCOM_BCM5411:
 				bcm5411_load_dspcode(sc);
 				break;
+			case MII_MODEL_xxBROADCOM_BCM54K2:
+				bcm54k2_load_dspcode(sc);
+				break;
 			}
 			break;
 		case MII_OUI_xxBROADCOM_ALT1:
@@ -730,6 +735,24 @@ bcm5411_load_dspcode(struct mii_softc *s
 		PHY_WRITE(sc, dspcode[i].reg, dspcode[i].val);
 }
 
+void
+bcm54k2_load_dspcode(struct mii_softc *sc)
+{
+	static const struct {
+		int		reg;
+		uint16_t	val;
+	} dspcode[] = {
+		{ 4,				0x01e1 },
+		{ 9,				0x0300 },
+		{ 0,				0 },
+	};
+	int i;
+
+	for (i = 0; dspcode[i].reg != 0; i++)
+		PHY_WRITE(sc, dspcode[i].reg, dspcode[i].val);
+
+}
+
 static void
 brgphy_fixup_5704_a0_bug(struct mii_softc *sc)
 {
@@ -932,6 +955,9 @@ brgphy_reset(struct mii_softc *sc)
 		case MII_MODEL_xxBROADCOM_BCM5411:
 			bcm5411_load_dspcode(sc);
 			break;
+		case MII_MODEL_xxBROADCOM_BCM54K2:
+			bcm54k2_load_dspcode(sc);
+			break;
 		}
 		break;
 	case MII_OUI_xxBROADCOM_ALT1:

Modified: head/sys/dev/mii/miidevs
==============================================================================
--- head/sys/dev/mii/miidevs	Sat Feb 20 21:45:04 2010	(r204143)
+++ head/sys/dev/mii/miidevs	Sat Feb 20 22:01:24 2010	(r204144)
@@ -145,6 +145,7 @@ model xxBROADCOM BCM5703	0x0016 BCM5703 
 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 BCM54K2	0x002e BCM54K2 10/100/1000baseTX PHY
 model xxBROADCOM BCM5714	0x0034 BCM5714 10/100/1000baseTX PHY
 model xxBROADCOM BCM5780	0x0035 BCM5780 10/100/1000baseTX PHY
 model xxBROADCOM BCM5708C	0x0036 BCM5708C 10/100/1000baseTX PHY


More information about the svn-src-head mailing list