xref: /dpdk/drivers/raw/skeleton/skeleton_rawdev.h (revision fd51012de5369679e807be1d6a81d63ef15015ce)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2017 NXP
3  */
4 
5 #ifndef __SKELETON_RAWDEV_H__
6 #define __SKELETON_RAWDEV_H__
7 
8 #include <rte_rawdev.h>
9 
10 extern int skeleton_pmd_logtype;
11 #define RTE_LOGTYPE_SKELETON_PMD skeleton_pmd_logtype
12 
13 #define SKELETON_PMD_LOG(level, ...) \
14 	RTE_LOG_LINE_PREFIX(level, SKELETON_PMD, "%s(): ", __func__, __VA_ARGS__)
15 
16 #define SKELETON_PMD_FUNC_TRACE() SKELETON_PMD_LOG(DEBUG, ">>")
17 
18 #define SKELETON_PMD_DEBUG(fmt, ...) \
19 	SKELETON_PMD_LOG(DEBUG, fmt, ##__VA_ARGS__)
20 #define SKELETON_PMD_INFO(fmt, ...) \
21 	SKELETON_PMD_LOG(INFO, fmt, ##__VA_ARGS__)
22 #define SKELETON_PMD_ERR(fmt, ...) \
23 	SKELETON_PMD_LOG(ERR, fmt, ##__VA_ARGS__)
24 #define SKELETON_PMD_WARN(fmt, ...) \
25 	SKELETON_PMD_LOG(WARNING, fmt, ##__VA_ARGS__)
26 /* Macros for self test application */
27 #define SKELETON_TEST_INFO	SKELETON_PMD_INFO
28 #define SKELETON_TEST_DEBUG	SKELETON_PMD_DEBUG
29 #define SKELETON_TEST_ERR	SKELETON_PMD_ERR
30 #define SKELETON_TEST_WARN	SKELETON_PMD_WARN
31 
32 #define SKELETON_SELFTEST_ARG   ("selftest")
33 
34 #define SKELETON_VENDOR_ID 0x10
35 #define SKELETON_DEVICE_ID 0x01
36 
37 #define SKELETON_MAJOR_VER 1
38 #define SKELETON_MINOR_VER 0
39 #define SKELETON_SUB_VER   0
40 
41 #define SKELETON_MAX_QUEUES 1
42 
43 enum skeleton_firmware_state {
44 	SKELETON_FW_READY,
45 	SKELETON_FW_LOADED,
46 	SKELETON_FW_ERROR
47 };
48 
49 enum skeleton_device_state {
50 	SKELETON_DEV_RUNNING,
51 	SKELETON_DEV_STOPPED
52 };
53 
54 enum skeleton_queue_state {
55 	SKELETON_QUEUE_DETACH,
56 	SKELETON_QUEUE_ATTACH
57 };
58 
59 #define SKELETON_QUEUE_DEF_DEPTH 10
60 #define SKELETON_QUEUE_MAX_DEPTH 25
61 
62 struct skeleton_firmware_version_info {
63 	uint8_t major;
64 	uint8_t minor;
65 	uint8_t subrel;
66 };
67 
68 struct skeleton_firmware {
69 	/**< Device firmware information */
70 	struct skeleton_firmware_version_info firmware_version;
71 	/**< Device state */
72 	enum skeleton_firmware_state firmware_state;
73 
74 };
75 
76 #define SKELETON_MAX_ATTRIBUTES 10
77 #define SKELETON_ATTRIBUTE_NAME_MAX 20
78 
79 struct skeleton_rawdev_attributes {
80 	/**< Name of the attribute */
81 	char *name;
82 	/**< Value or reference of value of attribute */
83 	uint64_t value;
84 };
85 
86 /**< Device supports firmware loading/unloading */
87 #define SKELETON_CAPA_FW_LOAD	0x0001
88 /**< Device supports firmware reset */
89 #define SKELETON_CAPA_FW_RESET  0x0002
90 /**< Device support queue based communication */
91 #define SKELETON_CAPA_QUEUES    0x0004
92 /**< Default Capabilities: FW_LOAD, FW_RESET, QUEUES */
93 #define SKELETON_DEFAULT_CAPA   0x7
94 
95 struct skeleton_rawdev_queue {
96 	uint8_t state;
97 	uint32_t depth;
98 };
99 
100 struct skeleton_rawdev {
101 	uint16_t device_id;
102 	uint16_t vendor_id;
103 	uint16_t num_queues;
104 	/**< One of SKELETON_CAPA_* */
105 	uint16_t capabilities;
106 	/**< State of device; linked to firmware state */
107 	enum skeleton_device_state device_state;
108 	/**< Firmware configuration */
109 	struct skeleton_firmware fw;
110 	/**< Collection of all communication channels - which can be referred
111 	 *  to as queues.
112 	 */
113 	struct skeleton_rawdev_queue queues[SKELETON_MAX_QUEUES];
114 	/**< Global table containing various pre-defined and user-defined
115 	 * attributes.
116 	 */
117 	struct skeleton_rawdev_attributes attr[SKELETON_MAX_ATTRIBUTES];
118 	struct rte_device *device;
119 };
120 
121 struct skeleton_rawdev_conf {
122 	uint16_t num_queues;
123 	unsigned int capabilities;
124 	enum skeleton_device_state device_state;
125 	enum skeleton_firmware_state firmware_state;
126 };
127 
128 static inline struct skeleton_rawdev *
129 skeleton_rawdev_get_priv(const struct rte_rawdev *rawdev)
130 {
131 	return rawdev->dev_private;
132 }
133 
134 int test_rawdev_skeldev(uint16_t dev_id);
135 
136 #endif /* __SKELETON_RAWDEV_H__ */
137