Lines Matching refs:lmac_id

61 static int cgx_fwi_link_change(struct cgx *cgx, int lmac_id, bool en);
79 bool is_lmac_valid(struct cgx *cgx, int lmac_id) in is_lmac_valid() argument
81 if (!cgx || lmac_id < 0 || lmac_id >= MAX_LMAC_PER_CGX) in is_lmac_valid()
83 return test_bit(lmac_id, &cgx->lmac_bmap); in is_lmac_valid()
89 static int get_sequence_id_of_lmac(struct cgx *cgx, int lmac_id) in get_sequence_id_of_lmac() argument
94 if (tmp == lmac_id) in get_sequence_id_of_lmac()
122 struct lmac *lmac_pdata(u8 lmac_id, struct cgx *cgx) in lmac_pdata() argument
124 if (!cgx || lmac_id >= MAX_LMAC_PER_CGX) in lmac_pdata()
127 return cgx->lmac_idmap[lmac_id]; in lmac_pdata()
166 void cgx_lmac_write(int cgx_id, int lmac_id, u64 offset, u64 val) in cgx_lmac_write() argument
170 cgx_write(cgx_dev, lmac_id, offset, val); in cgx_lmac_write()
173 u64 cgx_lmac_read(int cgx_id, int lmac_id, u64 offset) in cgx_lmac_read() argument
177 return cgx_read(cgx_dev, lmac_id, offset); in cgx_lmac_read()
190 u8 cgx_lmac_get_p2x(int cgx_id, int lmac_id) in cgx_lmac_get_p2x() argument
195 cfg = cgx_read(cgx_dev, lmac_id, CGXX_CMRX_CFG); in cgx_lmac_get_p2x()
205 int cgx_get_link_info(void *cgxd, int lmac_id, in cgx_get_link_info() argument
208 struct lmac *lmac = lmac_pdata(lmac_id, cgxd); in cgx_get_link_info()
235 int cgx_lmac_addr_set(u8 cgx_id, u8 lmac_id, u8 *mac_addr) in cgx_lmac_addr_set() argument
238 struct lmac *lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_set()
251 id = get_sequence_id_of_lmac(cgx_dev, lmac_id); in cgx_lmac_addr_set()
256 cfg | CGX_DMAC_CAM_ADDR_ENABLE | ((u64)lmac_id << 49)); in cgx_lmac_addr_set()
258 cfg = cgx_read(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_lmac_addr_set()
261 cgx_write(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); in cgx_lmac_addr_set()
266 u64 cgx_read_dmac_ctrl(void *cgxd, int lmac_id) in cgx_read_dmac_ctrl() argument
271 if (!cgxd || !is_lmac_valid(cgxd, lmac_id)) in cgx_read_dmac_ctrl()
278 return cgx_read(cgxd, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_read_dmac_ctrl()
294 int cgx_lmac_addr_add(u8 cgx_id, u8 lmac_id, u8 *mac_addr) in cgx_lmac_addr_add() argument
297 struct lmac *lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_add()
312 id = get_sequence_id_of_lmac(cgx_dev, lmac_id); in cgx_lmac_addr_add()
318 cfg |= ((u64)lmac_id << 49); in cgx_lmac_addr_add()
321 cfg = cgx_read(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_lmac_addr_add()
332 cgx_write(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); in cgx_lmac_addr_add()
337 int cgx_lmac_addr_reset(u8 cgx_id, u8 lmac_id) in cgx_lmac_addr_reset() argument
340 struct lmac *lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_reset()
354 id = get_sequence_id_of_lmac(cgx_dev, lmac_id); in cgx_lmac_addr_reset()
360 cfg = cgx_read(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_lmac_addr_reset()
363 cgx_write(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); in cgx_lmac_addr_reset()
372 int cgx_lmac_addr_update(u8 cgx_id, u8 lmac_id, u8 *mac_addr, u8 index) in cgx_lmac_addr_update() argument
380 lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_update()
393 id = get_sequence_id_of_lmac(cgx_dev, lmac_id); in cgx_lmac_addr_update()
405 int cgx_lmac_addr_del(u8 cgx_id, u8 lmac_id, u8 index) in cgx_lmac_addr_del() argument
408 struct lmac *lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_del()
428 id = get_sequence_id_of_lmac(cgx_dev, lmac_id); in cgx_lmac_addr_del()
440 cfg = cgx_read(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_lmac_addr_del()
443 cgx_write(cgx_dev, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); in cgx_lmac_addr_del()
451 int cgx_lmac_addr_max_entries_get(u8 cgx_id, u8 lmac_id) in cgx_lmac_addr_max_entries_get() argument
454 struct lmac *lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_max_entries_get()
462 u64 cgx_lmac_addr_get(u8 cgx_id, u8 lmac_id) in cgx_lmac_addr_get() argument
465 struct lmac *lmac = lmac_pdata(lmac_id, cgx_dev); in cgx_lmac_addr_get()
473 id = get_sequence_id_of_lmac(cgx_dev, lmac_id); in cgx_lmac_addr_get()
481 int cgx_set_pkind(void *cgxd, u8 lmac_id, int pkind) in cgx_set_pkind() argument
485 if (!is_lmac_valid(cgx, lmac_id)) in cgx_set_pkind()
488 cgx_write(cgx, lmac_id, CGXX_CMRX_RX_ID_MAP, (pkind & 0x3F)); in cgx_set_pkind()
492 static u8 cgx_get_lmac_type(void *cgxd, int lmac_id) in cgx_get_lmac_type() argument
497 cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_CFG); in cgx_get_lmac_type()
502 int cgx_lmac_internal_loopback(void *cgxd, int lmac_id, bool enable) in cgx_lmac_internal_loopback() argument
508 if (!is_lmac_valid(cgx, lmac_id)) in cgx_lmac_internal_loopback()
511 lmac_type = cgx->mac_ops->get_lmac_type(cgx, lmac_id); in cgx_lmac_internal_loopback()
513 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_PCS_MRX_CTL); in cgx_lmac_internal_loopback()
518 cgx_write(cgx, lmac_id, CGXX_GMP_PCS_MRX_CTL, cfg); in cgx_lmac_internal_loopback()
520 cfg = cgx_read(cgx, lmac_id, CGXX_SPUX_CONTROL1); in cgx_lmac_internal_loopback()
525 cgx_write(cgx, lmac_id, CGXX_SPUX_CONTROL1, cfg); in cgx_lmac_internal_loopback()
530 void cgx_lmac_promisc_config(int cgx_id, int lmac_id, bool enable) in cgx_lmac_promisc_config() argument
533 struct lmac *lmac = lmac_pdata(lmac_id, cgx); in cgx_lmac_promisc_config()
543 id = get_sequence_id_of_lmac(cgx, lmac_id); in cgx_lmac_promisc_config()
548 cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_lmac_promisc_config()
551 cgx_write(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); in cgx_lmac_promisc_config()
563 cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); in cgx_lmac_promisc_config()
565 cgx_write(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); in cgx_lmac_promisc_config()
582 void cgx_lmac_enadis_rx_pause_fwding(void *cgxd, int lmac_id, bool enable) in cgx_lmac_enadis_rx_pause_fwding() argument
591 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); in cgx_lmac_enadis_rx_pause_fwding()
593 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); in cgx_lmac_enadis_rx_pause_fwding()
595 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_enadis_rx_pause_fwding()
597 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_enadis_rx_pause_fwding()
599 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); in cgx_lmac_enadis_rx_pause_fwding()
601 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); in cgx_lmac_enadis_rx_pause_fwding()
603 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_enadis_rx_pause_fwding()
605 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_enadis_rx_pause_fwding()
609 int cgx_get_rx_stats(void *cgxd, int lmac_id, int idx, u64 *rx_stat) in cgx_get_rx_stats() argument
613 if (!is_lmac_valid(cgx, lmac_id)) in cgx_get_rx_stats()
615 *rx_stat = cgx_read(cgx, lmac_id, CGXX_CMRX_RX_STAT0 + (idx * 8)); in cgx_get_rx_stats()
619 int cgx_get_tx_stats(void *cgxd, int lmac_id, int idx, u64 *tx_stat) in cgx_get_tx_stats() argument
623 if (!is_lmac_valid(cgx, lmac_id)) in cgx_get_tx_stats()
625 *tx_stat = cgx_read(cgx, lmac_id, CGXX_CMRX_TX_STAT0 + (idx * 8)); in cgx_get_tx_stats()
662 int cgx_get_fec_stats(void *cgxd, int lmac_id, struct cgx_fec_stats_rsp *rsp) in cgx_get_fec_stats() argument
668 if (!cgx || lmac_id >= cgx->lmac_count) in cgx_get_fec_stats()
671 cgx_set_fec_stats_count(&cgx->lmac_idmap[lmac_id]->link_info); in cgx_get_fec_stats()
672 if (cgx->lmac_idmap[lmac_id]->link_info.fec == OTX2_FEC_BASER) { in cgx_get_fec_stats()
681 cgx_read(cgx, lmac_id, corr_reg + (stats * 8)); in cgx_get_fec_stats()
683 cgx_read(cgx, lmac_id, uncorr_reg + (stats * 8)); in cgx_get_fec_stats()
688 int cgx_lmac_rx_tx_enable(void *cgxd, int lmac_id, bool enable) in cgx_lmac_rx_tx_enable() argument
693 if (!is_lmac_valid(cgx, lmac_id)) in cgx_lmac_rx_tx_enable()
696 cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_CFG); in cgx_lmac_rx_tx_enable()
701 cgx_write(cgx, lmac_id, CGXX_CMRX_CFG, cfg); in cgx_lmac_rx_tx_enable()
705 int cgx_lmac_tx_enable(void *cgxd, int lmac_id, bool enable) in cgx_lmac_tx_enable() argument
710 if (!is_lmac_valid(cgx, lmac_id)) in cgx_lmac_tx_enable()
713 cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_CFG); in cgx_lmac_tx_enable()
721 cgx_write(cgx, lmac_id, CGXX_CMRX_CFG, cfg); in cgx_lmac_tx_enable()
725 static int cgx_lmac_get_pause_frm_status(void *cgxd, int lmac_id, in cgx_lmac_get_pause_frm_status() argument
734 if (!is_lmac_valid(cgx, lmac_id)) in cgx_lmac_get_pause_frm_status()
737 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_get_pause_frm_status()
740 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_TX_CTL); in cgx_lmac_get_pause_frm_status()
745 static int cgx_lmac_enadis_pause_frm(void *cgxd, int lmac_id, in cgx_lmac_enadis_pause_frm() argument
754 if (!is_lmac_valid(cgx, lmac_id)) in cgx_lmac_enadis_pause_frm()
757 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_enadis_pause_frm()
760 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_enadis_pause_frm()
762 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_TX_CTL); in cgx_lmac_enadis_pause_frm()
765 cgx_write(cgx, lmac_id, CGXX_SMUX_TX_CTL, cfg); in cgx_lmac_enadis_pause_frm()
769 cfg &= ~CGX_CMR_RX_OVR_BP_EN(lmac_id); in cgx_lmac_enadis_pause_frm()
771 cfg |= CGX_CMR_RX_OVR_BP_EN(lmac_id); in cgx_lmac_enadis_pause_frm()
772 cfg &= ~CGX_CMR_RX_OVR_BP_BP(lmac_id); in cgx_lmac_enadis_pause_frm()
778 static void cgx_lmac_pause_frm_config(void *cgxd, int lmac_id, bool enable) in cgx_lmac_pause_frm_config() argument
783 if (!is_lmac_valid(cgx, lmac_id)) in cgx_lmac_pause_frm_config()
787 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_pause_frm_config()
789 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_pause_frm_config()
791 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); in cgx_lmac_pause_frm_config()
793 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); in cgx_lmac_pause_frm_config()
796 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_TX_CTL); in cgx_lmac_pause_frm_config()
798 cgx_write(cgx, lmac_id, CGXX_SMUX_TX_CTL, cfg); in cgx_lmac_pause_frm_config()
801 cgx_write(cgx, lmac_id, CGXX_SMUX_TX_PAUSE_PKT_TIME, in cgx_lmac_pause_frm_config()
803 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_TX_PAUSE_PKT_INTERVAL); in cgx_lmac_pause_frm_config()
805 cgx_write(cgx, lmac_id, CGXX_SMUX_TX_PAUSE_PKT_INTERVAL, in cgx_lmac_pause_frm_config()
808 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_TX_PAUSE_PKT_TIME, in cgx_lmac_pause_frm_config()
811 cfg = cgx_read(cgx, lmac_id, in cgx_lmac_pause_frm_config()
814 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_TX_PAUSE_PKT_INTERVAL, in cgx_lmac_pause_frm_config()
818 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_pause_frm_config()
820 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_pause_frm_config()
822 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); in cgx_lmac_pause_frm_config()
824 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); in cgx_lmac_pause_frm_config()
827 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_TX_CTL); in cgx_lmac_pause_frm_config()
829 cgx_write(cgx, lmac_id, CGXX_SMUX_TX_CTL, cfg); in cgx_lmac_pause_frm_config()
833 void cgx_lmac_ptp_config(void *cgxd, int lmac_id, bool enable) in cgx_lmac_ptp_config() argument
843 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); in cgx_lmac_ptp_config()
845 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); in cgx_lmac_ptp_config()
847 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_ptp_config()
849 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_ptp_config()
852 cfg = cgx_read(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL); in cgx_lmac_ptp_config()
854 cgx_write(cgx, lmac_id, CGXX_GMP_GMI_RXX_FRM_CTL, cfg); in cgx_lmac_ptp_config()
856 cfg = cgx_read(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL); in cgx_lmac_ptp_config()
858 cgx_write(cgx, lmac_id, CGXX_SMUX_RX_FRM_CTL, cfg); in cgx_lmac_ptp_config()
876 cmd = cgx_read(cgx, lmac->lmac_id, CGX_COMMAND_REG); in cgx_fwi_cmd_send()
889 cgx_write(cgx, lmac->lmac_id, CGX_COMMAND_REG, req); in cgx_fwi_cmd_send()
896 cgx->cgx_id, lmac->lmac_id); in cgx_fwi_cmd_send()
911 int cgx_fwi_cmd_generic(u64 req, u64 *resp, struct cgx *cgx, int lmac_id) in cgx_fwi_cmd_generic() argument
916 lmac = lmac_pdata(lmac_id, cgx); in cgx_fwi_cmd_generic()
1072 struct cgx *cgx, u8 lmac_id) in link_status_user_format() argument
1081 linfo->lmac_type_id = cgx_get_lmac_type(cgx, lmac_id); in link_status_user_format()
1098 link_status_user_format(lstat, &event.link_uinfo, cgx, lmac->lmac_id); in cgx_link_change_handler()
1102 event.lmac_id = lmac->lmac_id; in cgx_link_change_handler()
1116 cgx->cgx_id, lmac->lmac_id); in cgx_link_change_handler()
1119 cgx->cgx_id, lmac->lmac_id, err_type); in cgx_link_change_handler()
1122 cgx->cgx_id, lmac->lmac_id, in cgx_link_change_handler()
1166 event = cgx_read(cgx, lmac->lmac_id, CGX_EVENT_REG); in cgx_fwi_event_handler()
1200 cgx_write(lmac->cgx, lmac->lmac_id, CGX_EVENT_REG, 0); in cgx_fwi_event_handler()
1201 cgx_write(lmac->cgx, lmac->lmac_id, offset, clear_bit); in cgx_fwi_event_handler()
1209 int cgx_lmac_evh_register(struct cgx_event_cb *cb, void *cgxd, int lmac_id) in cgx_lmac_evh_register() argument
1214 lmac = lmac_pdata(lmac_id, cgx); in cgx_lmac_evh_register()
1223 int cgx_lmac_evh_unregister(void *cgxd, int lmac_id) in cgx_lmac_evh_unregister() argument
1229 lmac = lmac_pdata(lmac_id, cgx); in cgx_lmac_evh_unregister()
1262 int cgx_id, int lmac_id) in cgx_set_link_mode() argument
1283 return cgx_fwi_cmd_generic(req, &resp, cgx, lmac_id); in cgx_set_link_mode()
1285 int cgx_set_fec(u64 fec, int cgx_id, int lmac_id) in cgx_set_fec() argument
1297 err = cgx_fwi_cmd_generic(req, &resp, cgx, lmac_id); in cgx_set_fec()
1301 cgx->lmac_idmap[lmac_id]->link_info.fec = in cgx_set_fec()
1303 return cgx->lmac_idmap[lmac_id]->link_info.fec; in cgx_set_fec()
1306 int cgx_get_phy_fec_stats(void *cgxd, int lmac_id) in cgx_get_phy_fec_stats() argument
1315 return cgx_fwi_cmd_generic(req, &resp, cgx, lmac_id); in cgx_get_phy_fec_stats()
1318 static int cgx_fwi_link_change(struct cgx *cgx, int lmac_id, bool enable) in cgx_fwi_link_change() argument
1328 return cgx_fwi_cmd_generic(req, &resp, cgx, lmac_id); in cgx_fwi_link_change()
1422 cgx_write(cgx, lmac->lmac_id, offset, ena_bit); in cgx_configure_interrupt()
1437 return cgx->lmac_idmap[lmac_index]->lmac_id; in cgx_get_lmacid()
1476 lmac->lmac_id = __ffs64(lmac_list); in cgx_lmac_init()
1477 lmac_list &= ~BIT_ULL(lmac->lmac_id); in cgx_lmac_init()
1479 lmac->lmac_id = i; in cgx_lmac_init()
1495 err = cgx_configure_interrupt(cgx, lmac, lmac->lmac_id, false); in cgx_lmac_init()
1500 cgx->lmac_idmap[lmac->lmac_id] = lmac; in cgx_lmac_init()
1501 set_bit(lmac->lmac_id, &cgx->lmac_bmap); in cgx_lmac_init()
1502 cgx->mac_ops->mac_pause_frm_config(cgx, lmac->lmac_id, true); in cgx_lmac_init()
1531 cgx->mac_ops->mac_pause_frm_config(cgx, lmac->lmac_id, false); in cgx_lmac_exit()
1532 cgx_configure_interrupt(cgx, lmac, lmac->lmac_id, true); in cgx_lmac_exit()