Lines Matching refs:lmacid
55 int lmacid; /* ID within BGX */ member
205 void bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status) in bgx_get_lmac_link_state() argument
215 lmac = &bgx->lmac[lmacid]; in bgx_get_lmac_link_state()
223 const u8 *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid) in bgx_get_lmac_mac() argument
228 return bgx->lmac[lmacid].mac; in bgx_get_lmac_mac()
234 void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const u8 *mac) in bgx_set_lmac_mac() argument
241 ether_addr_copy(bgx->lmac[lmacid].mac, mac); in bgx_set_lmac_mac()
245 static void bgx_flush_dmac_cam_filter(struct bgx *bgx, int lmacid) in bgx_flush_dmac_cam_filter() argument
250 lmac = &bgx->lmac[lmacid]; in bgx_flush_dmac_cam_filter()
254 ((lmacid * lmac->dmacs_count) + idx) * in bgx_flush_dmac_cam_filter()
311 static int bgx_set_dmac_cam_filter_mac(struct bgx *bgx, int lmacid, in bgx_set_dmac_cam_filter_mac() argument
321 lmac = &bgx->lmac[lmacid]; in bgx_set_dmac_cam_filter_mac()
324 cfg = RX_DMACX_CAM_LMACID(lmacid & LMAC_ID_MASK) | in bgx_set_dmac_cam_filter_mac()
327 ((lmacid * lmac->dmacs_count) + idx) * sizeof(u64), cfg); in bgx_set_dmac_cam_filter_mac()
331 void bgx_set_dmac_cam_filter(int node, int bgx_idx, int lmacid, in bgx_set_dmac_cam_filter() argument
340 lmac = &bgx->lmac[lmacid]; in bgx_set_dmac_cam_filter()
354 void bgx_set_xcast_mode(int node, int bgx_idx, int lmacid, u8 mode) in bgx_set_xcast_mode() argument
364 lmac = &bgx->lmac[lmacid]; in bgx_set_xcast_mode()
366 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL); in bgx_set_xcast_mode()
381 bgx_set_dmac_cam_filter_mac(bgx, lmacid, in bgx_set_xcast_mode()
384 bgx_reg_write(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL, cfg); in bgx_set_xcast_mode()
388 void bgx_reset_xcast_mode(int node, int bgx_idx, int lmacid, u8 vf_id) in bgx_reset_xcast_mode() argument
395 bgx_lmac_remove_filters(&bgx->lmac[lmacid], vf_id); in bgx_reset_xcast_mode()
396 bgx_flush_dmac_cam_filter(bgx, lmacid); in bgx_reset_xcast_mode()
397 bgx_set_xcast_mode(node, bgx_idx, lmacid, in bgx_reset_xcast_mode()
402 void bgx_lmac_rx_tx_enable(int node, int bgx_idx, int lmacid, bool enable) in bgx_lmac_rx_tx_enable() argument
410 lmac = &bgx->lmac[lmacid]; in bgx_lmac_rx_tx_enable()
412 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_rx_tx_enable()
417 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_INT_ENA_W1S, in bgx_lmac_rx_tx_enable()
423 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_INT_ENA_W1C, in bgx_lmac_rx_tx_enable()
426 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_rx_tx_enable()
434 void bgx_config_timestamping(int node, int bgx_idx, int lmacid, bool enable) in bgx_config_timestamping() argument
443 lmac = &bgx->lmac[lmacid]; in bgx_config_timestamping()
452 cfg = bgx_reg_read(bgx, lmacid, csr_offset); in bgx_config_timestamping()
458 bgx_reg_write(bgx, lmacid, csr_offset, cfg); in bgx_config_timestamping()
462 void bgx_lmac_get_pfc(int node, int bgx_idx, int lmacid, void *pause) in bgx_lmac_get_pfc() argument
471 lmac = &bgx->lmac[lmacid]; in bgx_lmac_get_pfc()
475 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_CBFC_CTL); in bgx_lmac_get_pfc()
482 void bgx_lmac_set_pfc(int node, int bgx_idx, int lmacid, void *pause) in bgx_lmac_set_pfc() argument
491 lmac = &bgx->lmac[lmacid]; in bgx_lmac_set_pfc()
495 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_CBFC_CTL); in bgx_lmac_set_pfc()
499 bgx_reg_write(bgx, lmacid, BGX_SMUX_CBFC_CTL, cfg); in bgx_lmac_set_pfc()
511 cmr_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG); in bgx_sgmii_change_link_state()
515 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
518 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, in bgx_sgmii_change_link_state()
521 bgx->bgx_id, lmac->lmacid); in bgx_sgmii_change_link_state()
526 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, in bgx_sgmii_change_link_state()
529 bgx->bgx_id, lmac->lmacid); in bgx_sgmii_change_link_state()
533 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); in bgx_sgmii_change_link_state()
534 misc_ctl = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL); in bgx_sgmii_change_link_state()
551 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
552 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
560 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
561 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
569 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 512); in bgx_sgmii_change_link_state()
571 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
574 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
580 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL, misc_ctl); in bgx_sgmii_change_link_state()
581 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, port_cfg); in bgx_sgmii_change_link_state()
585 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
689 int lmacid = lmac->lmacid; in bgx_lmac_sgmii_init() local
692 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_THRESH, 0x30); in bgx_lmac_sgmii_init()
694 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_RXX_JABBER, MAX_FRAME_SIZE); in bgx_lmac_sgmii_init()
697 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND); in bgx_lmac_sgmii_init()
699 bgx_reg_write(bgx, lmacid, BGX_GMP_GMI_TXX_SGMII_CTL, 0); in bgx_lmac_sgmii_init()
702 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_sgmii_init()
705 bgx_reg_modify(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, PCS_MRX_CTL_RESET); in bgx_lmac_sgmii_init()
706 if (bgx_poll_reg(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, in bgx_lmac_sgmii_init()
713 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_PCS_MRX_CTL); in bgx_lmac_sgmii_init()
726 bgx_reg_write(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, cfg); in bgx_lmac_sgmii_init()
730 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_PCS_MISCX_CTL); in bgx_lmac_sgmii_init()
732 bgx_reg_write(bgx, lmacid, BGX_GMP_PCS_MISCX_CTL, cfg); in bgx_lmac_sgmii_init()
737 if (bgx_poll_reg(bgx, lmacid, BGX_GMP_PCS_MRX_STATUS, in bgx_lmac_sgmii_init()
750 int lmacid = lmac->lmacid; in bgx_lmac_xaui_init() local
753 bgx_reg_modify(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET); in bgx_lmac_xaui_init()
754 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET, true)) { in bgx_lmac_xaui_init()
760 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_xaui_init()
762 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_xaui_init()
764 bgx_reg_modify(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_LOW_POWER); in bgx_lmac_xaui_init()
767 bgx_reg_modify(bgx, lmacid, BGX_SPUX_MISC_CONTROL, in bgx_lmac_xaui_init()
771 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_MISC_CONTROL); in bgx_lmac_xaui_init()
773 bgx_reg_write(bgx, lmacid, BGX_SPUX_MISC_CONTROL, cfg); in bgx_lmac_xaui_init()
776 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_RX_INT); in bgx_lmac_xaui_init()
777 bgx_reg_write(bgx, lmacid, BGX_SMUX_RX_INT, cfg); in bgx_lmac_xaui_init()
778 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_INT); in bgx_lmac_xaui_init()
779 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_INT, cfg); in bgx_lmac_xaui_init()
780 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_lmac_xaui_init()
781 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_lmac_xaui_init()
784 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LP_CUP, 0x00); in bgx_lmac_xaui_init()
785 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LD_CUP, 0x00); in bgx_lmac_xaui_init()
786 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LD_REP, 0x00); in bgx_lmac_xaui_init()
788 bgx_reg_modify(bgx, lmacid, in bgx_lmac_xaui_init()
793 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_APPEND, SMU_TX_APPEND_FCS_D); in bgx_lmac_xaui_init()
796 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_FEC_CONTROL); in bgx_lmac_xaui_init()
798 bgx_reg_write(bgx, lmacid, BGX_SPUX_FEC_CONTROL, cfg); in bgx_lmac_xaui_init()
801 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_AN_CONTROL); in bgx_lmac_xaui_init()
803 bgx_reg_write(bgx, lmacid, BGX_SPUX_AN_CONTROL, cfg); in bgx_lmac_xaui_init()
805 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_AN_ADV); in bgx_lmac_xaui_init()
813 bgx_reg_write(bgx, lmacid, BGX_SPUX_AN_ADV, cfg); in bgx_lmac_xaui_init()
820 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_xaui_init()
822 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_CONTROL1); in bgx_lmac_xaui_init()
824 bgx_reg_write(bgx, lmacid, BGX_SPUX_CONTROL1, cfg); in bgx_lmac_xaui_init()
826 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_CTL); in bgx_lmac_xaui_init()
829 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_CTL, cfg); in bgx_lmac_xaui_init()
832 bgx_reg_write(bgx, lmacid, BGX_SMUX_CBFC_CTL, ((0xffffULL << 32) | in bgx_lmac_xaui_init()
835 bgx_reg_write(bgx, lmacid, in bgx_lmac_xaui_init()
837 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_PAUSE_PKT_INTERVAL); in bgx_lmac_xaui_init()
839 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_PAUSE_PKT_INTERVAL, in bgx_lmac_xaui_init()
841 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_PAUSE_ZERO, 0x01); in bgx_lmac_xaui_init()
844 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_THRESH, (0x100 - 1)); in bgx_lmac_xaui_init()
846 bgx_reg_modify(bgx, lmacid, BGX_SMUX_RX_JABBER, MAX_FRAME_SIZE); in bgx_lmac_xaui_init()
854 int lmacid = lmac->lmacid; in bgx_xaui_check_link() local
859 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_xaui_check_link()
862 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_xaui_check_link()
863 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL); in bgx_xaui_check_link()
865 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL, cfg); in bgx_xaui_check_link()
871 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET, true)) { in bgx_xaui_check_link()
878 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_BR_STATUS1, in bgx_xaui_check_link()
885 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_BX_STATUS, in bgx_xaui_check_link()
894 if (bgx_reg_read(bgx, lmacid, BGX_SPUX_STATUS2) & SPU_STATUS2_RCVFLT) in bgx_xaui_check_link()
895 bgx_reg_modify(bgx, lmacid, in bgx_xaui_check_link()
897 if (bgx_reg_read(bgx, lmacid, BGX_SPUX_STATUS2) & SPU_STATUS2_RCVFLT) { in bgx_xaui_check_link()
900 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_xaui_check_link()
903 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_xaui_check_link()
904 cfg = bgx_reg_read(bgx, lmacid, in bgx_xaui_check_link()
907 bgx_reg_write(bgx, lmacid, in bgx_xaui_check_link()
916 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_CTL, SMU_CTL_RX_IDLE, false)) { in bgx_xaui_check_link()
922 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_CTL, SMU_CTL_TX_IDLE, false)) { in bgx_xaui_check_link()
928 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_RX_CTL); in bgx_xaui_check_link()
947 pcs_link = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
952 pcs_link = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
955 if (bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_GMP_PCS_MRX_STATUS, in bgx_poll_for_sgmii_link()
964 an_result = bgx_reg_read(lmac->bgx, lmac->lmacid, in bgx_poll_for_sgmii_link()
1009 bgx_reg_modify(lmac->bgx, lmac->lmacid, in bgx_poll_for_link()
1011 bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1, in bgx_poll_for_link()
1014 spu_link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1); in bgx_poll_for_link()
1015 smu_link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SMUX_RX_CTL); in bgx_poll_for_link()
1056 static int bgx_lmac_enable(struct bgx *bgx, u8 lmacid) in bgx_lmac_enable() argument
1061 lmac = &bgx->lmac[lmacid]; in bgx_lmac_enable()
1077 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND); in bgx_lmac_enable()
1079 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND, cfg); in bgx_lmac_enable()
1080 bgx_reg_write(bgx, lmacid, BGX_GMP_GMI_TXX_MIN_PKT, 60 - 1); in bgx_lmac_enable()
1082 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_APPEND); in bgx_lmac_enable()
1084 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_APPEND, cfg); in bgx_lmac_enable()
1085 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_MIN_PKT, 60 + 4); in bgx_lmac_enable()
1096 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_enable()
1099 bgx_reg_write(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL, 0x03); in bgx_lmac_enable()
1107 bgx_reg_write(bgx, lmacid, in bgx_lmac_enable()
1142 static void bgx_lmac_disable(struct bgx *bgx, u8 lmacid) in bgx_lmac_disable() argument
1147 lmac = &bgx->lmac[lmacid]; in bgx_lmac_disable()
1155 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
1157 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_disable()
1160 bgx_poll_reg(bgx, lmacid, BGX_CMRX_RX_FIFO_LEN, (u64)0x1FFF, true); in bgx_lmac_disable()
1161 bgx_poll_reg(bgx, lmacid, BGX_CMRX_TX_FIFO_LEN, (u64)0x3FFF, true); in bgx_lmac_disable()
1164 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
1166 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_disable()
1170 bgx_reg_modify(bgx, lmacid, in bgx_lmac_disable()
1173 bgx_reg_modify(bgx, lmacid, in bgx_lmac_disable()
1177 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
1179 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_disable()
1181 bgx_flush_dmac_cam_filter(bgx, lmacid); in bgx_lmac_disable()
1231 return (u8)(bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG) & 0xFF); in bgx_get_lane2sds_cfg()
1234 static void bgx_print_qlm_mode(struct bgx *bgx, u8 lmacid) in bgx_print_qlm_mode() argument
1240 if (!bgx->is_dlm && lmacid) in bgx_print_qlm_mode()
1243 lmac = &bgx->lmac[lmacid]; in bgx_print_qlm_mode()
1247 sprintf(str, "BGX%d LMAC%d mode", bgx->bgx_id, lmacid); in bgx_print_qlm_mode()
1288 lmac->lane_to_sds = lmac->lmacid; in lmac_set_lane2sds()
1296 lmac->lane_to_sds = (lmac->lmacid) ? 0xE : 0x4; in lmac_set_lane2sds()
1312 static void lmac_set_training(struct bgx *bgx, struct lmac *lmac, int lmacid) in lmac_set_training() argument
1320 lmac->use_training = bgx_reg_read(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL) & in lmac_set_training()
1360 lmac_set_training(bgx, lmac, lmac->lmacid); in bgx_set_lmac_config()
1371 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()