FreeBSD Bugzilla – Attachment 152469 Details for
Bug 197265
[mii] patch to support rtl8211f ethernet phys
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch to support rtl8211f
rgephys.patch (text/plain), 3.86 KB, created by
john
on 2015-02-02 06:51:06 UTC
(
hide
)
Description:
patch to support rtl8211f
Filename:
MIME Type:
Creator:
john
Created:
2015-02-02 06:51:06 UTC
Size:
3.86 KB
patch
obsolete
>Index: sys/dev/mii/rgephyreg.h >=================================================================== >--- sys/dev/mii/rgephyreg.h (revision 278021) >+++ sys/dev/mii/rgephyreg.h (working copy) >@@ -162,4 +162,14 @@ > #define RGEPHY_SSR_ALDPS 0x0008 /* RTL8211C(L) only */ > #define RGEPHY_SSR_JABBER 0x0001 /* Jabber */ > >+/* RTL8211F */ >+#define RGEPHY_F_MII_SSR 0x1a /* PHY Specific status register */ >+#define RGEPHY_F_SSR_S1000 0x0020 /* 1000Mbps */ >+#define RGEPHY_F_SSR_S100 0x0010 /* 100Mbps */ >+#define RGEPHY_F_SSR_S10 0x0000 /* 10Mbps */ >+#define RGEPHY_F_SSR_SPD_MASK 0x0030 >+#define RGEPHY_F_SSR_FDX 0x0008 /* full duplex */ >+#define RGEPHY_F_SSR_LINK 0x0004 /* link up */ >+#define RGEPHY_F_SSR_JABBER 0x0001 /* Jabber */ >+ > #endif /* _DEV_RGEPHY_MIIREG_H_ */ >Index: sys/dev/mii/rgephy.c >=================================================================== >--- sys/dev/mii/rgephy.c (revision 278021) >+++ sys/dev/mii/rgephy.c (working copy) >@@ -239,11 +239,20 @@ > */ > if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && > sc->mii_mpd_rev >= 2) { >- /* RTL8211B(L) */ >- reg = PHY_READ(sc, RGEPHY_MII_SSR); >- if (reg & RGEPHY_SSR_LINK) { >- sc->mii_ticks = 0; >- break; >+ if (sc->mii_mpd_rev == 6) { >+ /* RTL8211F */ >+ reg = PHY_READ(sc, RGEPHY_F_MII_SSR); >+ if (reg & RGEPHY_F_SSR_LINK) { >+ sc->mii_ticks = 0; >+ break; >+ } >+ } else { >+ /* RTL8211B(L) */ >+ reg = PHY_READ(sc, RGEPHY_MII_SSR); >+ if (reg & RGEPHY_SSR_LINK) { >+ sc->mii_ticks = 0; >+ break; >+ } > } > } else { > reg = PHY_READ(sc, RL_GMEDIASTAT); >@@ -294,9 +303,16 @@ > mii->mii_media_active = IFM_ETHER; > > if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev >= 2) { >- ssr = PHY_READ(sc, RGEPHY_MII_SSR); >- if (ssr & RGEPHY_SSR_LINK) >- mii->mii_media_status |= IFM_ACTIVE; >+ if (sc->mii_mpd_rev == 6) { >+ /* RTL8211F */ >+ ssr = PHY_READ(sc, RGEPHY_F_MII_SSR); >+ if (ssr & RGEPHY_F_SSR_LINK) >+ mii->mii_media_status |= IFM_ACTIVE; >+ } else { >+ ssr = PHY_READ(sc, RGEPHY_MII_SSR); >+ if (ssr & RGEPHY_SSR_LINK) >+ mii->mii_media_status |= IFM_ACTIVE; >+ } > } else { > bmsr = PHY_READ(sc, RL_GMEDIASTAT); > if (bmsr & RL_GMEDIASTAT_LINK) >@@ -324,25 +340,48 @@ > } > > if ((sc->mii_flags & MIIF_PHYPRIV0) == 0 && sc->mii_mpd_rev >= 2) { >- ssr = PHY_READ(sc, RGEPHY_MII_SSR); >- switch (ssr & RGEPHY_SSR_SPD_MASK) { >- case RGEPHY_SSR_S1000: >- mii->mii_media_active |= IFM_1000_T; >- break; >- case RGEPHY_SSR_S100: >- mii->mii_media_active |= IFM_100_TX; >- break; >- case RGEPHY_SSR_S10: >- mii->mii_media_active |= IFM_10_T; >- break; >- default: >- mii->mii_media_active |= IFM_NONE; >- break; >+ if (sc->mii_mpd_rev == 6) { >+ /* RTL8211F */ >+ ssr = PHY_READ(sc, RGEPHY_F_MII_SSR); >+ switch (ssr & RGEPHY_F_SSR_SPD_MASK) { >+ case RGEPHY_F_SSR_S1000: >+ mii->mii_media_active |= IFM_1000_T; >+ break; >+ case RGEPHY_F_SSR_S100: >+ mii->mii_media_active |= IFM_100_TX; >+ break; >+ case RGEPHY_F_SSR_S10: >+ mii->mii_media_active |= IFM_10_T; >+ break; >+ default: >+ mii->mii_media_active |= IFM_NONE; >+ break; >+ } >+ if (ssr & RGEPHY_F_SSR_FDX) >+ mii->mii_media_active |= IFM_FDX; >+ else >+ mii->mii_media_active |= IFM_HDX; >+ } else { >+ ssr = PHY_READ(sc, RGEPHY_MII_SSR); >+ switch (ssr & RGEPHY_SSR_SPD_MASK) { >+ case RGEPHY_SSR_S1000: >+ mii->mii_media_active |= IFM_1000_T; >+ break; >+ case RGEPHY_SSR_S100: >+ mii->mii_media_active |= IFM_100_TX; >+ break; >+ case RGEPHY_SSR_S10: >+ mii->mii_media_active |= IFM_10_T; >+ break; >+ default: >+ mii->mii_media_active |= IFM_NONE; >+ break; >+ } >+ if (ssr & RGEPHY_SSR_FDX) >+ mii->mii_media_active |= IFM_FDX; >+ else >+ mii->mii_media_active |= IFM_HDX; > } >- if (ssr & RGEPHY_SSR_FDX) >- mii->mii_media_active |= IFM_FDX; >- else >- mii->mii_media_active |= IFM_HDX; > } else { > bmsr = PHY_READ(sc, RL_GMEDIASTAT); > if (bmsr & RL_GMEDIASTAT_1000MBPS)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 197265
:
152469
|
152860
|
154127