1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2018 Cavium, Inc
5 #ifndef _OTX_CRYPTODEV_MBOX_H_
6 #define _OTX_CRYPTODEV_MBOX_H_
8 #include <rte_byteorder.h>
9 #include <rte_common.h>
11 #include "cpt_common.h"
12 #include "cpt_pmd_logs.h"
14 #include "otx_cryptodev_hw_access.h"
16 #define OTX_CPT_MBOX_MSG_TIMEOUT 2000 /* In Milli Seconds */
18 /* CPT mailbox structure */
20 /** Message type MBOX[0] */
27 enum otx_cpt_pf_type {
28 OTX_CPT_PF_TYPE_INVALID = 0,
29 OTX_CPT_PF_TYPE_AE = 2,
34 enum otx_cpt_vf_type {
35 OTX_CPT_VF_TYPE_AE = 1,
37 OTX_CPT_VF_TYPE_INVALID,
40 /* PF-VF message opcodes */
41 enum otx_cpt_mbox_opcode {
42 OTX_CPT_MSG_VF_UP = 1,
46 OTX_CPT_MSG_QBIND_GRP,
47 OTX_CPT_MSG_VQ_PRIORITY,
49 OTX_CPT_MBOX_MSG_TYPE_ACK,
50 OTX_CPT_MBOX_MSG_TYPE_NACK
56 #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
66 } otx_cpt_chipid_vfid_t;
68 /* Poll handler to handle mailbox messages from VFs */
70 otx_cpt_handle_mbox_intr(struct cpt_vf *cptvf);
73 * Checks if VF is able to communicate with PF
74 * and also gets the CPT number this VF is associated to.
77 otx_cpt_check_pf_ready(struct cpt_vf *cptvf);
80 * Communicate to PF to get VF type
83 otx_cpt_get_dev_type(struct cpt_vf *cptvf);
86 * Communicate VQs size to PF to program CPT(0)_PF_Q(0-15)_CTL of the VF.
90 otx_cpt_send_vq_size_msg(struct cpt_vf *cptvf);
93 * Communicate VF group required to PF and get the VQ binded to that group
96 otx_cpt_send_vf_grp_msg(struct cpt_vf *cptvf, uint32_t group);
99 * Communicate to PF that VF is UP and running
102 otx_cpt_send_vf_up(struct cpt_vf *cptvf);
105 * Communicate to PF that VF is DOWN and running
108 otx_cpt_send_vf_down(struct cpt_vf *cptvf);
110 #endif /* _OTX_CRYPTODEV_MBOX_H_ */