119d8e8c7SSrujana Challa /* SPDX-License-Identifier: GPL-2.0-only 219d8e8c7SSrujana Challa * Copyright (C) 2020 Marvell. 319d8e8c7SSrujana Challa */ 419d8e8c7SSrujana Challa 519d8e8c7SSrujana Challa #ifndef __OTX2_CPTVF_H 619d8e8c7SSrujana Challa #define __OTX2_CPTVF_H 719d8e8c7SSrujana Challa 819d8e8c7SSrujana Challa #include "mbox.h" 919d8e8c7SSrujana Challa #include "otx2_cptlf.h" 1019d8e8c7SSrujana Challa 1119d8e8c7SSrujana Challa struct otx2_cptvf_dev { 1219d8e8c7SSrujana Challa void __iomem *reg_base; /* Register start address */ 1319d8e8c7SSrujana Challa void __iomem *pfvf_mbox_base; /* PF-VF mbox start address */ 1419d8e8c7SSrujana Challa struct pci_dev *pdev; /* PCI device handle */ 1519d8e8c7SSrujana Challa struct otx2_cptlfs_info lfs; /* CPT LFs attached to this VF */ 1619d8e8c7SSrujana Challa u8 vf_id; /* Virtual function index */ 1719d8e8c7SSrujana Challa 1819d8e8c7SSrujana Challa /* PF <=> VF mbox */ 1919d8e8c7SSrujana Challa struct otx2_mbox pfvf_mbox; 2019d8e8c7SSrujana Challa struct work_struct pfvf_mbox_work; 2119d8e8c7SSrujana Challa struct workqueue_struct *pfvf_mbox_wq; 22a4855a8cSSrujana Challa int blkaddr; 234cd8c315SSrujana Challa void *bbuf_base; 244cd8c315SSrujana Challa unsigned long cap_flag; 2592508e7fSSrujana Challa u64 eng_caps[OTX2_CPT_MAX_ENG_TYPES]; 2619d8e8c7SSrujana Challa }; 2719d8e8c7SSrujana Challa 2819d8e8c7SSrujana Challa irqreturn_t otx2_cptvf_pfvf_mbox_intr(int irq, void *arg); 2919d8e8c7SSrujana Challa void otx2_cptvf_pfvf_mbox_handler(struct work_struct *work); 3019d8e8c7SSrujana Challa int otx2_cptvf_send_eng_grp_num_msg(struct otx2_cptvf_dev *cptvf, int eng_type); 318ec8015aSSrujana Challa int otx2_cptvf_send_kvf_limits_msg(struct otx2_cptvf_dev *cptvf); 324cd8c315SSrujana Challa int otx2_cpt_mbox_bbuf_init(struct otx2_cptvf_dev *cptvf, struct pci_dev *pdev); 3392508e7fSSrujana Challa int otx2_cptvf_send_caps_msg(struct otx2_cptvf_dev *cptvf); 3419d8e8c7SSrujana Challa 3519d8e8c7SSrujana Challa #endif /* __OTX2_CPTVF_H */ 36