Lines Matching refs:lmacid

58 	int			lmacid; /* ID within BGX */  member
208 void bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status) in bgx_get_lmac_link_state() argument
218 lmac = &bgx->lmac[lmacid]; in bgx_get_lmac_link_state()
226 const u8 *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid) in bgx_get_lmac_mac() argument
231 return bgx->lmac[lmacid].mac; in bgx_get_lmac_mac()
237 void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const u8 *mac) in bgx_set_lmac_mac() argument
244 ether_addr_copy(bgx->lmac[lmacid].mac, mac); in bgx_set_lmac_mac()
248 static void bgx_flush_dmac_cam_filter(struct bgx *bgx, int lmacid) in bgx_flush_dmac_cam_filter() argument
253 lmac = &bgx->lmac[lmacid]; in bgx_flush_dmac_cam_filter()
257 ((lmacid * lmac->dmacs_count) + idx) * in bgx_flush_dmac_cam_filter()
314 static int bgx_set_dmac_cam_filter_mac(struct bgx *bgx, int lmacid, in bgx_set_dmac_cam_filter_mac() argument
324 lmac = &bgx->lmac[lmacid]; in bgx_set_dmac_cam_filter_mac()
327 cfg = RX_DMACX_CAM_LMACID(lmacid & LMAC_ID_MASK) | in bgx_set_dmac_cam_filter_mac()
330 ((lmacid * lmac->dmacs_count) + idx) * sizeof(u64), cfg); in bgx_set_dmac_cam_filter_mac()
334 void bgx_set_dmac_cam_filter(int node, int bgx_idx, int lmacid, in bgx_set_dmac_cam_filter() argument
343 lmac = &bgx->lmac[lmacid]; in bgx_set_dmac_cam_filter()
357 void bgx_set_xcast_mode(int node, int bgx_idx, int lmacid, u8 mode) in bgx_set_xcast_mode() argument
367 lmac = &bgx->lmac[lmacid]; in bgx_set_xcast_mode()
369 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL); in bgx_set_xcast_mode()
384 bgx_set_dmac_cam_filter_mac(bgx, lmacid, in bgx_set_xcast_mode()
387 bgx_reg_write(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL, cfg); in bgx_set_xcast_mode()
391 void bgx_reset_xcast_mode(int node, int bgx_idx, int lmacid, u8 vf_id) in bgx_reset_xcast_mode() argument
398 bgx_lmac_remove_filters(&bgx->lmac[lmacid], vf_id); in bgx_reset_xcast_mode()
399 bgx_flush_dmac_cam_filter(bgx, lmacid); in bgx_reset_xcast_mode()
400 bgx_set_xcast_mode(node, bgx_idx, lmacid, in bgx_reset_xcast_mode()
405 void bgx_lmac_rx_tx_enable(int node, int bgx_idx, int lmacid, bool enable) in bgx_lmac_rx_tx_enable() argument
413 lmac = &bgx->lmac[lmacid]; in bgx_lmac_rx_tx_enable()
415 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_rx_tx_enable()
420 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_rx_tx_enable()
428 void bgx_config_timestamping(int node, int bgx_idx, int lmacid, bool enable) in bgx_config_timestamping() argument
437 lmac = &bgx->lmac[lmacid]; in bgx_config_timestamping()
446 cfg = bgx_reg_read(bgx, lmacid, csr_offset); in bgx_config_timestamping()
452 bgx_reg_write(bgx, lmacid, csr_offset, cfg); in bgx_config_timestamping()
456 void bgx_lmac_get_pfc(int node, int bgx_idx, int lmacid, void *pause) in bgx_lmac_get_pfc() argument
465 lmac = &bgx->lmac[lmacid]; in bgx_lmac_get_pfc()
469 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_CBFC_CTL); in bgx_lmac_get_pfc()
476 void bgx_lmac_set_pfc(int node, int bgx_idx, int lmacid, void *pause) in bgx_lmac_set_pfc() argument
485 lmac = &bgx->lmac[lmacid]; in bgx_lmac_set_pfc()
489 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_CBFC_CTL); in bgx_lmac_set_pfc()
493 bgx_reg_write(bgx, lmacid, BGX_SMUX_CBFC_CTL, cfg); in bgx_lmac_set_pfc()
505 cmr_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG); in bgx_sgmii_change_link_state()
509 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
512 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, in bgx_sgmii_change_link_state()
515 bgx->bgx_id, lmac->lmacid); in bgx_sgmii_change_link_state()
520 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, in bgx_sgmii_change_link_state()
523 bgx->bgx_id, lmac->lmacid); in bgx_sgmii_change_link_state()
527 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); in bgx_sgmii_change_link_state()
528 misc_ctl = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL); in bgx_sgmii_change_link_state()
545 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
546 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
554 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
555 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
563 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 512); in bgx_sgmii_change_link_state()
565 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
568 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
574 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL, misc_ctl); in bgx_sgmii_change_link_state()
575 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, port_cfg); in bgx_sgmii_change_link_state()
579 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
683 int lmacid = lmac->lmacid; in bgx_lmac_sgmii_init() local
686 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_THRESH, 0x30); in bgx_lmac_sgmii_init()
688 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_RXX_JABBER, MAX_FRAME_SIZE); in bgx_lmac_sgmii_init()
691 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND); in bgx_lmac_sgmii_init()
693 bgx_reg_write(bgx, lmacid, BGX_GMP_GMI_TXX_SGMII_CTL, 0); in bgx_lmac_sgmii_init()
696 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_sgmii_init()
699 bgx_reg_modify(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, PCS_MRX_CTL_RESET); in bgx_lmac_sgmii_init()
700 if (bgx_poll_reg(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, in bgx_lmac_sgmii_init()
707 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_PCS_MRX_CTL); in bgx_lmac_sgmii_init()
720 bgx_reg_write(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, cfg); in bgx_lmac_sgmii_init()
724 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_PCS_MISCX_CTL); in bgx_lmac_sgmii_init()
726 bgx_reg_write(bgx, lmacid, BGX_GMP_PCS_MISCX_CTL, cfg); in bgx_lmac_sgmii_init()
731 if (bgx_poll_reg(bgx, lmacid, BGX_GMP_PCS_MRX_STATUS, in bgx_lmac_sgmii_init()
744 int lmacid = lmac->lmacid; in bgx_lmac_xaui_init() local
747 bgx_reg_modify(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET); in bgx_lmac_xaui_init()
748 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET, true)) { in bgx_lmac_xaui_init()
754 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_xaui_init()
756 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_xaui_init()
758 bgx_reg_modify(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_LOW_POWER); in bgx_lmac_xaui_init()
761 bgx_reg_modify(bgx, lmacid, BGX_SPUX_MISC_CONTROL, in bgx_lmac_xaui_init()
765 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_MISC_CONTROL); in bgx_lmac_xaui_init()
767 bgx_reg_write(bgx, lmacid, BGX_SPUX_MISC_CONTROL, cfg); in bgx_lmac_xaui_init()
770 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_RX_INT); in bgx_lmac_xaui_init()
771 bgx_reg_write(bgx, lmacid, BGX_SMUX_RX_INT, cfg); in bgx_lmac_xaui_init()
772 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_INT); in bgx_lmac_xaui_init()
773 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_INT, cfg); in bgx_lmac_xaui_init()
774 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_lmac_xaui_init()
775 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_lmac_xaui_init()
778 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LP_CUP, 0x00); in bgx_lmac_xaui_init()
779 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LD_CUP, 0x00); in bgx_lmac_xaui_init()
780 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LD_REP, 0x00); in bgx_lmac_xaui_init()
782 bgx_reg_modify(bgx, lmacid, in bgx_lmac_xaui_init()
787 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_APPEND, SMU_TX_APPEND_FCS_D); in bgx_lmac_xaui_init()
790 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_FEC_CONTROL); in bgx_lmac_xaui_init()
792 bgx_reg_write(bgx, lmacid, BGX_SPUX_FEC_CONTROL, cfg); in bgx_lmac_xaui_init()
795 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_AN_CONTROL); in bgx_lmac_xaui_init()
797 bgx_reg_write(bgx, lmacid, BGX_SPUX_AN_CONTROL, cfg); in bgx_lmac_xaui_init()
799 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_AN_ADV); in bgx_lmac_xaui_init()
807 bgx_reg_write(bgx, lmacid, BGX_SPUX_AN_ADV, cfg); in bgx_lmac_xaui_init()
814 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_xaui_init()
816 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_CONTROL1); in bgx_lmac_xaui_init()
818 bgx_reg_write(bgx, lmacid, BGX_SPUX_CONTROL1, cfg); in bgx_lmac_xaui_init()
820 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_CTL); in bgx_lmac_xaui_init()
823 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_CTL, cfg); in bgx_lmac_xaui_init()
826 bgx_reg_write(bgx, lmacid, BGX_SMUX_CBFC_CTL, ((0xffffULL << 32) | in bgx_lmac_xaui_init()
829 bgx_reg_write(bgx, lmacid, in bgx_lmac_xaui_init()
831 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_PAUSE_PKT_INTERVAL); in bgx_lmac_xaui_init()
833 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_PAUSE_PKT_INTERVAL, in bgx_lmac_xaui_init()
835 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_PAUSE_ZERO, 0x01); in bgx_lmac_xaui_init()
838 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_THRESH, (0x100 - 1)); in bgx_lmac_xaui_init()
840 bgx_reg_modify(bgx, lmacid, BGX_SMUX_RX_JABBER, MAX_FRAME_SIZE); in bgx_lmac_xaui_init()
848 int lmacid = lmac->lmacid; in bgx_xaui_check_link() local
853 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_xaui_check_link()
856 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_xaui_check_link()
857 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL); in bgx_xaui_check_link()
859 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL, cfg); in bgx_xaui_check_link()
865 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET, true)) { in bgx_xaui_check_link()
872 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_BR_STATUS1, in bgx_xaui_check_link()
879 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_BX_STATUS, in bgx_xaui_check_link()
888 if (bgx_reg_read(bgx, lmacid, BGX_SPUX_STATUS2) & SPU_STATUS2_RCVFLT) in bgx_xaui_check_link()
889 bgx_reg_modify(bgx, lmacid, in bgx_xaui_check_link()
891 if (bgx_reg_read(bgx, lmacid, BGX_SPUX_STATUS2) & SPU_STATUS2_RCVFLT) { in bgx_xaui_check_link()
894 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_xaui_check_link()
897 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_xaui_check_link()
898 cfg = bgx_reg_read(bgx, lmacid, in bgx_xaui_check_link()
901 bgx_reg_write(bgx, lmacid, in bgx_xaui_check_link()
910 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_CTL, SMU_CTL_RX_IDLE, false)) { in bgx_xaui_check_link()
916 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_CTL, SMU_CTL_TX_IDLE, false)) { in bgx_xaui_check_link()
922 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_RX_CTL); in bgx_xaui_check_link()
941 pcs_link = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
946 pcs_link = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
949 if (bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_GMP_PCS_MRX_STATUS, in bgx_poll_for_sgmii_link()
958 an_result = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
1003 bgx_reg_modify(lmac->bgx, lmac->lmacid, in bgx_poll_for_link()
1005 bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1, in bgx_poll_for_link()
1008 spu_link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1); in bgx_poll_for_link()
1009 smu_link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SMUX_RX_CTL); in bgx_poll_for_link()
1050 static int bgx_lmac_enable(struct bgx *bgx, u8 lmacid) in bgx_lmac_enable() argument
1055 lmac = &bgx->lmac[lmacid]; in bgx_lmac_enable()
1071 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND); in bgx_lmac_enable()
1073 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND, cfg); in bgx_lmac_enable()
1074 bgx_reg_write(bgx, lmacid, BGX_GMP_GMI_TXX_MIN_PKT, 60 - 1); in bgx_lmac_enable()
1076 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_APPEND); in bgx_lmac_enable()
1078 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_APPEND, cfg); in bgx_lmac_enable()
1079 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_MIN_PKT, 60 + 4); in bgx_lmac_enable()
1090 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_enable()
1093 bgx_reg_write(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL, 0x03); in bgx_lmac_enable()
1101 bgx_reg_write(bgx, lmacid, in bgx_lmac_enable()
1136 static void bgx_lmac_disable(struct bgx *bgx, u8 lmacid) in bgx_lmac_disable() argument
1141 lmac = &bgx->lmac[lmacid]; in bgx_lmac_disable()
1149 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
1151 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_disable()
1154 bgx_poll_reg(bgx, lmacid, BGX_CMRX_RX_FIFO_LEN, (u64)0x1FFF, true); in bgx_lmac_disable()
1155 bgx_poll_reg(bgx, lmacid, BGX_CMRX_TX_FIFO_LEN, (u64)0x3FFF, true); in bgx_lmac_disable()
1158 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
1160 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_disable()
1164 bgx_reg_modify(bgx, lmacid, in bgx_lmac_disable()
1167 bgx_reg_modify(bgx, lmacid, in bgx_lmac_disable()
1171 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
1173 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_disable()
1175 bgx_flush_dmac_cam_filter(bgx, lmacid); in bgx_lmac_disable()
1225 return (u8)(bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG) & 0xFF); in bgx_get_lane2sds_cfg()
1228 static void bgx_print_qlm_mode(struct bgx *bgx, u8 lmacid) in bgx_print_qlm_mode() argument
1234 if (!bgx->is_dlm && lmacid) in bgx_print_qlm_mode()
1237 lmac = &bgx->lmac[lmacid]; in bgx_print_qlm_mode()
1241 sprintf(str, "BGX%d LMAC%d mode", bgx->bgx_id, lmacid); in bgx_print_qlm_mode()
1282 lmac->lane_to_sds = lmac->lmacid; in lmac_set_lane2sds()
1290 lmac->lane_to_sds = (lmac->lmacid) ? 0xE : 0x4; in lmac_set_lane2sds()
1306 static void lmac_set_training(struct bgx *bgx, struct lmac *lmac, int lmacid) in lmac_set_training() argument
1314 lmac->use_training = bgx_reg_read(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL) & in lmac_set_training()
1354 lmac_set_training(bgx, lmac, lmac->lmacid); in bgx_set_lmac_config()
1365 lmac->lmacid = idx; in bgx_get_qlm_mode()
1422 bgx->lmac[bgx->acpi_lmac_idx].lmacid = bgx->acpi_lmac_idx; in bgx_acpi_register_phy()
1491 bgx->lmac[lmac].lmacid = lmac; in bgx_init_of_phy()