Lines Matching refs:lfs

16 	done_wait.u = otx2_cpt_read64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot,  in cptlf_do_set_done_time_wait()
19 otx2_cpt_write64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_do_set_done_time_wait()
27 done_wait.u = otx2_cpt_read64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_do_set_done_num_wait()
30 otx2_cpt_write64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_do_set_done_num_wait()
34 static void cptlf_set_done_time_wait(struct otx2_cptlfs_info *lfs, in cptlf_set_done_time_wait() argument
39 for (slot = 0; slot < lfs->lfs_num; slot++) in cptlf_set_done_time_wait()
40 cptlf_do_set_done_time_wait(&lfs->lf[slot], time_wait); in cptlf_set_done_time_wait()
43 static void cptlf_set_done_num_wait(struct otx2_cptlfs_info *lfs, int num_wait) in cptlf_set_done_num_wait() argument
47 for (slot = 0; slot < lfs->lfs_num; slot++) in cptlf_set_done_num_wait()
48 cptlf_do_set_done_num_wait(&lfs->lf[slot], num_wait); in cptlf_set_done_num_wait()
53 struct otx2_cptlfs_info *lfs = lf->lfs; in cptlf_set_pri() local
57 ret = otx2_cpt_read_af_reg(lfs->mbox, lfs->pdev, in cptlf_set_pri()
59 &lf_ctrl.u, lfs->blkaddr); in cptlf_set_pri()
65 ret = otx2_cpt_write_af_reg(lfs->mbox, lfs->pdev, in cptlf_set_pri()
67 lf_ctrl.u, lfs->blkaddr); in cptlf_set_pri()
74 struct otx2_cptlfs_info *lfs = lf->lfs; in cptlf_set_eng_grps_mask() local
78 ret = otx2_cpt_read_af_reg(lfs->mbox, lfs->pdev, in cptlf_set_eng_grps_mask()
80 &lf_ctrl.u, lfs->blkaddr); in cptlf_set_eng_grps_mask()
86 ret = otx2_cpt_write_af_reg(lfs->mbox, lfs->pdev, in cptlf_set_eng_grps_mask()
88 lf_ctrl.u, lfs->blkaddr); in cptlf_set_eng_grps_mask()
92 static int cptlf_set_grp_and_pri(struct otx2_cptlfs_info *lfs, in cptlf_set_grp_and_pri() argument
97 for (slot = 0; slot < lfs->lfs_num; slot++) { in cptlf_set_grp_and_pri()
98 ret = cptlf_set_pri(&lfs->lf[slot], pri); in cptlf_set_grp_and_pri()
102 ret = cptlf_set_eng_grps_mask(&lfs->lf[slot], eng_grp_mask); in cptlf_set_grp_and_pri()
109 static void cptlf_hw_init(struct otx2_cptlfs_info *lfs) in cptlf_hw_init() argument
112 otx2_cptlf_disable_iqueues(lfs); in cptlf_hw_init()
115 otx2_cptlf_set_iqueues_base_addr(lfs); in cptlf_hw_init()
118 otx2_cptlf_set_iqueues_size(lfs); in cptlf_hw_init()
121 cptlf_set_done_time_wait(lfs, CPT_TIMER_HOLD); in cptlf_hw_init()
124 cptlf_set_done_num_wait(lfs, CPT_COUNT_HOLD); in cptlf_hw_init()
127 otx2_cptlf_enable_iqueues(lfs); in cptlf_hw_init()
130 static void cptlf_hw_cleanup(struct otx2_cptlfs_info *lfs) in cptlf_hw_cleanup() argument
133 otx2_cptlf_disable_iqueues(lfs); in cptlf_hw_cleanup()
136 static void cptlf_set_misc_intrs(struct otx2_cptlfs_info *lfs, u8 enable) in cptlf_set_misc_intrs() argument
149 for (slot = 0; slot < lfs->lfs_num; slot++) in cptlf_set_misc_intrs()
150 otx2_cpt_write64(lfs->reg_base, BLKADDR_CPT0, slot, reg, in cptlf_set_misc_intrs()
154 static void cptlf_enable_intrs(struct otx2_cptlfs_info *lfs) in cptlf_enable_intrs() argument
159 for (slot = 0; slot < lfs->lfs_num; slot++) in cptlf_enable_intrs()
160 otx2_cpt_write64(lfs->reg_base, BLKADDR_CPT0, slot, in cptlf_enable_intrs()
163 cptlf_set_misc_intrs(lfs, true); in cptlf_enable_intrs()
166 static void cptlf_disable_intrs(struct otx2_cptlfs_info *lfs) in cptlf_disable_intrs() argument
170 for (slot = 0; slot < lfs->lfs_num; slot++) in cptlf_disable_intrs()
171 otx2_cpt_write64(lfs->reg_base, BLKADDR_CPT0, slot, in cptlf_disable_intrs()
173 cptlf_set_misc_intrs(lfs, false); in cptlf_disable_intrs()
180 irq_cnt.u = otx2_cpt_read64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_read_done_cnt()
191 dev = &lf->lfs->pdev->dev; in cptlf_misc_intr_handler()
192 irq_misc.u = otx2_cpt_read64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_misc_intr_handler()
225 otx2_cpt_write64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_misc_intr_handler()
240 done_wait.u = otx2_cpt_read64(lf->lfs->reg_base, BLKADDR_CPT0, in cptlf_done_intr_handler()
243 otx2_cpt_write64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_done_intr_handler()
246 otx2_cpt_write64(lf->lfs->reg_base, BLKADDR_CPT0, lf->slot, in cptlf_done_intr_handler()
249 dev_err(&lf->lfs->pdev->dev, "No work for LF %d\n", in cptlf_done_intr_handler()
260 void otx2_cptlf_unregister_interrupts(struct otx2_cptlfs_info *lfs) in otx2_cptlf_unregister_interrupts() argument
264 for (i = 0; i < lfs->lfs_num; i++) { in otx2_cptlf_unregister_interrupts()
266 if (!lfs->lf[i].is_irq_reg[offs]) in otx2_cptlf_unregister_interrupts()
269 vector = pci_irq_vector(lfs->pdev, in otx2_cptlf_unregister_interrupts()
270 lfs->lf[i].msix_offset + offs); in otx2_cptlf_unregister_interrupts()
271 free_irq(vector, &lfs->lf[i]); in otx2_cptlf_unregister_interrupts()
272 lfs->lf[i].is_irq_reg[offs] = false; in otx2_cptlf_unregister_interrupts()
275 cptlf_disable_intrs(lfs); in otx2_cptlf_unregister_interrupts()
280 static int cptlf_do_register_interrrupts(struct otx2_cptlfs_info *lfs, in cptlf_do_register_interrrupts() argument
286 vector = pci_irq_vector(lfs->pdev, lfs->lf[lf_num].msix_offset + in cptlf_do_register_interrrupts()
289 lfs->lf[lf_num].irq_name[irq_offset], in cptlf_do_register_interrrupts()
290 &lfs->lf[lf_num]); in cptlf_do_register_interrrupts()
294 lfs->lf[lf_num].is_irq_reg[irq_offset] = true; in cptlf_do_register_interrrupts()
299 int otx2_cptlf_register_interrupts(struct otx2_cptlfs_info *lfs) in otx2_cptlf_register_interrupts() argument
303 for (i = 0; i < lfs->lfs_num; i++) { in otx2_cptlf_register_interrupts()
305 snprintf(lfs->lf[i].irq_name[irq_offs], 32, "CPTLF Misc%d", i); in otx2_cptlf_register_interrupts()
306 ret = cptlf_do_register_interrrupts(lfs, i, irq_offs, in otx2_cptlf_register_interrupts()
312 snprintf(lfs->lf[i].irq_name[irq_offs], 32, "OTX2_CPTLF Done%d", in otx2_cptlf_register_interrupts()
314 ret = cptlf_do_register_interrrupts(lfs, i, irq_offs, in otx2_cptlf_register_interrupts()
319 cptlf_enable_intrs(lfs); in otx2_cptlf_register_interrupts()
323 otx2_cptlf_unregister_interrupts(lfs); in otx2_cptlf_register_interrupts()
328 void otx2_cptlf_free_irqs_affinity(struct otx2_cptlfs_info *lfs) in otx2_cptlf_free_irqs_affinity() argument
332 for (slot = 0; slot < lfs->lfs_num; slot++) { in otx2_cptlf_free_irqs_affinity()
334 irq_set_affinity_hint(pci_irq_vector(lfs->pdev, in otx2_cptlf_free_irqs_affinity()
335 lfs->lf[slot].msix_offset + in otx2_cptlf_free_irqs_affinity()
337 free_cpumask_var(lfs->lf[slot].affinity_mask); in otx2_cptlf_free_irqs_affinity()
342 int otx2_cptlf_set_irqs_affinity(struct otx2_cptlfs_info *lfs) in otx2_cptlf_set_irqs_affinity() argument
344 struct otx2_cptlf_info *lf = lfs->lf; in otx2_cptlf_set_irqs_affinity()
347 for (slot = 0; slot < lfs->lfs_num; slot++) { in otx2_cptlf_set_irqs_affinity()
349 dev_err(&lfs->pdev->dev, in otx2_cptlf_set_irqs_affinity()
356 dev_to_node(&lfs->pdev->dev)), in otx2_cptlf_set_irqs_affinity()
360 ret = irq_set_affinity_hint(pci_irq_vector(lfs->pdev, in otx2_cptlf_set_irqs_affinity()
370 otx2_cptlf_free_irqs_affinity(lfs); in otx2_cptlf_set_irqs_affinity()
375 int otx2_cptlf_init(struct otx2_cptlfs_info *lfs, u8 eng_grp_mask, int pri, in otx2_cptlf_init() argument
380 if (!lfs->pdev || !lfs->reg_base) in otx2_cptlf_init()
383 lfs->lfs_num = lfs_num; in otx2_cptlf_init()
384 for (slot = 0; slot < lfs->lfs_num; slot++) { in otx2_cptlf_init()
385 lfs->lf[slot].lfs = lfs; in otx2_cptlf_init()
386 lfs->lf[slot].slot = slot; in otx2_cptlf_init()
387 if (lfs->lmt_base) in otx2_cptlf_init()
388 lfs->lf[slot].lmtline = lfs->lmt_base + in otx2_cptlf_init()
391 lfs->lf[slot].lmtline = lfs->reg_base + in otx2_cptlf_init()
395 lfs->lf[slot].ioreg = lfs->reg_base + in otx2_cptlf_init()
400 ret = otx2_cpt_attach_rscrs_msg(lfs); in otx2_cptlf_init()
404 ret = otx2_cpt_alloc_instruction_queues(lfs); in otx2_cptlf_init()
406 dev_err(&lfs->pdev->dev, in otx2_cptlf_init()
410 cptlf_hw_init(lfs); in otx2_cptlf_init()
415 ret = cptlf_set_grp_and_pri(lfs, eng_grp_mask, pri); in otx2_cptlf_init()
422 otx2_cpt_free_instruction_queues(lfs); in otx2_cptlf_init()
423 cptlf_hw_cleanup(lfs); in otx2_cptlf_init()
425 otx2_cpt_detach_rsrcs_msg(lfs); in otx2_cptlf_init()
427 lfs->lfs_num = 0; in otx2_cptlf_init()
432 void otx2_cptlf_shutdown(struct otx2_cptlfs_info *lfs) in otx2_cptlf_shutdown() argument
434 lfs->lfs_num = 0; in otx2_cptlf_shutdown()
436 cptlf_hw_cleanup(lfs); in otx2_cptlf_shutdown()
438 otx2_cpt_detach_rsrcs_msg(lfs); in otx2_cptlf_shutdown()