summaryrefslogtreecommitdiffstats
path: root/sys/dev/mii/e1000phy.c
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2009-06-02 00:30:30 +0000
committeryongari <yongari@FreeBSD.org>2009-06-02 00:30:30 +0000
commit97e535876ee2651cea94436136470eb9445e3f95 (patch)
treeeea14cf7724216a912982bc20bdd5387074a5266 /sys/dev/mii/e1000phy.c
parentbd9aa35723b3c462ad559b955f916623cbc2773c (diff)
downloadFreeBSD-src-97e535876ee2651cea94436136470eb9445e3f95.zip
FreeBSD-src-97e535876ee2651cea94436136470eb9445e3f95.tar.gz
Program LED registers for 88E1116/88E1149 PHYs. These PHYs are
found on Marvell Yukon Ultra, Marvell Yukon Extreme controllers. While I'm here explicitly issue 'powerup' command for 88E1149 PHY. Tested by: jhb, Warren Block ( wblock <> wonkity dot com )
Diffstat (limited to 'sys/dev/mii/e1000phy.c')
-rw-r--r--sys/dev/mii/e1000phy.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/dev/mii/e1000phy.c b/sys/dev/mii/e1000phy.c
index be29926..f0d159b 100644
--- a/sys/dev/mii/e1000phy.c
+++ b/sys/dev/mii/e1000phy.c
@@ -238,7 +238,8 @@ e1000phy_reset(struct mii_softc *sc)
}
PHY_WRITE(sc, E1000_SCR, reg);
- if (esc->mii_model == MII_MODEL_MARVELL_E1116) {
+ if (esc->mii_model == MII_MODEL_MARVELL_E1116 ||
+ esc->mii_model == MII_MODEL_MARVELL_E1149) {
page = PHY_READ(sc, E1000_EADR);
/* Select page 2, MAC specific control register. */
PHY_WRITE(sc, E1000_EADR, 2);
@@ -252,9 +253,22 @@ e1000phy_reset(struct mii_softc *sc)
switch (MII_MODEL(esc->mii_model)) {
case MII_MODEL_MARVELL_E3082:
case MII_MODEL_MARVELL_E1112:
- case MII_MODEL_MARVELL_E1116:
case MII_MODEL_MARVELL_E1118:
+ break;
+ case MII_MODEL_MARVELL_E1116:
case MII_MODEL_MARVELL_E1149:
+ page = PHY_READ(sc, E1000_EADR);
+ /* Select page 3, LED control register. */
+ PHY_WRITE(sc, E1000_EADR, 3);
+ PHY_WRITE(sc, E1000_SCR,
+ E1000_SCR_LED_LOS(1) | /* Link/Act */
+ E1000_SCR_LED_INIT(8) | /* 10Mbps */
+ E1000_SCR_LED_STAT1(7) | /* 100Mbps */
+ E1000_SCR_LED_STAT0(7)); /* 1000Mbps */
+ /* Set blink rate. */
+ PHY_WRITE(sc, E1000_IER, E1000_PULSE_DUR(E1000_PULSE_170MS) |
+ E1000_BLINK_RATE(E1000_BLINK_84MS));
+ PHY_WRITE(sc, E1000_EADR, page);
break;
case MII_MODEL_MARVELL_E3016:
/* LED2 -> ACT, LED1 -> LINK, LED0 -> SPEED. */
OpenPOWER on IntegriCloud