NET: Add Ethernet 1000BASE-X support for PPC4xx
PATCH 2/2 NET: Add Ethernet 1000BASE-X support for PPC4xx
This patch adds support for 1000BASE-X to functions "miiphy_speed ()" and "miiphy_duplex()". It also adds function "miiphy_is_1000base_x ()", which returns non-zero iff the PHY registers are configured for 1000BASE-X. The "mii info" command is modified to distinguish between 1000BASE-T and -X.
Signed-off-by Larry Johnson <[email protected]>
---
Ben, this patch attempts to address your recent comments. How do you feel about the new function?
common/cmd_mii.c | 8 ++- common/miiphyutil.c | 151 +++++++++++++++++++++++++++++++-------------------- include/miiphy.h | 22 ++++++++ 3 files changed, 121 insertions(+), 60 deletions(-)
common/cmd_mii.c +6 -2
@@ -112,9 +112,11 @@ int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])"OUI = 0x%04X, " "Model = 0x%02X, " "Rev = 0x%02X, " -"%3dbaseT, %s\n" , +"%3dbase%s, %s\n" , j, oui, model, rev,miiphy_speed (devname, j), +miiphy_is_1000base_x (devname, j) + ?"X" :"T" , (miiphy_duplex (devname, j) ==FULL ) ? "FDX" : "HDX"); }
@@ -496,9 +498,11 @@ int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])"OUI = 0x%04X, " "Model = 0x%02X, " "Rev = 0x%02X, " -"%3dbaseT, %s\n" , +"%3dbase%s, %s\n" , j, oui, model, rev,miiphy_speed (devname, j), +miiphy_is_1000base_x (devname, j) + ?"X" :"T" , (miiphy_duplex (devname, j) ==FULL ) ? "FDX" : "HDX"); }
common/miiphyutil.c +93 -58
194 lines not on this page · raw message
include/miiphy.h +22 -0
@@ -41,6 +41,7 @@ int miiphy_info (char *devname, unsigned char addr, unsigned int *oui,int miiphy_reset (char *devname,unsigned char addr);int miiphy_speed (char *devname,unsigned char addr);int miiphy_duplex (char *devname,unsigned char addr); +int miiphy_is_1000base_x (char *devname,unsigned char addr);#ifdef CFG_FAULT_ECHO_LINK_DOWN int miiphy_link (char *devname,unsigned char addr);#endif
@@ -85,6 +86,7 @@ int bb_miiphy_write (char *devname, unsigned char addr,#define PHY_ANLPNP 0x08#define PHY_1000BTCR 0x09#define PHY_1000BTSR 0x0A +#define PHY_EXSR 0x0F#define PHY_PHYSTS 0x10#define PHY_MIPSCR 0x11#define PHY_MIPGSR 0x12
@@ -118,6 +120,7 @@ int bb_miiphy_write (char *devname, unsigned char addr,#define PHY_BMSR_100TXH 0x2000#define PHY_BMSR_10TF 0x1000#define PHY_BMSR_10TH 0x0800 +#define PHY_BMSR_EXT_STAT 0x0100#define PHY_BMSR_PRE_SUP 0x0040#define PHY_BMSR_AUTN_COMP 0x0020#define PHY_BMSR_RF 0x0010
@@ -130,17 +133,30 @@ int bb_miiphy_write (char *devname, unsigned char addr,#define PHY_ANLPAR_NP 0x8000#define PHY_ANLPAR_ACK 0x4000#define PHY_ANLPAR_RF 0x2000 +#define PHY_ANLPAR_ASYMP 0x0800 +#define PHY_ANLPAR_PAUSE 0x0400#define PHY_ANLPAR_T4 0x0200#define PHY_ANLPAR_TXFD 0x0100#define PHY_ANLPAR_TX 0x0080#define PHY_ANLPAR_10FD 0x0040#define PHY_ANLPAR_10 0x0020#define PHY_ANLPAR_100 0x0380/* we can run at 100 */ +/* phy ANLPAR 1000BASE-X */ +#define PHY_X_ANLPAR_NP 0x8000 +#define PHY_X_ANLPAR_ACK 0x4000 +#define PHY_X_ANLPAR_RF_MASK 0x3000 +#define PHY_X_ANLPAR_PAUSE_MASK 0x0180 +#define PHY_X_ANLPAR_HD 0x0040 +#define PHY_X_ANLPAR_FD 0x0020#define PHY_ANLPAR_PSB_MASK 0x001f#define PHY_ANLPAR_PSB_802_3 0x0001#define PHY_ANLPAR_PSB_802_9 0x0002 +/* phy 1000BTCR */ +#define PHY_1000BTCR_1000FD 0x0200 +#define PHY_1000BTCR_1000HD 0x0100 +/* phy 1000BTSR */ #define PHY_1000BTSR_MSCF 0x8000#define PHY_1000BTSR_MSCR 0x4000
@@ -149,4 +165,10 @@ int bb_miiphy_write (char *devname, unsigned char addr,#define PHY_1000BTSR_1000FD 0x0800#define PHY_1000BTSR_1000HD 0x0400 +/* phy EXSR */ +#define PHY_EXSR_1000XF 0x8000 +#define PHY_EXSR_1000XH 0x4000 +#define PHY_EXSR_1000TF 0x2000 +#define PHY_EXSR_1000TH 0x1000 +#endif