| 2357 | } |
| 2358 | |
| 2359 | void txgbe_set_phy_temp(struct txgbe_hw *hw) |
| 2360 | { |
| 2361 | u32 value; |
| 2362 | |
| 2363 | if (hw->phy.ffe_set == TXGBE_BP_M_SFI) { |
| 2364 | BP_LOG("Set SFI TX_EQ MAIN:%d PRE:%d POST:%d\n", |
| 2365 | hw->phy.ffe_main, hw->phy.ffe_pre, hw->phy.ffe_post); |
| 2366 | |
| 2367 | value = rd32_epcs(hw, TXGBE_PHY_TX_EQ_CTL0); |
| 2368 | value = (value & ~0x3F3F) | (hw->phy.ffe_main << 8) | |
| 2369 | hw->phy.ffe_pre; |
| 2370 | wr32_epcs(hw, TXGBE_PHY_TX_EQ_CTL0, value); |
| 2371 | |
| 2372 | value = rd32_epcs(hw, TXGBE_PHY_TX_EQ_CTL1); |
| 2373 | value = (value & ~0x7F) | hw->phy.ffe_post | (1 << 6); |
| 2374 | wr32_epcs(hw, TXGBE_PHY_TX_EQ_CTL1, value); |
| 2375 | } |
| 2376 | |
| 2377 | if (hw->phy.ffe_set == TXGBE_BP_M_KR) { |
| 2378 | BP_LOG("Set KR TX_EQ MAIN:%d PRE:%d POST:%d\n", |
| 2379 | hw->phy.ffe_main, hw->phy.ffe_pre, hw->phy.ffe_post); |
| 2380 | value = (0x1804 & ~0x3F3F); |
| 2381 | value |= hw->phy.ffe_main << 8 | hw->phy.ffe_pre; |
| 2382 | wr32_epcs(hw, TXGBE_PHY_TX_EQ_CTL0, value); |
| 2383 | |
| 2384 | value = (0x50 & ~0x7F) | (1 << 6) | hw->phy.ffe_post; |
| 2385 | wr32_epcs(hw, TXGBE_PHY_TX_EQ_CTL1, value); |
| 2386 | wr32_epcs(hw, 0x18035, 0x00FF); |
| 2387 | wr32_epcs(hw, 0x18055, 0x00FF); |
| 2388 | } |
| 2389 | |
| 2390 | if (hw->phy.ffe_set == TXGBE_BP_M_KX) { |
| 2391 | BP_LOG("Set KX TX_EQ MAIN:%d PRE:%d POST:%d\n", |
| 2392 | hw->phy.ffe_main, hw->phy.ffe_pre, hw->phy.ffe_post); |
| 2393 | value = rd32_epcs(hw, TXGBE_PHY_TX_EQ_CTL0); |
| 2394 | value = (value & ~0x3F3F) | (hw->phy.ffe_main << 8) | |
| 2395 | hw->phy.ffe_pre; |
| 2396 | wr32_epcs(hw, TXGBE_PHY_TX_EQ_CTL0, value); |
| 2397 | |
| 2398 | value = rd32_epcs(hw, TXGBE_PHY_TX_EQ_CTL1); |
| 2399 | value = (value & ~0x7F) | hw->phy.ffe_post | (1 << 6); |
| 2400 | wr32_epcs(hw, TXGBE_PHY_TX_EQ_CTL1, value); |
| 2401 | |
| 2402 | wr32_epcs(hw, 0x18035, 0x00FF); |
| 2403 | wr32_epcs(hw, 0x18055, 0x00FF); |
| 2404 | } |
| 2405 | } |
| 2406 | |
| 2407 | /** |
| 2408 | * txgbe_kr_handle - Handle the interrupt of auto-negotiation |
no test coverage detected