xref: /dpdk/drivers/vdpa/sfc/sfc_vdpa_mcdi.c (revision 6dad9a7353d47633068f236f489171f06ed96230)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020-2021 Xilinx, Inc.
3  */
4 
5 #include "sfc_efx_mcdi.h"
6 
7 #include "sfc_vdpa.h"
8 #include "sfc_vdpa_debug.h"
9 #include "sfc_vdpa_log.h"
10 
11 static sfc_efx_mcdi_dma_alloc_cb sfc_vdpa_mcdi_dma_alloc;
12 static int
sfc_vdpa_mcdi_dma_alloc(void * cookie,const char * name,size_t len,efsys_mem_t * esmp)13 sfc_vdpa_mcdi_dma_alloc(void *cookie, const char *name, size_t len,
14 			efsys_mem_t *esmp)
15 {
16 	struct sfc_vdpa_adapter *sva = cookie;
17 
18 	return sfc_vdpa_dma_alloc(sva, name, len, esmp);
19 }
20 
21 static sfc_efx_mcdi_dma_free_cb sfc_vdpa_mcdi_dma_free;
22 static void
sfc_vdpa_mcdi_dma_free(void * cookie,efsys_mem_t * esmp)23 sfc_vdpa_mcdi_dma_free(void *cookie, efsys_mem_t *esmp)
24 {
25 	struct sfc_vdpa_adapter *sva = cookie;
26 
27 	sfc_vdpa_dma_free(sva, esmp);
28 }
29 
30 static sfc_efx_mcdi_sched_restart_cb sfc_vdpa_mcdi_sched_restart;
31 static void
sfc_vdpa_mcdi_sched_restart(void * cookie)32 sfc_vdpa_mcdi_sched_restart(void *cookie)
33 {
34 	RTE_SET_USED(cookie);
35 }
36 
37 static sfc_efx_mcdi_mgmt_evq_poll_cb sfc_vdpa_mcdi_mgmt_evq_poll;
38 static void
sfc_vdpa_mcdi_mgmt_evq_poll(void * cookie)39 sfc_vdpa_mcdi_mgmt_evq_poll(void *cookie)
40 {
41 	RTE_SET_USED(cookie);
42 }
43 
44 static const struct sfc_efx_mcdi_ops sfc_vdpa_mcdi_ops = {
45 	.dma_alloc	= sfc_vdpa_mcdi_dma_alloc,
46 	.dma_free	= sfc_vdpa_mcdi_dma_free,
47 	.sched_restart  = sfc_vdpa_mcdi_sched_restart,
48 	.mgmt_evq_poll  = sfc_vdpa_mcdi_mgmt_evq_poll,
49 
50 };
51 
52 int
sfc_vdpa_mcdi_init(struct sfc_vdpa_adapter * sva)53 sfc_vdpa_mcdi_init(struct sfc_vdpa_adapter *sva)
54 {
55 	uint32_t logtype;
56 
57 	sfc_vdpa_log_init(sva, "entry");
58 
59 	logtype = sfc_vdpa_register_logtype(&(sva->pdev->addr),
60 					    SFC_VDPA_LOGTYPE_MCDI_STR,
61 					    RTE_LOG_NOTICE);
62 
63 	return sfc_efx_mcdi_init(&sva->mcdi, logtype,
64 				 sva->log_prefix, sva->nic,
65 				 &sfc_vdpa_mcdi_ops, sva);
66 }
67 
68 void
sfc_vdpa_mcdi_fini(struct sfc_vdpa_adapter * sva)69 sfc_vdpa_mcdi_fini(struct sfc_vdpa_adapter *sva)
70 {
71 	sfc_vdpa_log_init(sva, "entry");
72 	sfc_efx_mcdi_fini(&sva->mcdi);
73 }
74