1 /* SPDX-License-Identifier: BSD-3-Clause
3 * Copyright(c) 2019-2021 Xilinx, Inc.
4 * Copyright(c) 2016-2019 Solarflare Communications Inc.
6 * This software was jointly developed between OKTET Labs (under contract
7 * for Solarflare) and Solarflare Communications, Inc.
10 #include "sfc_efx_mcdi.h"
13 #include "sfc_debug.h"
17 static sfc_efx_mcdi_dma_alloc_cb sfc_mcdi_dma_alloc;
19 sfc_mcdi_dma_alloc(void *cookie, const char *name, size_t len,
22 struct sfc_adapter *sa = cookie;
24 return sfc_dma_alloc(sa, name, 0, EFX_NIC_DMA_ADDR_MCDI_BUF, len,
28 static sfc_efx_mcdi_dma_free_cb sfc_mcdi_dma_free;
30 sfc_mcdi_dma_free(void *cookie, efsys_mem_t *esmp)
32 const struct sfc_adapter *sa = cookie;
34 sfc_dma_free(sa, esmp);
37 static sfc_efx_mcdi_sched_restart_cb sfc_mcdi_sched_restart;
39 sfc_mcdi_sched_restart(void *cookie)
41 struct sfc_adapter *sa = cookie;
43 sfc_schedule_restart(sa);
46 static sfc_efx_mcdi_mgmt_evq_poll_cb sfc_mcdi_mgmt_evq_poll;
48 sfc_mcdi_mgmt_evq_poll(void *cookie)
50 struct sfc_adapter *sa = cookie;
52 sfc_ev_mgmt_qpoll(sa);
55 static const struct sfc_efx_mcdi_ops sfc_mcdi_ops = {
56 .dma_alloc = sfc_mcdi_dma_alloc,
57 .dma_free = sfc_mcdi_dma_free,
58 .sched_restart = sfc_mcdi_sched_restart,
59 .mgmt_evq_poll = sfc_mcdi_mgmt_evq_poll,
63 sfc_mcdi_init(struct sfc_adapter *sa)
67 sfc_log_init(sa, "entry");
69 logtype = sfc_register_logtype(&sa->priv.shared->pci_addr,
73 return sfc_efx_mcdi_init(&sa->mcdi, logtype,
74 sa->priv.shared->log_prefix, sa->nic,
79 sfc_mcdi_fini(struct sfc_adapter *sa)
81 sfc_log_init(sa, "entry");
82 sfc_efx_mcdi_fini(&sa->mcdi);