Lines Matching +full:phy +full:- +full:mode

116 #include "xgbe-common.h"
151 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_an_outcome()
152 enum xgbe_mode mode; in xgbe_phy_an_outcome() local
155 XGBE_SET_LP_ADV(&pdata->phy, Autoneg); in xgbe_phy_an_outcome()
156 XGBE_SET_LP_ADV(&pdata->phy, Backplane); in xgbe_phy_an_outcome()
162 XGBE_SET_LP_ADV(&pdata->phy, Pause); in xgbe_phy_an_outcome()
164 XGBE_SET_LP_ADV(&pdata->phy, Asym_Pause); in xgbe_phy_an_outcome()
167 __func__, pdata->phy.pause_autoneg, ad_reg, lp_reg); in xgbe_phy_an_outcome()
169 if (pdata->phy.pause_autoneg) { in xgbe_phy_an_outcome()
170 /* Set flow control based on auto-negotiation result */ in xgbe_phy_an_outcome()
171 pdata->phy.tx_pause = 0; in xgbe_phy_an_outcome()
172 pdata->phy.rx_pause = 0; in xgbe_phy_an_outcome()
175 pdata->phy.tx_pause = 1; in xgbe_phy_an_outcome()
176 pdata->phy.rx_pause = 1; in xgbe_phy_an_outcome()
179 pdata->phy.rx_pause = 1; in xgbe_phy_an_outcome()
181 pdata->phy.tx_pause = 1; in xgbe_phy_an_outcome()
189 XGBE_SET_LP_ADV(&pdata->phy, 10000baseKR_Full); in xgbe_phy_an_outcome()
191 if (phy_data->speed_set == XGBE_SPEEDSET_2500_10000) in xgbe_phy_an_outcome()
192 XGBE_SET_LP_ADV(&pdata->phy, 2500baseX_Full); in xgbe_phy_an_outcome()
194 XGBE_SET_LP_ADV(&pdata->phy, 1000baseKX_Full); in xgbe_phy_an_outcome()
199 pdata->phy.speed = SPEED_10000; in xgbe_phy_an_outcome()
200 mode = XGBE_MODE_KR; in xgbe_phy_an_outcome()
202 switch (pdata->speed_set) { in xgbe_phy_an_outcome()
204 pdata->phy.speed = SPEED_1000; in xgbe_phy_an_outcome()
205 mode = XGBE_MODE_KX_1000; in xgbe_phy_an_outcome()
209 pdata->phy.speed = SPEED_2500; in xgbe_phy_an_outcome()
210 mode = XGBE_MODE_KX_2500; in xgbe_phy_an_outcome()
214 mode = XGBE_MODE_UNKNOWN; in xgbe_phy_an_outcome()
215 pdata->phy.speed = SPEED_UNKNOWN; in xgbe_phy_an_outcome()
222 XGBE_SET_LP_ADV(&pdata->phy, 10000baseR_FEC); in xgbe_phy_an_outcome()
224 return (mode); in xgbe_phy_an_outcome()
230 XGBE_LM_COPY(dphy, advertising, &pdata->phy, advertising); in xgbe_phy_an_advertising()
280 while (wait--) { in xgbe_phy_complete_ratechange()
300 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_kr_mode()
324 phy_data->cdr_rate[XGBE_SPEED_10000]); in xgbe_phy_kr_mode()
326 phy_data->tx_amp[XGBE_SPEED_10000]); in xgbe_phy_kr_mode()
328 phy_data->blwc[XGBE_SPEED_10000]); in xgbe_phy_kr_mode()
330 phy_data->pq_skew[XGBE_SPEED_10000]); in xgbe_phy_kr_mode()
332 phy_data->dfe_tap_cfg[XGBE_SPEED_10000]); in xgbe_phy_kr_mode()
334 phy_data->dfe_tap_ena[XGBE_SPEED_10000]); in xgbe_phy_kr_mode()
338 axgbe_printf(2, "10GbE KR mode set\n"); in xgbe_phy_kr_mode()
344 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_kx_2500_mode()
368 phy_data->cdr_rate[XGBE_SPEED_2500]); in xgbe_phy_kx_2500_mode()
370 phy_data->tx_amp[XGBE_SPEED_2500]); in xgbe_phy_kx_2500_mode()
372 phy_data->blwc[XGBE_SPEED_2500]); in xgbe_phy_kx_2500_mode()
374 phy_data->pq_skew[XGBE_SPEED_2500]); in xgbe_phy_kx_2500_mode()
376 phy_data->dfe_tap_cfg[XGBE_SPEED_2500]); in xgbe_phy_kx_2500_mode()
378 phy_data->dfe_tap_ena[XGBE_SPEED_2500]); in xgbe_phy_kx_2500_mode()
382 axgbe_printf(2, "2.5GbE KX mode set\n"); in xgbe_phy_kx_2500_mode()
388 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_kx_1000_mode()
412 phy_data->cdr_rate[XGBE_SPEED_1000]); in xgbe_phy_kx_1000_mode()
414 phy_data->tx_amp[XGBE_SPEED_1000]); in xgbe_phy_kx_1000_mode()
416 phy_data->blwc[XGBE_SPEED_1000]); in xgbe_phy_kx_1000_mode()
418 phy_data->pq_skew[XGBE_SPEED_1000]); in xgbe_phy_kx_1000_mode()
420 phy_data->dfe_tap_cfg[XGBE_SPEED_1000]); in xgbe_phy_kx_1000_mode()
422 phy_data->dfe_tap_ena[XGBE_SPEED_1000]); in xgbe_phy_kx_1000_mode()
426 axgbe_printf(2, "1GbE KX mode set\n"); in xgbe_phy_kx_1000_mode()
432 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_cur_mode()
433 enum xgbe_mode mode; in xgbe_phy_cur_mode() local
440 mode = XGBE_MODE_KR; in xgbe_phy_cur_mode()
442 if (phy_data->speed_set == XGBE_SPEEDSET_2500_10000) in xgbe_phy_cur_mode()
443 mode = XGBE_MODE_KX_2500; in xgbe_phy_cur_mode()
445 mode = XGBE_MODE_KX_1000; in xgbe_phy_cur_mode()
448 return (mode); in xgbe_phy_cur_mode()
454 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_switch_mode()
455 enum xgbe_mode mode; in xgbe_phy_switch_mode() local
457 /* If we are in KR switch to KX, and vice-versa */ in xgbe_phy_switch_mode()
459 if (phy_data->speed_set == XGBE_SPEEDSET_2500_10000) in xgbe_phy_switch_mode()
460 mode = XGBE_MODE_KX_2500; in xgbe_phy_switch_mode()
462 mode = XGBE_MODE_KX_1000; in xgbe_phy_switch_mode()
464 mode = XGBE_MODE_KR; in xgbe_phy_switch_mode()
467 return (mode); in xgbe_phy_switch_mode()
473 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_get_mode()
477 return ((phy_data->speed_set == XGBE_SPEEDSET_1000_10000) in xgbe_phy_get_mode()
480 return ((phy_data->speed_set == XGBE_SPEEDSET_2500_10000) in xgbe_phy_get_mode()
490 xgbe_phy_set_mode(struct xgbe_prv_data *pdata, enum xgbe_mode mode) in xgbe_phy_set_mode() argument
492 switch (mode) { in xgbe_phy_set_mode()
511 switch (pdata->phy.speed) { in xgbe_phy_get_type()
513 ifmr->ifm_active |= IFM_10G_KR; in xgbe_phy_get_type()
516 ifmr->ifm_active |= IFM_2500_KX; in xgbe_phy_get_type()
519 ifmr->ifm_active |= IFM_1000_KX; in xgbe_phy_get_type()
522 ifmr->ifm_active |= IFM_OTHER; in xgbe_phy_get_type()
528 xgbe_phy_check_mode(struct xgbe_prv_data *pdata, enum xgbe_mode mode, bool advert) in xgbe_phy_check_mode() argument
531 if (pdata->phy.autoneg == AUTONEG_ENABLE) in xgbe_phy_check_mode()
536 cur_mode = xgbe_phy_get_mode(pdata, pdata->phy.speed); in xgbe_phy_check_mode()
537 if (cur_mode == mode) in xgbe_phy_check_mode()
545 xgbe_phy_use_mode(struct xgbe_prv_data *pdata, enum xgbe_mode mode) in xgbe_phy_use_mode() argument
548 switch (mode) { in xgbe_phy_use_mode()
550 return (xgbe_phy_check_mode(pdata, mode, in xgbe_phy_use_mode()
551 XGBE_ADV(&pdata->phy, 1000baseKX_Full))); in xgbe_phy_use_mode()
553 return (xgbe_phy_check_mode(pdata, mode, in xgbe_phy_use_mode()
554 XGBE_ADV(&pdata->phy, 2500baseX_Full))); in xgbe_phy_use_mode()
556 return (xgbe_phy_check_mode(pdata, mode, in xgbe_phy_use_mode()
557 XGBE_ADV(&pdata->phy, 10000baseKR_Full))); in xgbe_phy_use_mode()
566 struct xgbe_phy_data *phy_data = pdata->phy_data; in xgbe_phy_valid_speed()
570 if (phy_data->speed_set != XGBE_SPEEDSET_1000_10000) in xgbe_phy_valid_speed()
574 if (phy_data->speed_set != XGBE_SPEEDSET_2500_10000) in xgbe_phy_valid_speed()
627 } while ((reg & MDIO_CTRL1_RESET) && --count); in xgbe_phy_reset()
630 return (-ETIMEDOUT); in xgbe_phy_reset()
649 XGBE_ZERO_SUP(&pdata->phy); in xgbe_phy_init()
650 XGBE_SET_SUP(&pdata->phy, Autoneg); in xgbe_phy_init()
651 XGBE_SET_SUP(&pdata->phy, Pause); in xgbe_phy_init()
652 XGBE_SET_SUP(&pdata->phy, Asym_Pause); in xgbe_phy_init()
653 XGBE_SET_SUP(&pdata->phy, Backplane); in xgbe_phy_init()
654 XGBE_SET_SUP(&pdata->phy, 10000baseKR_Full); in xgbe_phy_init()
655 switch (phy_data->speed_set) { in xgbe_phy_init()
657 XGBE_SET_SUP(&pdata->phy, 1000baseKX_Full); in xgbe_phy_init()
660 XGBE_SET_SUP(&pdata->phy, 2500baseX_Full); in xgbe_phy_init()
664 if (pdata->fec_ability & MDIO_PMA_10GBR_FECABLE_ABLE) in xgbe_phy_init()
665 XGBE_SET_SUP(&pdata->phy, 10000baseR_FEC); in xgbe_phy_init()
667 pdata->phy_data = phy_data; in xgbe_phy_init()
675 struct xgbe_phy_impl_if *phy_impl = &phy_if->phy_impl; in xgbe_init_function_ptrs_phy_v1()
677 phy_impl->init = xgbe_phy_init; in xgbe_init_function_ptrs_phy_v1()
678 phy_impl->exit = xgbe_phy_exit; in xgbe_init_function_ptrs_phy_v1()
680 phy_impl->reset = xgbe_phy_reset; in xgbe_init_function_ptrs_phy_v1()
681 phy_impl->start = xgbe_phy_start; in xgbe_init_function_ptrs_phy_v1()
682 phy_impl->stop = xgbe_phy_stop; in xgbe_init_function_ptrs_phy_v1()
684 phy_impl->link_status = xgbe_phy_link_status; in xgbe_init_function_ptrs_phy_v1()
686 phy_impl->valid_speed = xgbe_phy_valid_speed; in xgbe_init_function_ptrs_phy_v1()
688 phy_impl->use_mode = xgbe_phy_use_mode; in xgbe_init_function_ptrs_phy_v1()
689 phy_impl->set_mode = xgbe_phy_set_mode; in xgbe_init_function_ptrs_phy_v1()
690 phy_impl->get_mode = xgbe_phy_get_mode; in xgbe_init_function_ptrs_phy_v1()
691 phy_impl->switch_mode = xgbe_phy_switch_mode; in xgbe_init_function_ptrs_phy_v1()
692 phy_impl->cur_mode = xgbe_phy_cur_mode; in xgbe_init_function_ptrs_phy_v1()
693 phy_impl->get_type = xgbe_phy_get_type; in xgbe_init_function_ptrs_phy_v1()
695 phy_impl->an_mode = xgbe_phy_an_mode; in xgbe_init_function_ptrs_phy_v1()
697 phy_impl->an_config = xgbe_phy_an_config; in xgbe_init_function_ptrs_phy_v1()
699 phy_impl->an_advertising = xgbe_phy_an_advertising; in xgbe_init_function_ptrs_phy_v1()
701 phy_impl->an_outcome = xgbe_phy_an_outcome; in xgbe_init_function_ptrs_phy_v1()
703 phy_impl->kr_training_pre = xgbe_phy_kr_training_pre; in xgbe_init_function_ptrs_phy_v1()
704 phy_impl->kr_training_post = xgbe_phy_kr_training_post; in xgbe_init_function_ptrs_phy_v1()