event/cnxk: add build infra and device setup
[dpdk.git] / drivers / event / cnxk / cnxk_eventdev.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #include "cnxk_eventdev.h"
6
7 int
8 cnxk_sso_init(struct rte_eventdev *event_dev)
9 {
10         const struct rte_memzone *mz = NULL;
11         struct rte_pci_device *pci_dev;
12         struct cnxk_sso_evdev *dev;
13         int rc;
14
15         mz = rte_memzone_reserve(CNXK_SSO_MZ_NAME, sizeof(uint64_t),
16                                  SOCKET_ID_ANY, 0);
17         if (mz == NULL) {
18                 plt_err("Failed to create eventdev memzone");
19                 return -ENOMEM;
20         }
21
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;
25
26         *(uint64_t *)mz->addr = (uint64_t)dev;
27
28         /* Initialize the base cnxk_dev object */
29         rc = roc_sso_dev_init(&dev->sso);
30         if (rc < 0) {
31                 plt_err("Failed to initialize RoC SSO rc=%d", rc);
32                 goto error;
33         }
34
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;
41
42         return 0;
43
44 error:
45         rte_memzone_free(mz);
46         return rc;
47 }
48
49 int
50 cnxk_sso_fini(struct rte_eventdev *event_dev)
51 {
52         struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
53
54         /* For secondary processes, nothing to be done */
55         if (rte_eal_process_type() != RTE_PROC_PRIMARY)
56                 return 0;
57
58         roc_sso_rsrc_fini(&dev->sso);
59         roc_sso_dev_fini(&dev->sso);
60
61         return 0;
62 }
63
64 int
65 cnxk_sso_remove(struct rte_pci_device *pci_dev)
66 {
67         return rte_event_pmd_pci_remove(pci_dev, cnxk_sso_fini);
68 }