xref: /dpdk/drivers/common/cnxk/roc_rvu_lf.h (revision fcac76a874e6419f125e5cf6bbd38bc4097351bd)
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