1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(C) 2024 Marvell. 3 */ 4 5 #ifndef _ROC_RVU_LF_H_ 6 #define _ROC_RVU_LF_H_ 7 8 #include "roc_platform.h" 9 10 struct roc_rvu_lf { 11 TAILQ_ENTRY(roc_rvu_lf) next; 12 struct plt_pci_device *pci_dev; 13 uint8_t idx; 14 #define ROC_RVU_MEM_SZ (6 * 1024) 15 uint8_t reserved[ROC_RVU_MEM_SZ] __plt_cache_aligned; 16 }; 17 18 TAILQ_HEAD(roc_rvu_lf_head, roc_rvu_lf); 19 20 /* Dev */ 21 int __roc_api roc_rvu_lf_dev_init(struct roc_rvu_lf *roc_rvu_lf); 22 int __roc_api roc_rvu_lf_dev_fini(struct roc_rvu_lf *roc_rvu_lf); 23 24 uint16_t __roc_api roc_rvu_lf_pf_func_get(struct roc_rvu_lf *roc_rvu_lf); 25 26 int __roc_api roc_rvu_lf_msg_process(struct roc_rvu_lf *roc_rvu_lf, 27 uint16_t vf, uint16_t msg_id, 28 void *req_data, uint16_t req_len, 29 void *rsp_data, uint16_t rsp_len); 30 31 int __roc_api roc_rvu_lf_msg_id_range_set(struct roc_rvu_lf *roc_rvu_lf, 32 uint16_t from, uint16_t to); 33 bool __roc_api roc_rvu_lf_msg_id_range_check(struct roc_rvu_lf *roc_rvu_lf, uint16_t msg_id); 34 typedef void (*roc_rvu_lf_intr_cb_fn)(void *cb_arg); 35 typedef int (*roc_rvu_lf_msg_handler_cb_fn)(uint16_t vf, uint16_t msg_id, 36 void *req, uint16_t req_len, 37 void **rsp, uint16_t *rsp_len); 38 39 int __roc_api roc_rvu_lf_irq_register(struct roc_rvu_lf *roc_rvu_lf, unsigned int irq, 40 roc_rvu_lf_intr_cb_fn cb, void *cb_arg); 41 int __roc_api roc_rvu_lf_irq_unregister(struct roc_rvu_lf *roc_rvu_lf, unsigned int irq, 42 roc_rvu_lf_intr_cb_fn cb, void *cb_arg); 43 int __roc_api roc_rvu_lf_msg_handler_register(struct roc_rvu_lf *roc_rvu_lf, 44 roc_rvu_lf_msg_handler_cb_fn cb); 45 int __roc_api roc_rvu_lf_msg_handler_unregister(struct roc_rvu_lf *roc_rvu_lf); 46 #endif /* _ROC_RVU_LF_H_ */ 47