1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #include "cnxk_eventdev.h"
8 cnxk_sso_init(struct rte_eventdev *event_dev)
10 const struct rte_memzone *mz = NULL;
11 struct rte_pci_device *pci_dev;
12 struct cnxk_sso_evdev *dev;
15 mz = rte_memzone_reserve(CNXK_SSO_MZ_NAME, sizeof(uint64_t),
18 plt_err("Failed to create eventdev memzone");
22 dev = cnxk_sso_pmd_priv(event_dev);
23 pci_dev = container_of(event_dev->dev, struct rte_pci_device, device);
24 dev->sso.pci_dev = pci_dev;
26 *(uint64_t *)mz->addr = (uint64_t)dev;
28 /* Initialize the base cnxk_dev object */
29 rc = roc_sso_dev_init(&dev->sso);
31 plt_err("Failed to initialize RoC SSO rc=%d", rc);
35 dev->is_timeout_deq = 0;
36 dev->min_dequeue_timeout_ns = USEC2NSEC(1);
37 dev->max_dequeue_timeout_ns = USEC2NSEC(0x3FF);
38 dev->max_num_events = -1;
39 dev->nb_event_queues = 0;
40 dev->nb_event_ports = 0;
50 cnxk_sso_fini(struct rte_eventdev *event_dev)
52 struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
54 /* For secondary processes, nothing to be done */
55 if (rte_eal_process_type() != RTE_PROC_PRIMARY)
58 roc_sso_rsrc_fini(&dev->sso);
59 roc_sso_dev_fini(&dev->sso);
65 cnxk_sso_remove(struct rte_pci_device *pci_dev)
67 return rte_event_pmd_pci_remove(pci_dev, cnxk_sso_fini);