mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-17 22:04:40 +00:00
For RTL8211B or later PHYs, enable crossover detection and
auto-correction. This change makes re(4) establish a link with a system using non-crossover UTP cable. Tested by: Michael BlackHeart < amdmiek <> gmail dot com >
This commit is contained in:
parent
bd8cbcc32c
commit
cf402cc979
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=248542
|
@ -488,7 +488,7 @@ rgephy_load_dspcode(struct mii_softc *sc)
|
|||
static void
|
||||
rgephy_reset(struct mii_softc *sc)
|
||||
{
|
||||
uint16_t ssr;
|
||||
uint16_t pcr, ssr;
|
||||
|
||||
if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev == 3) {
|
||||
/* RTL8211C(L) */
|
||||
|
@ -499,6 +499,15 @@ rgephy_reset(struct mii_softc *sc)
|
|||
}
|
||||
}
|
||||
|
||||
if (sc->mii_mpd_rev >= 2) {
|
||||
pcr = PHY_READ(sc, RGEPHY_MII_PCR);
|
||||
if ((pcr & RGEPHY_PCR_MDIX_AUTO) == 0) {
|
||||
pcr &= ~RGEPHY_PCR_MDI_MASK;
|
||||
pcr |= RGEPHY_PCR_MDIX_AUTO;
|
||||
PHY_WRITE(sc, RGEPHY_MII_PCR, pcr);
|
||||
}
|
||||
}
|
||||
|
||||
mii_phy_reset(sc);
|
||||
DELAY(1000);
|
||||
rgephy_load_dspcode(sc);
|
||||
|
|
|
@ -137,6 +137,17 @@
|
|||
#define RGEPHY_EXTSTS_T_FD_CAP 0x2000 /* 1000base-T FD capable */
|
||||
#define RGEPHY_EXTSTS_T_HD_CAP 0x1000 /* 1000base-T HD capable */
|
||||
|
||||
/* RTL8211B(L)/RTL8211C(L) */
|
||||
#define RGEPHY_MII_PCR 0x10 /* PHY Specific control register */
|
||||
#define RGEPHY_PCR_ASSERT_CRS 0x0800
|
||||
#define RGEPHY_PCR_FORCE_LINK 0x0400
|
||||
#define RGEPHY_PCR_MDI_MASK 0x0060
|
||||
#define RGEPHY_PCR_MDIX_AUTO 0x0040
|
||||
#define RGEPHY_PCR_MDIX_MANUAL 0x0020
|
||||
#define RGEPHY_PCR_MDI_MANUAL 0x0000
|
||||
#define RGEPHY_PCR_CLK125_DIS 0x0010
|
||||
#define RGEPHY_PCR_JABBER_DIS 0x0001
|
||||
|
||||
/* RTL8211B(L)/RTL8211C(L) */
|
||||
#define RGEPHY_MII_SSR 0x11 /* PHY Specific status register */
|
||||
#define RGEPHY_SSR_S1000 0x8000 /* 1000Mbps */
|
||||
|
|
Loading…
Reference in a new issue