aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2x_link.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bnx2x_link.c')
-rw-r--r--drivers/net/bnx2x_link.c71
1 files changed, 36 insertions, 35 deletions
diff --git a/drivers/net/bnx2x_link.c b/drivers/net/bnx2x_link.c
index 4a594b84ba20..39db995c6985 100644
--- a/drivers/net/bnx2x_link.c
+++ b/drivers/net/bnx2x_link.c
@@ -2094,7 +2094,7 @@ static u8 bnx2x_8073_is_snr_needed(struct link_params *params)
2094 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, 2094 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
2095 ext_phy_addr, 2095 ext_phy_addr,
2096 MDIO_PMA_DEVAD, 2096 MDIO_PMA_DEVAD,
2097 0xc801, &val); 2097 MDIO_PMA_REG_8073_CHIP_REV, &val);
2098 2098
2099 if (val != 1) { 2099 if (val != 1) {
2100 /* No need to workaround in 8073 A1 */ 2100 /* No need to workaround in 8073 A1 */
@@ -2126,7 +2126,7 @@ static u8 bnx2x_bcm8073_xaui_wa(struct link_params *params)
2126 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, 2126 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
2127 ext_phy_addr, 2127 ext_phy_addr,
2128 MDIO_PMA_DEVAD, 2128 MDIO_PMA_DEVAD,
2129 0xc801, &val); 2129 MDIO_PMA_REG_8073_CHIP_REV, &val);
2130 2130
2131 if (val > 0) { 2131 if (val > 0) {
2132 /* No need to workaround in 8073 A1 */ 2132 /* No need to workaround in 8073 A1 */
@@ -2142,7 +2142,8 @@ static u8 bnx2x_bcm8073_xaui_wa(struct link_params *params)
2142 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, 2142 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
2143 ext_phy_addr, 2143 ext_phy_addr,
2144 MDIO_PMA_DEVAD, 2144 MDIO_PMA_DEVAD,
2145 0xc820, &val); 2145 MDIO_PMA_REG_8073_SPEED_LINK_STATUS,
2146 &val);
2146 /* If bit [14] = 0 or bit [13] = 0, continue on with 2147 /* If bit [14] = 0 or bit [13] = 0, continue on with
2147 system initialization (XAUI work-around not required, 2148 system initialization (XAUI work-around not required,
2148 as these bits indicate 2.5G or 1G link up). */ 2149 as these bits indicate 2.5G or 1G link up). */
@@ -2160,7 +2161,7 @@ static u8 bnx2x_bcm8073_xaui_wa(struct link_params *params)
2160 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, 2161 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
2161 ext_phy_addr, 2162 ext_phy_addr,
2162 MDIO_PMA_DEVAD, 2163 MDIO_PMA_DEVAD,
2163 0xc841, &val); 2164 MDIO_PMA_REG_8073_XAUI_WA, &val);
2164 if (val & (1<<15)) { 2165 if (val & (1<<15)) {
2165 DP(NETIF_MSG_LINK, 2166 DP(NETIF_MSG_LINK,
2166 "XAUI workaround has completed\n"); 2167 "XAUI workaround has completed\n");
@@ -2758,7 +2759,7 @@ static void bnx2x_bcm8073_set_xaui_low_power_mode(struct link_params *params)
2758 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, 2759 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
2759 ext_phy_addr, 2760 ext_phy_addr,
2760 MDIO_PMA_DEVAD, 2761 MDIO_PMA_DEVAD,
2761 0xc801, &val); 2762 MDIO_PMA_REG_8073_CHIP_REV, &val);
2762 2763
2763 if (val == 0) { 2764 if (val == 0) {
2764 /* Mustn't set low power mode in 8073 A0 */ 2765 /* Mustn't set low power mode in 8073 A0 */
@@ -3283,7 +3284,7 @@ static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars)
3283 ext_phy_type, 3284 ext_phy_type,
3284 ext_phy_addr, 3285 ext_phy_addr,
3285 MDIO_PMA_DEVAD, 3286 MDIO_PMA_DEVAD,
3286 0xca13, 3287 MDIO_PMA_REG_M8051_MSGOUT_REG,
3287 &tmp1); 3288 &tmp1);
3288 3289
3289 bnx2x_cl45_read(bp, params->port, 3290 bnx2x_cl45_read(bp, params->port,
@@ -3350,7 +3351,7 @@ static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars)
3350 ext_phy_type, 3351 ext_phy_type,
3351 ext_phy_addr, 3352 ext_phy_addr,
3352 MDIO_AN_DEVAD, 3353 MDIO_AN_DEVAD,
3353 0x8329, &tmp1); 3354 MDIO_AN_REG_8073_2_5G, &tmp1);
3354 3355
3355 if (((params->speed_cap_mask & 3356 if (((params->speed_cap_mask &
3356 PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G) && 3357 PORT_HW_CFG_SPEED_CAPABILITY_D0_2_5G) &&
@@ -3364,7 +3365,7 @@ static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars)
3364 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073, 3365 PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
3365 ext_phy_addr, 3366 ext_phy_addr,
3366 MDIO_PMA_DEVAD, 3367 MDIO_PMA_DEVAD,
3367 0xc801, &phy_ver); 3368 MDIO_PMA_REG_8073_CHIP_REV, &phy_ver);
3368 DP(NETIF_MSG_LINK, "Add 2.5G\n"); 3369 DP(NETIF_MSG_LINK, "Add 2.5G\n");
3369 if (phy_ver > 0) 3370 if (phy_ver > 0)
3370 tmp1 |= 1; 3371 tmp1 |= 1;
@@ -3379,7 +3380,7 @@ static u8 bnx2x_ext_phy_init(struct link_params *params, struct link_vars *vars)
3379 ext_phy_type, 3380 ext_phy_type,
3380 ext_phy_addr, 3381 ext_phy_addr,
3381 MDIO_AN_DEVAD, 3382 MDIO_AN_DEVAD,
3382 0x8329, tmp1); 3383 MDIO_AN_REG_8073_2_5G, tmp1);
3383 } 3384 }
3384 3385
3385 /* Add support for CL37 (passive mode) II */ 3386 /* Add support for CL37 (passive mode) II */
@@ -3737,7 +3738,7 @@ static u8 bnx2x_ext_phy_is_link_up(struct link_params *params,
3737 ext_phy_type, 3738 ext_phy_type,
3738 ext_phy_addr, 3739 ext_phy_addr,
3739 MDIO_PMA_DEVAD, 3740 MDIO_PMA_DEVAD,
3740 0xca13, 3741 MDIO_PMA_REG_M8051_MSGOUT_REG,
3741 &val1); 3742 &val1);
3742 3743
3743 /* Check the LASI */ 3744 /* Check the LASI */
@@ -3782,17 +3783,17 @@ static u8 bnx2x_ext_phy_is_link_up(struct link_params *params,
3782 } 3783 }
3783 } 3784 }
3784 bnx2x_cl45_read(bp, params->port, 3785 bnx2x_cl45_read(bp, params->port,
3785 ext_phy_type, 3786 ext_phy_type,
3786 ext_phy_addr, 3787 ext_phy_addr,
3787 MDIO_AN_DEVAD, 3788 MDIO_AN_DEVAD,
3788 0x8304, 3789 MDIO_AN_REG_LINK_STATUS,
3789 &an1000_status); 3790 &an1000_status);
3790 bnx2x_cl45_read(bp, params->port, 3791 bnx2x_cl45_read(bp, params->port,
3791 ext_phy_type, 3792 ext_phy_type,
3792 ext_phy_addr, 3793 ext_phy_addr,
3793 MDIO_AN_DEVAD, 3794 MDIO_AN_DEVAD,
3794 0x8304, 3795 MDIO_AN_REG_LINK_STATUS,
3795 &an1000_status); 3796 &an1000_status);
3796 3797
3797 /* Check the link status on 1.1.2 */ 3798 /* Check the link status on 1.1.2 */
3798 bnx2x_cl45_read(bp, params->port, 3799 bnx2x_cl45_read(bp, params->port,
@@ -3837,11 +3838,11 @@ static u8 bnx2x_ext_phy_is_link_up(struct link_params *params,
3837 3838
3838 } 3839 }
3839 bnx2x_cl45_read(bp, params->port, 3840 bnx2x_cl45_read(bp, params->port,
3840 ext_phy_type, 3841 ext_phy_type,
3841 ext_phy_addr, 3842 ext_phy_addr,
3842 MDIO_PMA_DEVAD, 3843 MDIO_PMA_DEVAD,
3843 0xc820, 3844 MDIO_PMA_REG_8073_SPEED_LINK_STATUS,
3844 &link_status); 3845 &link_status);
3845 3846
3846 /* Bits 0..2 --> speed detected, 3847 /* Bits 0..2 --> speed detected,
3847 bits 13..15--> link is down */ 3848 bits 13..15--> link is down */
@@ -3875,17 +3876,17 @@ static u8 bnx2x_ext_phy_is_link_up(struct link_params *params,
3875 } else { 3876 } else {
3876 /* See if 1G link is up for the 8072 */ 3877 /* See if 1G link is up for the 8072 */
3877 bnx2x_cl45_read(bp, params->port, 3878 bnx2x_cl45_read(bp, params->port,
3878 ext_phy_type, 3879 ext_phy_type,
3879 ext_phy_addr, 3880 ext_phy_addr,
3880 MDIO_AN_DEVAD, 3881 MDIO_AN_DEVAD,
3881 0x8304, 3882 MDIO_AN_REG_LINK_STATUS,
3882 &an1000_status); 3883 &an1000_status);
3883 bnx2x_cl45_read(bp, params->port, 3884 bnx2x_cl45_read(bp, params->port,
3884 ext_phy_type, 3885 ext_phy_type,
3885 ext_phy_addr, 3886 ext_phy_addr,
3886 MDIO_AN_DEVAD, 3887 MDIO_AN_DEVAD,
3887 0x8304, 3888 MDIO_AN_REG_LINK_STATUS,
3888 &an1000_status); 3889 &an1000_status);
3889 if (an1000_status & (1<<1)) { 3890 if (an1000_status & (1<<1)) {
3890 ext_phy_link_up = 1; 3891 ext_phy_link_up = 1;
3891 vars->line_speed = SPEED_1000; 3892 vars->line_speed = SPEED_1000;