diff options
Diffstat (limited to 'drivers/net/bnx2x_link.c')
-rw-r--r-- | drivers/net/bnx2x_link.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/drivers/net/bnx2x_link.c b/drivers/net/bnx2x_link.c index 73b52f17ea84..35f3b5a05723 100644 --- a/drivers/net/bnx2x_link.c +++ b/drivers/net/bnx2x_link.c | |||
@@ -2258,6 +2258,11 @@ static void bnx2x_bcm8726_external_rom_boot(struct link_params *params) | |||
2258 | MDIO_PMA_REG_GEN_CTRL, | 2258 | MDIO_PMA_REG_GEN_CTRL, |
2259 | MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET); | 2259 | MDIO_PMA_REG_GEN_CTRL_ROM_MICRO_RESET); |
2260 | 2260 | ||
2261 | bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, | ||
2262 | MDIO_PMA_DEVAD, | ||
2263 | MDIO_PMA_REG_GEN_CTRL2, | ||
2264 | 0x73A0); | ||
2265 | |||
2261 | /* Clear soft reset. | 2266 | /* Clear soft reset. |
2262 | Will automatically reset micro-controller re-boot */ | 2267 | Will automatically reset micro-controller re-boot */ |
2263 | bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, | 2268 | bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, |
@@ -2265,8 +2270,8 @@ static void bnx2x_bcm8726_external_rom_boot(struct link_params *params) | |||
2265 | MDIO_PMA_REG_GEN_CTRL, | 2270 | MDIO_PMA_REG_GEN_CTRL, |
2266 | MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); | 2271 | MDIO_PMA_REG_GEN_CTRL_ROM_RESET_INTERNAL_MP); |
2267 | 2272 | ||
2268 | /* wait for 100ms for microcode load */ | 2273 | /* wait for 150ms for microcode load */ |
2269 | msleep(100); | 2274 | msleep(150); |
2270 | 2275 | ||
2271 | /* Disable serial boot control, tristates pins SS_N, SCK, MOSI, MISO */ | 2276 | /* Disable serial boot control, tristates pins SS_N, SCK, MOSI, MISO */ |
2272 | bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, | 2277 | bnx2x_cl45_write(bp, port, ext_phy_type, ext_phy_addr, |
@@ -2524,7 +2529,7 @@ static u8 bnx2x_bcm8726_set_limiting_mode(struct link_params *params, | |||
2524 | u8 ext_phy_addr = ((params->ext_phy_config & | 2529 | u8 ext_phy_addr = ((params->ext_phy_config & |
2525 | PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >> | 2530 | PORT_HW_CFG_XGXS_EXT_PHY_ADDR_MASK) >> |
2526 | PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT); | 2531 | PORT_HW_CFG_XGXS_EXT_PHY_ADDR_SHIFT); |
2527 | 2532 | u16 cur_limiting_mode; | |
2528 | if (bnx2x_read_sfp_module_eeprom(params, | 2533 | if (bnx2x_read_sfp_module_eeprom(params, |
2529 | SFP_EEPROM_OPTIONS_ADDR, | 2534 | SFP_EEPROM_OPTIONS_ADDR, |
2530 | SFP_EEPROM_OPTIONS_SIZE, | 2535 | SFP_EEPROM_OPTIONS_SIZE, |
@@ -2535,6 +2540,16 @@ static u8 bnx2x_bcm8726_set_limiting_mode(struct link_params *params, | |||
2535 | } | 2540 | } |
2536 | limiting_mode = !(options[0] & | 2541 | limiting_mode = !(options[0] & |
2537 | SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK); | 2542 | SFP_EEPROM_OPTIONS_LINEAR_RX_OUT_MASK); |
2543 | |||
2544 | bnx2x_cl45_read(bp, port, | ||
2545 | PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, | ||
2546 | ext_phy_addr, | ||
2547 | MDIO_PMA_DEVAD, | ||
2548 | MDIO_PMA_REG_ROM_VER2, | ||
2549 | &cur_limiting_mode); | ||
2550 | DP(NETIF_MSG_LINK, "Current Limiting mode is 0x%x\n", | ||
2551 | cur_limiting_mode); | ||
2552 | |||
2538 | if (limiting_mode && | 2553 | if (limiting_mode && |
2539 | (module_type != SFP_MODULE_TYPE_PASSIVE_COPPER_CABLE)) { | 2554 | (module_type != SFP_MODULE_TYPE_PASSIVE_COPPER_CABLE)) { |
2540 | DP(NETIF_MSG_LINK, | 2555 | DP(NETIF_MSG_LINK, |
@@ -2547,17 +2562,10 @@ static u8 bnx2x_bcm8726_set_limiting_mode(struct link_params *params, | |||
2547 | MDIO_PMA_REG_ROM_VER2, | 2562 | MDIO_PMA_REG_ROM_VER2, |
2548 | SFP_LIMITING_MODE_VALUE); | 2563 | SFP_LIMITING_MODE_VALUE); |
2549 | } else { /* LRM mode ( default )*/ | 2564 | } else { /* LRM mode ( default )*/ |
2550 | u16 cur_limiting_mode; | 2565 | |
2551 | DP(NETIF_MSG_LINK, "Module options = 0x%x.Setting LRM MODE\n", | 2566 | DP(NETIF_MSG_LINK, "Module options = 0x%x.Setting LRM MODE\n", |
2552 | options[0]); | 2567 | options[0]); |
2553 | 2568 | ||
2554 | bnx2x_cl45_read(bp, port, | ||
2555 | PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8726, | ||
2556 | ext_phy_addr, | ||
2557 | MDIO_PMA_DEVAD, | ||
2558 | MDIO_PMA_REG_ROM_VER2, | ||
2559 | &cur_limiting_mode); | ||
2560 | |||
2561 | /* Changing to LRM mode takes quite few seconds. | 2569 | /* Changing to LRM mode takes quite few seconds. |
2562 | So do it only if current mode is limiting | 2570 | So do it only if current mode is limiting |
2563 | ( default is LRM )*/ | 2571 | ( default is LRM )*/ |