diff options
author | jkim <jkim@FreeBSD.org> | 2007-02-12 22:51:25 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2007-02-12 22:51:25 +0000 |
commit | edec07ff3ac5ec95545cb6072c7fa293976cd444 (patch) | |
tree | bd96fdc4703a43f6c5ab30eec2cfba3d05f6dd21 /sys/dev/mii/brgphy.c | |
parent | d248b7fe82f187ff5a7b49609be9ece339b3bac8 (diff) | |
download | FreeBSD-src-edec07ff3ac5ec95545cb6072c7fa293976cd444.zip FreeBSD-src-edec07ff3ac5ec95545cb6072c7fa293976cd444.tar.gz |
Add PHY DSP code for BCM5755M.
Obtained from: OpenBSD
Diffstat (limited to 'sys/dev/mii/brgphy.c')
-rw-r--r-- | sys/dev/mii/brgphy.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sys/dev/mii/brgphy.c b/sys/dev/mii/brgphy.c index 52a94cb..1fa70d7 100644 --- a/sys/dev/mii/brgphy.c +++ b/sys/dev/mii/brgphy.c @@ -101,6 +101,7 @@ static void bcm5401_load_dspcode(struct mii_softc *); static void bcm5411_load_dspcode(struct mii_softc *); static void brgphy_fixup_adc_bug(struct mii_softc *); static void brgphy_fixup_5704_a0_bug(struct mii_softc *); +static void brgphy_fixup_adjust_trim(struct mii_softc *); static void brgphy_fixup_ber_bug(struct mii_softc *); static void brgphy_fixup_jitter_bug(struct mii_softc *); static void brgphy_ethernet_wirespeed(struct mii_softc *); @@ -568,6 +569,26 @@ brgphy_fixup_5704_a0_bug(struct mii_softc *sc) } static void +brgphy_fixup_adjust_trim(struct mii_softc *sc) +{ + static const struct { + int reg; + uint16_t val; + } dspcode[] = { + { BRGPHY_MII_AUXCTL, 0x0c00 }, + { BRGPHY_MII_DSP_ADDR_REG, 0x000a }, + { BRGPHY_MII_DSP_RW_PORT, 0x110b }, + { BRGPHY_MII_TEST1, 0x0014 }, + { BRGPHY_MII_AUXCTL, 0x0400 }, + { 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_ber_bug(struct mii_softc *sc) { static const struct { @@ -691,6 +712,8 @@ brgphy_reset(struct mii_softc *sc) brgphy_fixup_adc_bug(sc); if (bge_sc->bge_flags & BGE_FLAG_5704_A0_BUG) brgphy_fixup_5704_a0_bug(sc); + if (bge_sc->bge_flags & BGE_FLAG_ADJUST_TRIM) + brgphy_fixup_adjust_trim(sc); if (bge_sc->bge_flags & BGE_FLAG_BER_BUG) brgphy_fixup_ber_bug(sc); if (bge_sc->bge_flags & BGE_FLAG_JITTER_BUG) |