cgx 49 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx; cgx 74 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static int cgx_fwi_link_change(struct cgx *cgx, int lmac_id, bool en); cgx 84 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static void cgx_write(struct cgx *cgx, u64 lmac, u64 offset, u64 val) cgx 86 drivers/net/ethernet/marvell/octeontx2/af/cgx.c writeq(val, cgx->reg_base + (lmac << 18) + offset); cgx 89 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static u64 cgx_read(struct cgx *cgx, u64 lmac, u64 offset) cgx 91 drivers/net/ethernet/marvell/octeontx2/af/cgx.c return readq(cgx->reg_base + (lmac << 18) + offset); cgx 94 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static inline struct lmac *lmac_pdata(u8 lmac_id, struct cgx *cgx) cgx 96 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx || lmac_id >= MAX_LMAC_PER_CGX) cgx 99 drivers/net/ethernet/marvell/octeontx2/af/cgx.c return cgx->lmac_idmap[lmac_id]; cgx 104 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx_dev; cgx 120 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 122 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx) cgx 125 drivers/net/ethernet/marvell/octeontx2/af/cgx.c return cgx->lmac_count; cgx 131 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx_dev; cgx 171 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx_dev = cgx_get_pdata(cgx_id); cgx 192 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx_dev = cgx_get_pdata(cgx_id); cgx 202 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 204 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx || lmac_id >= cgx->lmac_count) cgx 207 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac_id, CGXX_CMRX_RX_ID_MAP, (pkind & 0x3F)); cgx 212 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static inline u8 cgx_get_lmac_type(struct cgx *cgx, int lmac_id) cgx 216 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_CFG); cgx 223 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 227 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx || lmac_id >= cgx->lmac_count) cgx 230 drivers/net/ethernet/marvell/octeontx2/af/cgx.c lmac_type = cgx_get_lmac_type(cgx, lmac_id); cgx 232 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, lmac_id, CGXX_GMP_PCS_MRX_CTL); cgx 237 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac_id, CGXX_GMP_PCS_MRX_CTL, cfg); cgx 239 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, lmac_id, CGXX_SPUX_CONTROL1); cgx 244 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac_id, CGXX_SPUX_CONTROL1, cfg); cgx 252 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgx_get_pdata(cgx_id); cgx 255 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx) cgx 260 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); cgx 263 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); cgx 265 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, 0, cgx 268 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, 0, cgx 272 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0); cgx 274 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac_id, CGXX_CMRX_RX_DMAC_CTL0, cfg); cgx 275 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, 0, cgx 278 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, 0, cgx 286 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 288 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx || lmac_id >= cgx->lmac_count) cgx 290 drivers/net/ethernet/marvell/octeontx2/af/cgx.c *rx_stat = cgx_read(cgx, lmac_id, CGXX_CMRX_RX_STAT0 + (idx * 8)); cgx 297 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 299 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx || lmac_id >= cgx->lmac_count) cgx 301 drivers/net/ethernet/marvell/octeontx2/af/cgx.c *tx_stat = cgx_read(cgx, lmac_id, CGXX_CMRX_TX_STAT0 + (idx * 8)); cgx 308 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 311 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx || lmac_id >= cgx->lmac_count) cgx 314 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cfg = cgx_read(cgx, lmac_id, CGXX_CMRX_CFG); cgx 319 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac_id, CGXX_CMRX_CFG, cfg); cgx 327 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = lmac->cgx; cgx 338 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cmd = cgx_read(cgx, lmac->lmac_id, CGX_COMMAND_REG); cgx 351 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac->lmac_id, CGX_COMMAND_REG, req); cgx 356 drivers/net/ethernet/marvell/octeontx2/af/cgx.c dev = &cgx->pdev->dev; cgx 358 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_id, lmac->lmac_id); cgx 374 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx, int lmac_id) cgx 379 drivers/net/ethernet/marvell/octeontx2/af/cgx.c lmac = lmac_pdata(lmac_id, cgx); cgx 425 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx, u8 lmac_id) cgx 432 drivers/net/ethernet/marvell/octeontx2/af/cgx.c linfo->lmac_type_id = cgx_get_lmac_type(cgx, lmac_id); cgx 442 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = lmac->cgx; cgx 447 drivers/net/ethernet/marvell/octeontx2/af/cgx.c dev = &cgx->pdev->dev; cgx 449 drivers/net/ethernet/marvell/octeontx2/af/cgx.c link_status_user_format(lstat, &event.link_uinfo, cgx, lmac->lmac_id); cgx 452 drivers/net/ethernet/marvell/octeontx2/af/cgx.c event.cgx_id = cgx->cgx_id; cgx 464 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_id, lmac->lmac_id); cgx 467 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_id, lmac->lmac_id, err_type); cgx 470 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_id, lmac->lmac_id, cgx 502 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx) cgx 509 drivers/net/ethernet/marvell/octeontx2/af/cgx.c err = cgx_fwi_cmd_generic(req, &resp, cgx, 0); cgx 517 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx) cgx 524 drivers/net/ethernet/marvell/octeontx2/af/cgx.c err = cgx_fwi_cmd_generic(req, &resp, cgx, 0); cgx 533 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx_dev; cgx 539 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_dev = list_first_entry(&cgx_list, struct cgx, cgx_list); cgx 558 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx; cgx 561 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx = lmac->cgx; cgx 563 drivers/net/ethernet/marvell/octeontx2/af/cgx.c event = cgx_read(cgx, lmac->lmac_id, CGX_EVENT_REG); cgx 597 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(lmac->cgx, lmac->lmac_id, CGX_EVENT_REG, 0); cgx 598 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(lmac->cgx, lmac->lmac_id, CGXX_CMRX_INT, FW_CGX_INT); cgx 608 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 611 drivers/net/ethernet/marvell/octeontx2/af/cgx.c lmac = lmac_pdata(lmac_id, cgx); cgx 625 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 627 drivers/net/ethernet/marvell/octeontx2/af/cgx.c lmac = lmac_pdata(lmac_id, cgx); cgx 640 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static int cgx_fwi_link_change(struct cgx *cgx, int lmac_id, bool enable) cgx 650 drivers/net/ethernet/marvell/octeontx2/af/cgx.c return cgx_fwi_cmd_generic(req, &resp, cgx, lmac_id); cgx 653 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static inline int cgx_fwi_read_version(u64 *resp, struct cgx *cgx) cgx 658 drivers/net/ethernet/marvell/octeontx2/af/cgx.c return cgx_fwi_cmd_generic(req, resp, cgx, 0); cgx 661 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static int cgx_lmac_verify_fwi_version(struct cgx *cgx) cgx 663 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct device *dev = &cgx->pdev->dev; cgx 668 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx->lmac_count) cgx 671 drivers/net/ethernet/marvell/octeontx2/af/cgx.c err = cgx_fwi_read_version(&resp, cgx); cgx 688 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = container_of(work, struct cgx, cgx_cmd_work); cgx 689 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct device *dev = &cgx->pdev->dev; cgx 693 drivers/net/ethernet/marvell/octeontx2/af/cgx.c for (i = 0; i < cgx->lmac_count; i++) { cgx 694 drivers/net/ethernet/marvell/octeontx2/af/cgx.c err = cgx_fwi_link_change(cgx, i, true); cgx 697 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_id, i); cgx 703 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = cgxd; cgx 705 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx) cgx 708 drivers/net/ethernet/marvell/octeontx2/af/cgx.c queue_work(cgx->cgx_cmd_workq, &cgx->cgx_cmd_work); cgx 714 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static int cgx_lmac_init(struct cgx *cgx) cgx 719 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->lmac_count = cgx_read(cgx, 0, CGXX_CMRX_RX_LMACS) & 0x7; cgx 720 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (cgx->lmac_count > MAX_LMAC_PER_CGX) cgx 721 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->lmac_count = MAX_LMAC_PER_CGX; cgx 723 drivers/net/ethernet/marvell/octeontx2/af/cgx.c for (i = 0; i < cgx->lmac_count; i++) { cgx 730 drivers/net/ethernet/marvell/octeontx2/af/cgx.c sprintf(lmac->name, "cgx_fwi_%d_%d", cgx->cgx_id, i); cgx 732 drivers/net/ethernet/marvell/octeontx2/af/cgx.c lmac->cgx = cgx; cgx 736 drivers/net/ethernet/marvell/octeontx2/af/cgx.c err = request_irq(pci_irq_vector(cgx->pdev, cgx 743 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_write(cgx, lmac->lmac_id, CGXX_CMRX_INT_ENA_W1S, cgx 747 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->lmac_idmap[i] = lmac; cgx 750 drivers/net/ethernet/marvell/octeontx2/af/cgx.c return cgx_lmac_verify_fwi_version(cgx); cgx 753 drivers/net/ethernet/marvell/octeontx2/af/cgx.c static int cgx_lmac_exit(struct cgx *cgx) cgx 758 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (cgx->cgx_cmd_workq) { cgx 759 drivers/net/ethernet/marvell/octeontx2/af/cgx.c flush_workqueue(cgx->cgx_cmd_workq); cgx 760 drivers/net/ethernet/marvell/octeontx2/af/cgx.c destroy_workqueue(cgx->cgx_cmd_workq); cgx 761 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_cmd_workq = NULL; cgx 765 drivers/net/ethernet/marvell/octeontx2/af/cgx.c for (i = 0; i < cgx->lmac_count; i++) { cgx 766 drivers/net/ethernet/marvell/octeontx2/af/cgx.c lmac = cgx->lmac_idmap[i]; cgx 769 drivers/net/ethernet/marvell/octeontx2/af/cgx.c free_irq(pci_irq_vector(cgx->pdev, CGX_LMAC_FWI + i * 9), lmac); cgx 780 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx; cgx 783 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx = devm_kzalloc(dev, sizeof(*cgx), GFP_KERNEL); cgx 784 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx) cgx 786 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->pdev = pdev; cgx 788 drivers/net/ethernet/marvell/octeontx2/af/cgx.c pci_set_drvdata(pdev, cgx); cgx 804 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->reg_base = pcim_iomap(pdev, PCI_CFG_REG_BAR_NUM, 0); cgx 805 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx->reg_base) { cgx 819 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_id = (pci_resource_start(pdev, PCI_CFG_REG_BAR_NUM) >> 24) cgx 823 drivers/net/ethernet/marvell/octeontx2/af/cgx.c INIT_WORK(&cgx->cgx_cmd_work, cgx_lmac_linkup_work); cgx 824 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx->cgx_cmd_workq = alloc_workqueue("cgx_cmd_workq", 0, 0); cgx 825 drivers/net/ethernet/marvell/octeontx2/af/cgx.c if (!cgx->cgx_cmd_workq) { cgx 831 drivers/net/ethernet/marvell/octeontx2/af/cgx.c list_add(&cgx->cgx_list, &cgx_list); cgx 835 drivers/net/ethernet/marvell/octeontx2/af/cgx.c err = cgx_lmac_init(cgx); cgx 842 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_lmac_exit(cgx); cgx 843 drivers/net/ethernet/marvell/octeontx2/af/cgx.c list_del(&cgx->cgx_list); cgx 856 drivers/net/ethernet/marvell/octeontx2/af/cgx.c struct cgx *cgx = pci_get_drvdata(pdev); cgx 858 drivers/net/ethernet/marvell/octeontx2/af/cgx.c cgx_lmac_exit(cgx); cgx 859 drivers/net/ethernet/marvell/octeontx2/af/cgx.c list_del(&cgx->cgx_list); cgx 200 drivers/net/ethernet/marvell/octeontx2/af/rvu.h u8 cgx; cgx 65 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c int cgx, lmac_cnt, lmac; cgx 95 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c for (cgx = 0; cgx < cgx_cnt_max; cgx++) { cgx 96 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c if (!rvu_cgx_pdata(cgx, rvu)) cgx 98 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c lmac_cnt = cgx_get_lmac_cnt(rvu_cgx_pdata(cgx, rvu)); cgx 100 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c rvu->pf2cgxlmac_map[pf] = cgxlmac_id_to_bmap(cgx, lmac); cgx 101 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c rvu->cgxlmac2pf_map[CGX_OFFSET(cgx) + lmac] = 1 << pf; cgx 224 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c int cgx, lmac, err; cgx 239 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c for (cgx = 0; cgx <= rvu->cgx_cnt_max; cgx++) { cgx 240 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c cgxd = rvu_cgx_pdata(cgx, rvu); cgx 248 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c cgx, lmac); cgx 266 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c int cgx, err; cgx 284 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c for (cgx = 0; cgx < rvu->cgx_cnt_max; cgx++) cgx 285 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c rvu->cgx_idmap[cgx] = cgx_get_pdata(cgx); cgx 303 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c for (cgx = 0; cgx <= rvu->cgx_cnt_max; cgx++) { cgx 304 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c cgxd = rvu_cgx_pdata(cgx, rvu); cgx 311 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c cgx); cgx 319 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c int cgx, lmac; cgx 322 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c for (cgx = 0; cgx <= rvu->cgx_cnt_max; cgx++) { cgx 323 drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c cgxd = rvu_cgx_pdata(cgx, rvu); cgx 2377 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c u8 cgx = 0, lmac = 0; cgx 2423 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx, &lmac); cgx 2424 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c link = (cgx * hw->lmac_per_cgx) + lmac; cgx 2447 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c CGX_FIFO_LEN / cgx_get_lmac_cnt(rvu_cgx_pdata(cgx, rvu)); cgx 2561 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c int cgx, lmac_cnt, slink, link; cgx 2584 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c for (cgx = 0; cgx < hw->cgx; cgx++) { cgx 2585 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c lmac_cnt = cgx_get_lmac_cnt(rvu_cgx_pdata(cgx, rvu)); cgx 2589 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c slink = cgx * hw->lmac_per_cgx; cgx 2722 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c hw->cgx = (cfg >> 12) & 0xF; cgx 2724 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c hw->cgx_links = hw->cgx * hw->lmac_per_cgx;