Lines Matching refs:cpt

17 static void otx_cpt_disable_mbox_interrupts(struct otx_cpt_device *cpt)  in otx_cpt_disable_mbox_interrupts()  argument
20 writeq(~0ull, cpt->reg_base + OTX_CPT_PF_MBOX_ENA_W1CX(0)); in otx_cpt_disable_mbox_interrupts()
23 static void otx_cpt_enable_mbox_interrupts(struct otx_cpt_device *cpt) in otx_cpt_enable_mbox_interrupts() argument
26 writeq(~0ull, cpt->reg_base + OTX_CPT_PF_MBOX_ENA_W1SX(0)); in otx_cpt_enable_mbox_interrupts()
30 void *cpt) in otx_cpt_mbx0_intr_handler() argument
32 otx_cpt_mbox_intr_handler(cpt, 0); in otx_cpt_mbx0_intr_handler()
37 static void otx_cpt_reset(struct otx_cpt_device *cpt) in otx_cpt_reset() argument
39 writeq(1, cpt->reg_base + OTX_CPT_PF_RESET); in otx_cpt_reset()
42 static void otx_cpt_find_max_enabled_cores(struct otx_cpt_device *cpt) in otx_cpt_find_max_enabled_cores() argument
46 pf_cnsts.u = readq(cpt->reg_base + OTX_CPT_PF_CONSTANTS); in otx_cpt_find_max_enabled_cores()
47 cpt->eng_grps.avail.max_se_cnt = pf_cnsts.s.se; in otx_cpt_find_max_enabled_cores()
48 cpt->eng_grps.avail.max_ae_cnt = pf_cnsts.s.ae; in otx_cpt_find_max_enabled_cores()
51 static u32 otx_cpt_check_bist_status(struct otx_cpt_device *cpt) in otx_cpt_check_bist_status() argument
55 bist_sts.u = readq(cpt->reg_base + OTX_CPT_PF_BIST_STATUS); in otx_cpt_check_bist_status()
59 static u64 otx_cpt_check_exe_bist_status(struct otx_cpt_device *cpt) in otx_cpt_check_exe_bist_status() argument
63 bist_sts.u = readq(cpt->reg_base + OTX_CPT_PF_EXE_BIST_STATUS); in otx_cpt_check_exe_bist_status()
67 static int otx_cpt_device_init(struct otx_cpt_device *cpt) in otx_cpt_device_init() argument
69 struct device *dev = &cpt->pdev->dev; in otx_cpt_device_init()
74 otx_cpt_reset(cpt); in otx_cpt_device_init()
77 pci_read_config_word(cpt->pdev, PCI_SUBSYSTEM_ID, &sdevid); in otx_cpt_device_init()
80 bist = (u64)otx_cpt_check_bist_status(cpt); in otx_cpt_device_init()
86 bist = otx_cpt_check_exe_bist_status(cpt); in otx_cpt_device_init()
93 otx_cpt_find_max_enabled_cores(cpt); in otx_cpt_device_init()
96 (cpt->eng_grps.avail.max_se_cnt == 0)) { in otx_cpt_device_init()
97 cpt->pf_type = OTX_CPT_AE; in otx_cpt_device_init()
99 (cpt->eng_grps.avail.max_ae_cnt == 0)) { in otx_cpt_device_init()
100 cpt->pf_type = OTX_CPT_SE; in otx_cpt_device_init()
104 cpt->max_vfs = pci_sriov_get_totalvfs(cpt->pdev); in otx_cpt_device_init()
107 otx_cpt_disable_all_cores(cpt); in otx_cpt_device_init()
112 static int otx_cpt_register_interrupts(struct otx_cpt_device *cpt) in otx_cpt_register_interrupts() argument
114 struct device *dev = &cpt->pdev->dev; in otx_cpt_register_interrupts()
120 ret = pci_alloc_irq_vectors(cpt->pdev, num_vec, num_vec, PCI_IRQ_MSIX); in otx_cpt_register_interrupts()
122 dev_err(&cpt->pdev->dev, in otx_cpt_register_interrupts()
129 ret = request_irq(pci_irq_vector(cpt->pdev, in otx_cpt_register_interrupts()
131 otx_cpt_mbx0_intr_handler, 0, "CPT Mbox0", cpt); in otx_cpt_register_interrupts()
134 pci_free_irq_vectors(cpt->pdev); in otx_cpt_register_interrupts()
138 otx_cpt_enable_mbox_interrupts(cpt); in otx_cpt_register_interrupts()
142 static void otx_cpt_unregister_interrupts(struct otx_cpt_device *cpt) in otx_cpt_unregister_interrupts() argument
146 otx_cpt_disable_mbox_interrupts(cpt); in otx_cpt_unregister_interrupts()
147 free_irq(pci_irq_vector(cpt->pdev, in otx_cpt_unregister_interrupts()
149 cpt); in otx_cpt_unregister_interrupts()
150 pci_free_irq_vectors(cpt->pdev); in otx_cpt_unregister_interrupts()
156 struct otx_cpt_device *cpt = pci_get_drvdata(pdev); in otx_cpt_sriov_configure() local
159 if (numvfs > cpt->max_vfs) in otx_cpt_sriov_configure()
160 numvfs = cpt->max_vfs; in otx_cpt_sriov_configure()
163 ret = otx_cpt_try_create_default_eng_grps(cpt->pdev, in otx_cpt_sriov_configure()
164 &cpt->eng_grps, in otx_cpt_sriov_configure()
165 cpt->pf_type); in otx_cpt_sriov_configure()
169 cpt->vfs_enabled = numvfs; in otx_cpt_sriov_configure()
172 cpt->vfs_enabled = 0; in otx_cpt_sriov_configure()
175 otx_cpt_set_eng_grps_is_rdonly(&cpt->eng_grps, true); in otx_cpt_sriov_configure()
180 otx_cpt_set_eng_grps_is_rdonly(&cpt->eng_grps, false); in otx_cpt_sriov_configure()
182 cpt->vfs_enabled = 0; in otx_cpt_sriov_configure()
184 dev_notice(&cpt->pdev->dev, "VFs enabled: %d\n", ret); in otx_cpt_sriov_configure()
193 struct otx_cpt_device *cpt; in otx_cpt_probe() local
196 cpt = devm_kzalloc(dev, sizeof(*cpt), GFP_KERNEL); in otx_cpt_probe()
197 if (!cpt) in otx_cpt_probe()
200 pci_set_drvdata(pdev, cpt); in otx_cpt_probe()
201 cpt->pdev = pdev; in otx_cpt_probe()
222 cpt->reg_base = pci_iomap(pdev, OTX_CPT_PF_PCI_CFG_BAR, 0); in otx_cpt_probe()
223 if (!cpt->reg_base) { in otx_cpt_probe()
230 err = otx_cpt_device_init(cpt); in otx_cpt_probe()
235 err = otx_cpt_register_interrupts(cpt); in otx_cpt_probe()
240 err = otx_cpt_init_eng_grps(pdev, &cpt->eng_grps, cpt->pf_type); in otx_cpt_probe()
247 otx_cpt_unregister_interrupts(cpt); in otx_cpt_probe()
249 pci_iounmap(pdev, cpt->reg_base); in otx_cpt_probe()
262 struct otx_cpt_device *cpt = pci_get_drvdata(pdev); in otx_cpt_remove() local
264 if (!cpt) in otx_cpt_remove()
270 otx_cpt_cleanup_eng_grps(pdev, &cpt->eng_grps); in otx_cpt_remove()
272 otx_cpt_unregister_interrupts(cpt); in otx_cpt_remove()
274 otx_cpt_disable_all_cores(cpt); in otx_cpt_remove()
275 pci_iounmap(pdev, cpt->reg_base); in otx_cpt_remove()