1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #ifndef __CNXK_EVENTDEV_H__
6 #define __CNXK_EVENTDEV_H__
8 #include <rte_devargs.h>
9 #include <rte_kvargs.h>
10 #include <rte_mbuf_pool_ops.h>
13 #include <eventdev_pmd_pci.h>
17 #define CNXK_SSO_XAE_CNT "xae_cnt"
19 #define USEC2NSEC(__us) ((__us)*1E3)
21 #define CNXK_SSO_FC_NAME "cnxk_evdev_xaq_fc"
22 #define CNXK_SSO_MZ_NAME "cnxk_evdev_mz"
23 #define CNXK_SSO_XAQ_CACHE_CNT (0x7)
24 #define CNXK_SSO_XAQ_SLACK (8)
26 struct cnxk_sso_evdev {
28 uint8_t max_event_queues;
29 uint8_t max_event_ports;
30 uint8_t is_timeout_deq;
31 uint8_t nb_event_queues;
32 uint8_t nb_event_ports;
34 uint32_t min_dequeue_timeout_ns;
35 uint32_t max_dequeue_timeout_ns;
36 int32_t max_num_events;
41 struct rte_mempool *xaq_pool;
46 } __rte_cache_aligned;
49 parse_kvargs_value(const char *key, const char *value, void *opaque)
53 *(uint32_t *)opaque = (uint32_t)atoi(value);
57 static inline struct cnxk_sso_evdev *
58 cnxk_sso_pmd_priv(const struct rte_eventdev *event_dev)
60 return event_dev->data->dev_private;
63 /* Configuration functions */
64 int cnxk_sso_xaq_allocate(struct cnxk_sso_evdev *dev);
67 int cnxk_sso_init(struct rte_eventdev *event_dev);
68 int cnxk_sso_fini(struct rte_eventdev *event_dev);
69 int cnxk_sso_remove(struct rte_pci_device *pci_dev);
70 void cnxk_sso_info_get(struct cnxk_sso_evdev *dev,
71 struct rte_event_dev_info *dev_info);
72 int cnxk_sso_dev_validate(const struct rte_eventdev *event_dev);
73 void cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
74 struct rte_event_queue_conf *queue_conf);
75 int cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
76 const struct rte_event_queue_conf *queue_conf);
77 void cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id);
78 void cnxk_sso_port_def_conf(struct rte_eventdev *event_dev, uint8_t port_id,
79 struct rte_event_port_conf *port_conf);
81 #endif /* __CNXK_EVENTDEV_H__ */