Lines Matching +full:mbox +full:-

1 // SPDX-License-Identifier: GPL-2.0
21 pfvf->hw_ops = &cn20k_hw_ops; in cn20k_init()
24 /* CN20K mbox AF => PFx irq handler */
28 struct mbox *mw = &pf->mbox; in cn20k_pfaf_mbox_intr_handler()
30 struct otx2_mbox *mbox; in cn20k_pfaf_mbox_intr_handler() local
40 mbox = &mw->mbox_up; in cn20k_pfaf_mbox_intr_handler()
41 mdev = &mbox->dev[0]; in cn20k_pfaf_mbox_intr_handler()
42 otx2_sync_mbox_bbuf(mbox, 0); in cn20k_pfaf_mbox_intr_handler()
44 hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in cn20k_pfaf_mbox_intr_handler()
45 if (hdr->num_msgs) in cn20k_pfaf_mbox_intr_handler()
46 queue_work(pf->mbox_wq, &mw->mbox_up_wrk); in cn20k_pfaf_mbox_intr_handler()
48 trace_otx2_msg_interrupt(pf->pdev, "UP message from AF to PF", in cn20k_pfaf_mbox_intr_handler()
53 mbox = &mw->mbox; in cn20k_pfaf_mbox_intr_handler()
54 mdev = &mbox->dev[0]; in cn20k_pfaf_mbox_intr_handler()
55 otx2_sync_mbox_bbuf(mbox, 0); in cn20k_pfaf_mbox_intr_handler()
57 hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in cn20k_pfaf_mbox_intr_handler()
58 if (hdr->num_msgs) in cn20k_pfaf_mbox_intr_handler()
59 queue_work(pf->mbox_wq, &mw->mbox_wrk); in cn20k_pfaf_mbox_intr_handler()
60 trace_otx2_msg_interrupt(pf->pdev, "DOWN reply from AF to PF", in cn20k_pfaf_mbox_intr_handler()
71 struct otx2_mbox *mbox; in cn20k_vfaf_mbox_intr_handler() local
79 /* Read latest mbox data */ in cn20k_vfaf_mbox_intr_handler()
84 mbox = &vf->mbox.mbox; in cn20k_vfaf_mbox_intr_handler()
85 mdev = &mbox->dev[0]; in cn20k_vfaf_mbox_intr_handler()
86 otx2_sync_mbox_bbuf(mbox, 0); in cn20k_vfaf_mbox_intr_handler()
88 hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in cn20k_vfaf_mbox_intr_handler()
89 if (hdr->num_msgs) in cn20k_vfaf_mbox_intr_handler()
90 queue_work(vf->mbox_wq, &vf->mbox.mbox_wrk); in cn20k_vfaf_mbox_intr_handler()
92 trace_otx2_msg_interrupt(mbox->pdev, "DOWN reply from PF0 to VF", in cn20k_vfaf_mbox_intr_handler()
98 mbox = &vf->mbox.mbox_up; in cn20k_vfaf_mbox_intr_handler()
99 mdev = &mbox->dev[0]; in cn20k_vfaf_mbox_intr_handler()
100 otx2_sync_mbox_bbuf(mbox, 0); in cn20k_vfaf_mbox_intr_handler()
102 hdr = (struct mbox_hdr *)(mdev->mbase + mbox->rx_start); in cn20k_vfaf_mbox_intr_handler()
103 if (hdr->num_msgs) in cn20k_vfaf_mbox_intr_handler()
104 queue_work(vf->mbox_wq, &vf->mbox.mbox_up_wrk); in cn20k_vfaf_mbox_intr_handler()
106 trace_otx2_msg_interrupt(mbox->pdev, "UP message from PF0 to VF", in cn20k_vfaf_mbox_intr_handler()
125 numvfs -= 64; in cn20k_enable_pfvf_mbox_intr()
153 vector = pci_irq_vector(pf->pdev, intr_vec); in cn20k_disable_pfvf_mbox_intr()
154 free_irq(vector, pf->hw.pfvf_irq_devid[vec]); in cn20k_disable_pfvf_mbox_intr()
161 struct otx2_nic *pf = irq_data->pf; in cn20k_pfvf_mbox_intr_handler()
162 struct mbox *mbox; in cn20k_pfvf_mbox_intr_handler() local
165 /* Sync with mbox memory region */ in cn20k_pfvf_mbox_intr_handler()
169 intr = otx2_read64(pf, irq_data->intr_status); in cn20k_pfvf_mbox_intr_handler()
170 otx2_write64(pf, irq_data->intr_status, intr); in cn20k_pfvf_mbox_intr_handler()
171 mbox = pf->mbox_pfvf; in cn20k_pfvf_mbox_intr_handler()
174 trace_otx2_msg_interrupt(pf->pdev, "VF(s) to PF", intr); in cn20k_pfvf_mbox_intr_handler()
176 irq_data->pf_queue_work_hdlr(mbox, pf->mbox_pfvf_wq, irq_data->start, in cn20k_pfvf_mbox_intr_handler()
177 irq_data->mdevs, intr); in cn20k_pfvf_mbox_intr_handler()
184 struct otx2_hw *hw = &pf->hw; in cn20k_register_pfvf_mbox_intr()
190 irq_data = devm_kcalloc(pf->dev, 4, in cn20k_register_pfvf_mbox_intr()
193 return -ENOMEM; in cn20k_register_pfvf_mbox_intr()
228 irq_name = &hw->irq_name[intr_vec * NAME_SIZE]; in cn20k_register_pfvf_mbox_intr()
229 if (pf->pcifunc) in cn20k_register_pfvf_mbox_intr()
231 "RVUPF%d_VF%d Mbox%d", rvu_get_pf(pf->pdev, in cn20k_register_pfvf_mbox_intr()
232 pf->pcifunc), vec / 2, vec % 2); in cn20k_register_pfvf_mbox_intr()
234 snprintf(irq_name, NAME_SIZE, "RVUPF_VF%d Mbox%d", in cn20k_register_pfvf_mbox_intr()
237 hw->pfvf_irq_devid[vec] = &irq_data[vec]; in cn20k_register_pfvf_mbox_intr()
238 ret = request_irq(pci_irq_vector(pf->pdev, intr_vec), in cn20k_register_pfvf_mbox_intr()
239 pf->hw_ops->pfvf_mbox_intr_handler, 0, in cn20k_register_pfvf_mbox_intr()
243 dev_err(pf->dev, in cn20k_register_pfvf_mbox_intr()