Lines Matching refs:lmacid

139 	uint8_t lmacid;  in thunder_bgx_attach()  local
175 for (lmacid = 0; lmacid < bgx->lmac_count; lmacid++) { in thunder_bgx_attach()
176 err = bgx_lmac_enable(bgx, lmacid); in thunder_bgx_attach()
179 bgx->bgx_id, lmacid); in thunder_bgx_attach()
202 uint8_t lmacid; in thunder_bgx_detach() local
207 for (lmacid = 0; lmacid < bgx->lmac_count; lmacid++) in thunder_bgx_detach()
208 bgx_lmac_disable(bgx, lmacid); in thunder_bgx_detach()
300 bgx_get_lmac_link_state(int node, int bgx_idx, int lmacid, void *status) in bgx_get_lmac_link_state() argument
310 lmac = &bgx->lmac[lmacid]; in bgx_get_lmac_link_state()
317 *bgx_get_lmac_mac(int node, int bgx_idx, int lmacid) in bgx_get_lmac_mac() argument
322 return (bgx->lmac[lmacid].mac); in bgx_get_lmac_mac()
328 bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const uint8_t *mac) in bgx_set_lmac_mac() argument
335 memcpy(bgx->lmac[lmacid].mac, mac, ETHER_ADDR_LEN); in bgx_set_lmac_mac()
346 cmr_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG); in bgx_sgmii_change_link_state()
348 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
350 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); in bgx_sgmii_change_link_state()
351 misc_ctl = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL); in bgx_sgmii_change_link_state()
368 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
369 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
377 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 64); in bgx_sgmii_change_link_state()
378 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_BURST, 0); in bgx_sgmii_change_link_state()
386 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_TXX_SLOT, 512); in bgx_sgmii_change_link_state()
388 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
391 bgx_reg_write(bgx, lmac->lmacid, in bgx_sgmii_change_link_state()
397 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL, misc_ctl); in bgx_sgmii_change_link_state()
398 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, port_cfg); in bgx_sgmii_change_link_state()
400 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); in bgx_sgmii_change_link_state()
404 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); in bgx_sgmii_change_link_state()
417 err = LMAC_MEDIA_STATUS(lmac->phy_if_dev, lmac->lmacid, in bgx_lmac_handler()
564 bgx_lmac_sgmii_init(struct bgx *bgx, int lmacid) in bgx_lmac_sgmii_init() argument
568 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_THRESH, 0x30); in bgx_lmac_sgmii_init()
570 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_RXX_JABBER, MAX_FRAME_SIZE); in bgx_lmac_sgmii_init()
573 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND); in bgx_lmac_sgmii_init()
575 bgx_reg_write(bgx, lmacid, BGX_GMP_GMI_TXX_SGMII_CTL, 0); in bgx_lmac_sgmii_init()
578 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_sgmii_init()
581 bgx_reg_modify(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, PCS_MRX_CTL_RESET); in bgx_lmac_sgmii_init()
582 if (bgx_poll_reg(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, in bgx_lmac_sgmii_init()
589 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_PCS_MRX_CTL); in bgx_lmac_sgmii_init()
592 bgx_reg_write(bgx, lmacid, BGX_GMP_PCS_MRX_CTL, cfg); in bgx_lmac_sgmii_init()
594 if (bgx_poll_reg(bgx, lmacid, BGX_GMP_PCS_MRX_STATUS, in bgx_lmac_sgmii_init()
604 bgx_lmac_xaui_init(struct bgx *bgx, int lmacid, int lmac_type) in bgx_lmac_xaui_init() argument
609 bgx_reg_modify(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_RESET); in bgx_lmac_xaui_init()
610 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_CONTROL1, in bgx_lmac_xaui_init()
617 cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_xaui_init()
619 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); in bgx_lmac_xaui_init()
621 bgx_reg_modify(bgx, lmacid, BGX_SPUX_CONTROL1, SPU_CTL_LOW_POWER); in bgx_lmac_xaui_init()
624 bgx_reg_modify(bgx, lmacid, in bgx_lmac_xaui_init()
627 bgx_reg_modify(bgx, lmacid, BGX_SPUX_MISC_CONTROL, in bgx_lmac_xaui_init()
632 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_RX_INT); in bgx_lmac_xaui_init()
633 bgx_reg_write(bgx, lmacid, BGX_SMUX_RX_INT, cfg); in bgx_lmac_xaui_init()
634 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_INT); in bgx_lmac_xaui_init()
635 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_INT, cfg); in bgx_lmac_xaui_init()
636 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_lmac_xaui_init()
637 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_lmac_xaui_init()
640 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LP_CUP, 0x00); in bgx_lmac_xaui_init()
641 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LD_CUP, 0x00); in bgx_lmac_xaui_init()
642 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_LD_REP, 0x00); in bgx_lmac_xaui_init()
644 bgx_reg_modify(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL, in bgx_lmac_xaui_init()
649 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_APPEND, SMU_TX_APPEND_FCS_D); in bgx_lmac_xaui_init()
652 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_FEC_CONTROL); in bgx_lmac_xaui_init()
654 bgx_reg_write(bgx, lmacid, BGX_SPUX_FEC_CONTROL, cfg); in bgx_lmac_xaui_init()
657 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_AN_CONTROL); in bgx_lmac_xaui_init()
659 bgx_reg_write(bgx, lmacid, BGX_SPUX_AN_CONTROL, cfg); in bgx_lmac_xaui_init()
661 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_AN_ADV); in bgx_lmac_xaui_init()
669 bgx_reg_write(bgx, lmacid, BGX_SPUX_AN_ADV, cfg); in bgx_lmac_xaui_init()
676 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); in bgx_lmac_xaui_init()
678 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_CONTROL1); in bgx_lmac_xaui_init()
680 bgx_reg_write(bgx, lmacid, BGX_SPUX_CONTROL1, cfg); in bgx_lmac_xaui_init()
682 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_CTL); in bgx_lmac_xaui_init()
685 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_CTL, cfg); in bgx_lmac_xaui_init()
688 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_THRESH, (0x100 - 1)); in bgx_lmac_xaui_init()
690 bgx_reg_modify(bgx, lmacid, BGX_SMUX_RX_JABBER, MAX_FRAME_SIZE); in bgx_lmac_xaui_init()
699 int lmacid = lmac->lmacid; in bgx_xaui_check_link() local
703 bgx_reg_modify(bgx, lmacid, BGX_SPUX_MISC_CONTROL, SPU_MISC_CTL_RX_DIS); in bgx_xaui_check_link()
705 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_xaui_check_link()
708 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_xaui_check_link()
709 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL); in bgx_xaui_check_link()
711 bgx_reg_write(bgx, lmacid, BGX_SPUX_BR_PMD_CRTL, cfg); in bgx_xaui_check_link()
717 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_CONTROL1, in bgx_xaui_check_link()
725 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_BR_STATUS1, in bgx_xaui_check_link()
732 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_BX_STATUS, in bgx_xaui_check_link()
741 bgx_reg_modify(bgx, lmacid, BGX_SPUX_STATUS2, SPU_STATUS2_RCVFLT); in bgx_xaui_check_link()
742 if (bgx_reg_read(bgx, lmacid, BGX_SPUX_STATUS2) & SPU_STATUS2_RCVFLT) { in bgx_xaui_check_link()
745 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_INT); in bgx_xaui_check_link()
748 bgx_reg_write(bgx, lmacid, BGX_SPUX_INT, cfg); in bgx_xaui_check_link()
749 cfg = bgx_reg_read(bgx, lmacid, in bgx_xaui_check_link()
752 bgx_reg_write(bgx, lmacid, in bgx_xaui_check_link()
761 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_RX_CTL, in bgx_xaui_check_link()
768 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_CTL, in bgx_xaui_check_link()
775 if (bgx_poll_reg(bgx, lmacid, BGX_SMUX_CTL, in bgx_xaui_check_link()
781 if ((bgx_reg_read(bgx, lmacid, BGX_SPUX_STATUS2) & in bgx_xaui_check_link()
788 bgx_reg_modify(bgx, lmacid, BGX_SPUX_STATUS1, SPU_STATUS1_RCV_LNK); in bgx_xaui_check_link()
789 if (bgx_poll_reg(bgx, lmacid, BGX_SPUX_STATUS1, in bgx_xaui_check_link()
795 cfg = bgx_reg_read(bgx, lmacid, BGX_SPUX_MISC_CONTROL); in bgx_xaui_check_link()
797 bgx_reg_write(bgx, lmacid, BGX_SPUX_MISC_CONTROL, cfg); in bgx_xaui_check_link()
810 bgx_reg_modify(lmac->bgx, lmac->lmacid, in bgx_poll_for_link()
812 bgx_poll_reg(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1, in bgx_poll_for_link()
815 link = bgx_reg_read(lmac->bgx, lmac->lmacid, BGX_SPUX_STATUS1); in bgx_poll_for_link()
837 bgx_lmac_enable(struct bgx *bgx, uint8_t lmacid) in bgx_lmac_enable() argument
843 lmac = &bgx->lmac[lmacid]; in bgx_lmac_enable()
848 if (bgx_lmac_sgmii_init(bgx, lmacid) != 0) in bgx_lmac_enable()
852 if (bgx_lmac_xaui_init(bgx, lmacid, bgx->lmac_type)) in bgx_lmac_enable()
857 cfg = bgx_reg_read(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND); in bgx_lmac_enable()
859 bgx_reg_modify(bgx, lmacid, BGX_GMP_GMI_TXX_APPEND, cfg); in bgx_lmac_enable()
860 bgx_reg_write(bgx, lmacid, BGX_GMP_GMI_TXX_MIN_PKT, 60 - 1); in bgx_lmac_enable()
862 cfg = bgx_reg_read(bgx, lmacid, BGX_SMUX_TX_APPEND); in bgx_lmac_enable()
864 bgx_reg_modify(bgx, lmacid, BGX_SMUX_TX_APPEND, cfg); in bgx_lmac_enable()
865 bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_MIN_PKT, 60 + 4); in bgx_lmac_enable()
869 bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, in bgx_lmac_enable()
873 bgx_reg_write(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL, 0x03); in bgx_lmac_enable()
876 bgx_add_dmac_addr(dmac_bcast, 0, bgx->bgx_id, lmacid); in bgx_lmac_enable()
885 "LMAC%d missing interface to PHY\n", lmacid); in bgx_lmac_enable()
890 lmacid) != 0) { in bgx_lmac_enable()
892 "LMAC%d could not connect to PHY\n", lmacid); in bgx_lmac_enable()
912 bgx_lmac_disable(struct bgx *bgx, uint8_t lmacid) in bgx_lmac_disable() argument
917 lmac = &bgx->lmac[lmacid]; in bgx_lmac_disable()
923 cmrx_cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_CFG); in bgx_lmac_disable()
925 bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cmrx_cfg); in bgx_lmac_disable()
926 bgx_flush_dmac_addrs(bgx, lmacid); in bgx_lmac_disable()
934 "LMAC%d missing interface to PHY\n", lmacid); in bgx_lmac_disable()
938 lmacid) != 0) { in bgx_lmac_disable()
940 "LMAC%d could not disconnect PHY\n", lmacid); in bgx_lmac_disable()