| 3384 | } |
| 3385 | |
| 3386 | static void |
| 3387 | txgbe_reset_misc(struct txgbe_hw *hw) |
| 3388 | { |
| 3389 | int i; |
| 3390 | u32 value; |
| 3391 | |
| 3392 | wr32(hw, TXGBE_ISBADDRL, hw->isb_dma & 0x00000000FFFFFFFF); |
| 3393 | wr32(hw, TXGBE_ISBADDRH, hw->isb_dma >> 32); |
| 3394 | |
| 3395 | value = rd32_epcs(hw, SR_XS_PCS_CTRL2); |
| 3396 | if ((value & 0x3) != SR_PCS_CTRL2_TYPE_SEL_X) |
| 3397 | hw->link_status = TXGBE_LINK_STATUS_NONE; |
| 3398 | |
| 3399 | /* receive packets that size > 2048 */ |
| 3400 | wr32m(hw, TXGBE_MACRXCFG, |
| 3401 | TXGBE_MACRXCFG_JUMBO, TXGBE_MACRXCFG_JUMBO); |
| 3402 | |
| 3403 | wr32m(hw, TXGBE_FRMSZ, TXGBE_FRMSZ_MAX_MASK, |
| 3404 | TXGBE_FRMSZ_MAX(TXGBE_FRAME_SIZE_DFT)); |
| 3405 | |
| 3406 | /* clear counters on read */ |
| 3407 | wr32m(hw, TXGBE_MACCNTCTL, |
| 3408 | TXGBE_MACCNTCTL_RC, TXGBE_MACCNTCTL_RC); |
| 3409 | |
| 3410 | wr32m(hw, TXGBE_RXFCCFG, |
| 3411 | TXGBE_RXFCCFG_FC, TXGBE_RXFCCFG_FC); |
| 3412 | wr32m(hw, TXGBE_TXFCCFG, |
| 3413 | TXGBE_TXFCCFG_FC, TXGBE_TXFCCFG_FC); |
| 3414 | |
| 3415 | wr32m(hw, TXGBE_MACRXFLT, |
| 3416 | TXGBE_MACRXFLT_PROMISC, TXGBE_MACRXFLT_PROMISC); |
| 3417 | |
| 3418 | wr32m(hw, TXGBE_RSTSTAT, |
| 3419 | TXGBE_RSTSTAT_TMRINIT_MASK, TXGBE_RSTSTAT_TMRINIT(30)); |
| 3420 | |
| 3421 | /* errata 4: initialize mng flex tbl and wakeup flex tbl*/ |
| 3422 | wr32(hw, TXGBE_MNGFLEXSEL, 0); |
| 3423 | for (i = 0; i < 16; i++) { |
| 3424 | wr32(hw, TXGBE_MNGFLEXDWL(i), 0); |
| 3425 | wr32(hw, TXGBE_MNGFLEXDWH(i), 0); |
| 3426 | wr32(hw, TXGBE_MNGFLEXMSK(i), 0); |
| 3427 | } |
| 3428 | wr32(hw, TXGBE_LANFLEXSEL, 0); |
| 3429 | for (i = 0; i < 16; i++) { |
| 3430 | wr32(hw, TXGBE_LANFLEXDWL(i), 0); |
| 3431 | wr32(hw, TXGBE_LANFLEXDWH(i), 0); |
| 3432 | wr32(hw, TXGBE_LANFLEXMSK(i), 0); |
| 3433 | } |
| 3434 | |
| 3435 | /* set pause frame dst mac addr */ |
| 3436 | wr32(hw, TXGBE_RXPBPFCDMACL, 0xC2000001); |
| 3437 | wr32(hw, TXGBE_RXPBPFCDMACH, 0x0180); |
| 3438 | |
| 3439 | hw->mac.init_thermal_sensor_thresh(hw); |
| 3440 | |
| 3441 | /* enable mac transmitter */ |
| 3442 | wr32m(hw, TXGBE_MACTXCFG, TXGBE_MACTXCFG_TXE, TXGBE_MACTXCFG_TXE); |
| 3443 |
no test coverage detected