diff options
-rw-r--r-- | drivers/net/tg3.c | 38 | ||||
-rw-r--r-- | drivers/net/tg3.h | 21 |
2 files changed, 34 insertions, 25 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 41e0d40259e3..800f98069c1c 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -1514,17 +1514,19 @@ static void tg3_phy_toggle_automdix(struct tg3 *tp, int enable) | |||
1514 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { | 1514 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { |
1515 | u32 ephy; | 1515 | u32 ephy; |
1516 | 1516 | ||
1517 | if (!tg3_readphy(tp, MII_TG3_EPHY_TEST, &ephy)) { | 1517 | if (!tg3_readphy(tp, MII_TG3_FET_TEST, &ephy)) { |
1518 | tg3_writephy(tp, MII_TG3_EPHY_TEST, | 1518 | u32 reg = MII_TG3_FET_SHDW_MISCCTRL; |
1519 | ephy | MII_TG3_EPHY_SHADOW_EN); | 1519 | |
1520 | if (!tg3_readphy(tp, MII_TG3_EPHYTST_MISCCTRL, &phy)) { | 1520 | tg3_writephy(tp, MII_TG3_FET_TEST, |
1521 | ephy | MII_TG3_FET_SHADOW_EN); | ||
1522 | if (!tg3_readphy(tp, reg, &phy)) { | ||
1521 | if (enable) | 1523 | if (enable) |
1522 | phy |= MII_TG3_EPHYTST_MISCCTRL_MDIX; | 1524 | phy |= MII_TG3_FET_SHDW_MISCCTRL_MDIX; |
1523 | else | 1525 | else |
1524 | phy &= ~MII_TG3_EPHYTST_MISCCTRL_MDIX; | 1526 | phy &= ~MII_TG3_FET_SHDW_MISCCTRL_MDIX; |
1525 | tg3_writephy(tp, MII_TG3_EPHYTST_MISCCTRL, phy); | 1527 | tg3_writephy(tp, reg, phy); |
1526 | } | 1528 | } |
1527 | tg3_writephy(tp, MII_TG3_EPHY_TEST, ephy); | 1529 | tg3_writephy(tp, MII_TG3_FET_TEST, ephy); |
1528 | } | 1530 | } |
1529 | } else { | 1531 | } else { |
1530 | phy = MII_TG3_AUXCTL_MISC_RDSEL_MISC | | 1532 | phy = MII_TG3_AUXCTL_MISC_RDSEL_MISC | |
@@ -1915,7 +1917,7 @@ out: | |||
1915 | 1917 | ||
1916 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { | 1918 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { |
1917 | /* adjust output voltage */ | 1919 | /* adjust output voltage */ |
1918 | tg3_writephy(tp, MII_TG3_EPHY_PTEST, 0x12); | 1920 | tg3_writephy(tp, MII_TG3_FET_PTEST, 0x12); |
1919 | } | 1921 | } |
1920 | 1922 | ||
1921 | tg3_phy_toggle_automdix(tp, 1); | 1923 | tg3_phy_toggle_automdix(tp, 1); |
@@ -9747,14 +9749,16 @@ static int tg3_run_loopback(struct tg3 *tp, int loopback_mode) | |||
9747 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { | 9749 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { |
9748 | u32 phytest; | 9750 | u32 phytest; |
9749 | 9751 | ||
9750 | if (!tg3_readphy(tp, MII_TG3_EPHY_TEST, &phytest)) { | 9752 | if (!tg3_readphy(tp, MII_TG3_FET_TEST, &phytest)) { |
9751 | u32 phy; | 9753 | u32 phy, reg = MII_TG3_FET_SHDW_AUXSTAT2; |
9752 | 9754 | ||
9753 | tg3_writephy(tp, MII_TG3_EPHY_TEST, | 9755 | tg3_writephy(tp, MII_TG3_FET_TEST, |
9754 | phytest | MII_TG3_EPHY_SHADOW_EN); | 9756 | phytest | MII_TG3_FET_SHADOW_EN); |
9755 | if (!tg3_readphy(tp, 0x1b, &phy)) | 9757 | if (!tg3_readphy(tp, reg, &phy)) { |
9756 | tg3_writephy(tp, 0x1b, phy & ~0x20); | 9758 | phy &= ~MII_TG3_FET_SHDW_AUXSTAT2_APD; |
9757 | tg3_writephy(tp, MII_TG3_EPHY_TEST, phytest); | 9759 | tg3_writephy(tp, reg, phy); |
9760 | } | ||
9761 | tg3_writephy(tp, MII_TG3_FET_TEST, phytest); | ||
9758 | } | 9762 | } |
9759 | val = BMCR_LOOPBACK | BMCR_FULLDPLX | BMCR_SPEED100; | 9763 | val = BMCR_LOOPBACK | BMCR_FULLDPLX | BMCR_SPEED100; |
9760 | } else | 9764 | } else |
@@ -9767,7 +9771,7 @@ static int tg3_run_loopback(struct tg3 *tp, int loopback_mode) | |||
9767 | 9771 | ||
9768 | mac_mode = tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK; | 9772 | mac_mode = tp->mac_mode & ~MAC_MODE_PORT_MODE_MASK; |
9769 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { | 9773 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5906) { |
9770 | tg3_writephy(tp, MII_TG3_EPHY_PTEST, 0x1800); | 9774 | tg3_writephy(tp, MII_TG3_FET_PTEST, 0x1800); |
9771 | mac_mode |= MAC_MODE_PORT_MODE_MII; | 9775 | mac_mode |= MAC_MODE_PORT_MODE_MII; |
9772 | } else | 9776 | } else |
9773 | mac_mode |= MAC_MODE_PORT_MODE_GMII; | 9777 | mac_mode |= MAC_MODE_PORT_MODE_GMII; |
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index d096e10ad634..b8339c9ae0e3 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
@@ -1909,7 +1909,6 @@ | |||
1909 | 1909 | ||
1910 | #define MII_TG3_DSP_RW_PORT 0x15 /* DSP coefficient read/write port */ | 1910 | #define MII_TG3_DSP_RW_PORT 0x15 /* DSP coefficient read/write port */ |
1911 | 1911 | ||
1912 | #define MII_TG3_EPHY_PTEST 0x17 /* 5906 PHY register */ | ||
1913 | #define MII_TG3_DSP_ADDRESS 0x17 /* DSP address register */ | 1912 | #define MII_TG3_DSP_ADDRESS 0x17 /* DSP address register */ |
1914 | 1913 | ||
1915 | #define MII_TG3_DSP_TAP1 0x0001 | 1914 | #define MII_TG3_DSP_TAP1 0x0001 |
@@ -1976,17 +1975,23 @@ | |||
1976 | #define MII_TG3_MISC_SHDW_SCR5_LPED 0x0010 | 1975 | #define MII_TG3_MISC_SHDW_SCR5_LPED 0x0010 |
1977 | #define MII_TG3_MISC_SHDW_SCR5_SEL 0x1400 | 1976 | #define MII_TG3_MISC_SHDW_SCR5_SEL 0x1400 |
1978 | 1977 | ||
1979 | |||
1980 | #define MII_TG3_EPHY_TEST 0x1f /* 5906 PHY register */ | ||
1981 | #define MII_TG3_EPHY_SHADOW_EN 0x80 | ||
1982 | |||
1983 | #define MII_TG3_EPHYTST_MISCCTRL 0x10 /* 5906 EPHY misc ctrl shadow register */ | ||
1984 | #define MII_TG3_EPHYTST_MISCCTRL_MDIX 0x4000 | ||
1985 | |||
1986 | #define MII_TG3_TEST1 0x1e | 1978 | #define MII_TG3_TEST1 0x1e |
1987 | #define MII_TG3_TEST1_TRIM_EN 0x0010 | 1979 | #define MII_TG3_TEST1_TRIM_EN 0x0010 |
1988 | #define MII_TG3_TEST1_CRC_EN 0x8000 | 1980 | #define MII_TG3_TEST1_CRC_EN 0x8000 |
1989 | 1981 | ||
1982 | |||
1983 | /* Fast Ethernet Tranceiver definitions */ | ||
1984 | #define MII_TG3_FET_PTEST 0x17 | ||
1985 | #define MII_TG3_FET_TEST 0x1f | ||
1986 | #define MII_TG3_FET_SHADOW_EN 0x0080 | ||
1987 | |||
1988 | #define MII_TG3_FET_SHDW_MISCCTRL 0x10 | ||
1989 | #define MII_TG3_FET_SHDW_MISCCTRL_MDIX 0x4000 | ||
1990 | |||
1991 | #define MII_TG3_FET_SHDW_AUXSTAT2 0x1b | ||
1992 | #define MII_TG3_FET_SHDW_AUXSTAT2_APD 0x0020 | ||
1993 | |||
1994 | |||
1990 | /* APE registers. Accessible through BAR1 */ | 1995 | /* APE registers. Accessible through BAR1 */ |
1991 | #define TG3_APE_EVENT 0x000c | 1996 | #define TG3_APE_EVENT 0x000c |
1992 | #define APE_EVENT_1 0x00000001 | 1997 | #define APE_EVENT_1 0x00000001 |