Lines Matching refs:cpt
11 static void cpt_send_msg_to_vf(struct cpt_device *cpt, int vf, in cpt_send_msg_to_vf() argument
15 cpt_write_csr64(cpt->reg_base, CPTX_PF_VFX_MBOXX(0, vf, 1), in cpt_send_msg_to_vf()
17 cpt_write_csr64(cpt->reg_base, CPTX_PF_VFX_MBOXX(0, vf, 0), mbx->msg); in cpt_send_msg_to_vf()
23 static void cpt_mbox_send_ack(struct cpt_device *cpt, int vf, in cpt_mbox_send_ack() argument
28 cpt_send_msg_to_vf(cpt, vf, mbx); in cpt_mbox_send_ack()
31 static void cpt_clear_mbox_intr(struct cpt_device *cpt, u32 vf) in cpt_clear_mbox_intr() argument
34 cpt_write_csr64(cpt->reg_base, CPTX_PF_MBOX_INTX(0, 0), (1 << vf)); in cpt_clear_mbox_intr()
40 static void cpt_cfg_qlen_for_vf(struct cpt_device *cpt, int vf, u32 size) in cpt_cfg_qlen_for_vf() argument
44 pf_qx_ctl.u = cpt_read_csr64(cpt->reg_base, CPTX_PF_QX_CTL(0, vf)); in cpt_cfg_qlen_for_vf()
47 cpt_write_csr64(cpt->reg_base, CPTX_PF_QX_CTL(0, vf), pf_qx_ctl.u); in cpt_cfg_qlen_for_vf()
53 static void cpt_cfg_vq_priority(struct cpt_device *cpt, int vf, u32 pri) in cpt_cfg_vq_priority() argument
57 pf_qx_ctl.u = cpt_read_csr64(cpt->reg_base, CPTX_PF_QX_CTL(0, vf)); in cpt_cfg_vq_priority()
59 cpt_write_csr64(cpt->reg_base, CPTX_PF_QX_CTL(0, vf), pf_qx_ctl.u); in cpt_cfg_vq_priority()
62 static int cpt_bind_vq_to_grp(struct cpt_device *cpt, u8 q, u8 grp) in cpt_bind_vq_to_grp() argument
64 struct microcode *mcode = cpt->mcode; in cpt_bind_vq_to_grp()
66 struct device *dev = &cpt->pdev->dev; in cpt_bind_vq_to_grp()
76 if (grp >= cpt->next_mc_idx) { in cpt_bind_vq_to_grp()
80 pf_qx_ctl.u = cpt_read_csr64(cpt->reg_base, CPTX_PF_QX_CTL(0, q)); in cpt_bind_vq_to_grp()
82 cpt_write_csr64(cpt->reg_base, CPTX_PF_QX_CTL(0, q), pf_qx_ctl.u); in cpt_bind_vq_to_grp()
89 static void cpt_handle_mbox_intr(struct cpt_device *cpt, int vf) in cpt_handle_mbox_intr() argument
91 struct cpt_vf_info *vfx = &cpt->vfinfo[vf]; in cpt_handle_mbox_intr()
94 struct device *dev = &cpt->pdev->dev; in cpt_handle_mbox_intr()
99 mbx.msg = cpt_read_csr64(cpt->reg_base, CPTX_PF_VFX_MBOXX(0, vf, 0)); in cpt_handle_mbox_intr()
100 mbx.data = cpt_read_csr64(cpt->reg_base, CPTX_PF_VFX_MBOXX(0, vf, 1)); in cpt_handle_mbox_intr()
106 cpt_mbox_send_ack(cpt, vf, &mbx); in cpt_handle_mbox_intr()
111 cpt_send_msg_to_vf(cpt, vf, &mbx); in cpt_handle_mbox_intr()
117 cpt_mbox_send_ack(cpt, vf, &mbx); in cpt_handle_mbox_intr()
121 cpt_cfg_qlen_for_vf(cpt, vf, vfx->qlen); in cpt_handle_mbox_intr()
122 cpt_mbox_send_ack(cpt, vf, &mbx); in cpt_handle_mbox_intr()
125 vftype = cpt_bind_vq_to_grp(cpt, vf, (u8)mbx.data); in cpt_handle_mbox_intr()
134 cpt_send_msg_to_vf(cpt, vf, &mbx); in cpt_handle_mbox_intr()
139 cpt_cfg_vq_priority(cpt, vf, vfx->priority); in cpt_handle_mbox_intr()
140 cpt_mbox_send_ack(cpt, vf, &mbx); in cpt_handle_mbox_intr()
143 dev_err(&cpt->pdev->dev, "Invalid msg from VF%d, msg 0x%llx\n", in cpt_handle_mbox_intr()
149 void cpt_mbox_intr_handler (struct cpt_device *cpt, int mbx) in cpt_mbox_intr_handler() argument
154 intr = cpt_read_csr64(cpt->reg_base, CPTX_PF_MBOX_INTX(0, 0)); in cpt_mbox_intr_handler()
155 dev_dbg(&cpt->pdev->dev, "PF interrupt Mbox%d 0x%llx\n", mbx, intr); in cpt_mbox_intr_handler()
158 dev_dbg(&cpt->pdev->dev, "Intr from VF %d\n", vf); in cpt_mbox_intr_handler()
159 cpt_handle_mbox_intr(cpt, vf); in cpt_mbox_intr_handler()
160 cpt_clear_mbox_intr(cpt, vf); in cpt_mbox_intr_handler()