event/cnxk: add event queue config
[dpdk.git] / drivers / event / cnxk / cnxk_eventdev.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4
5 #ifndef __CNXK_EVENTDEV_H__
6 #define __CNXK_EVENTDEV_H__
7
8 #include <rte_pci.h>
9
10 #include <eventdev_pmd_pci.h>
11
12 #include "roc_api.h"
13
14 #define USEC2NSEC(__us) ((__us)*1E3)
15
16 #define CNXK_SSO_MZ_NAME "cnxk_evdev_mz"
17
18 struct cnxk_sso_evdev {
19         struct roc_sso sso;
20         uint8_t max_event_queues;
21         uint8_t max_event_ports;
22         uint8_t is_timeout_deq;
23         uint8_t nb_event_queues;
24         uint8_t nb_event_ports;
25         uint32_t deq_tmo_ns;
26         uint32_t min_dequeue_timeout_ns;
27         uint32_t max_dequeue_timeout_ns;
28         int32_t max_num_events;
29         /* CN9K */
30         uint8_t dual_ws;
31 } __rte_cache_aligned;
32
33 static inline struct cnxk_sso_evdev *
34 cnxk_sso_pmd_priv(const struct rte_eventdev *event_dev)
35 {
36         return event_dev->data->dev_private;
37 }
38
39 /* Common ops API. */
40 int cnxk_sso_init(struct rte_eventdev *event_dev);
41 int cnxk_sso_fini(struct rte_eventdev *event_dev);
42 int cnxk_sso_remove(struct rte_pci_device *pci_dev);
43 void cnxk_sso_info_get(struct cnxk_sso_evdev *dev,
44                        struct rte_event_dev_info *dev_info);
45 int cnxk_sso_dev_validate(const struct rte_eventdev *event_dev);
46 void cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
47                              struct rte_event_queue_conf *queue_conf);
48 int cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
49                          const struct rte_event_queue_conf *queue_conf);
50 void cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id);
51 void cnxk_sso_port_def_conf(struct rte_eventdev *event_dev, uint8_t port_id,
52                             struct rte_event_port_conf *port_conf);
53
54 #endif /* __CNXK_EVENTDEV_H__ */