xref: /dpdk/lib/mldev/rte_mldev_pmd.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
1ea80eafbSSrikanth Yalavarthi /* SPDX-License-Identifier: BSD-3-Clause
2ea80eafbSSrikanth Yalavarthi  * Copyright (c) 2022 Marvell.
3ea80eafbSSrikanth Yalavarthi  */
4ea80eafbSSrikanth Yalavarthi 
5ea80eafbSSrikanth Yalavarthi #ifndef RTE_MLDEV_PMD_H
6ea80eafbSSrikanth Yalavarthi #define RTE_MLDEV_PMD_H
7ea80eafbSSrikanth Yalavarthi 
8ea80eafbSSrikanth Yalavarthi /**
9ea80eafbSSrikanth Yalavarthi  * @file
10ea80eafbSSrikanth Yalavarthi  *
11ea80eafbSSrikanth Yalavarthi  * ML Device PMD interface
12ea80eafbSSrikanth Yalavarthi  *
13ea80eafbSSrikanth Yalavarthi  * @note
14ea80eafbSSrikanth Yalavarthi  * These APIs are for MLDEV PMDs only and user applications should not call them directly.
15ea80eafbSSrikanth Yalavarthi  */
16ea80eafbSSrikanth Yalavarthi 
17ea80eafbSSrikanth Yalavarthi #include <stdint.h>
18ea80eafbSSrikanth Yalavarthi 
19ea80eafbSSrikanth Yalavarthi #include <rte_common.h>
20ea80eafbSSrikanth Yalavarthi #include <rte_compat.h>
21ea80eafbSSrikanth Yalavarthi #include <rte_mldev.h>
22ea80eafbSSrikanth Yalavarthi #include <rte_mldev_core.h>
23ea80eafbSSrikanth Yalavarthi 
24*719834a6SMattias Rönnblom #ifdef __cplusplus
25*719834a6SMattias Rönnblom extern "C" {
26*719834a6SMattias Rönnblom #endif
27*719834a6SMattias Rönnblom 
28ea80eafbSSrikanth Yalavarthi /**
29ea80eafbSSrikanth Yalavarthi  * @internal
30ea80eafbSSrikanth Yalavarthi  *
31ea80eafbSSrikanth Yalavarthi  * Initialisation parameters for ML devices.
32ea80eafbSSrikanth Yalavarthi  */
33ea80eafbSSrikanth Yalavarthi struct rte_ml_dev_pmd_init_params {
34ea80eafbSSrikanth Yalavarthi 	/** Socket to use for memory allocation. */
35ea80eafbSSrikanth Yalavarthi 	uint8_t socket_id;
36ea80eafbSSrikanth Yalavarthi 
37ea80eafbSSrikanth Yalavarthi 	/** Size of device private data. */
38ea80eafbSSrikanth Yalavarthi 	uint64_t private_data_size;
39ea80eafbSSrikanth Yalavarthi };
40ea80eafbSSrikanth Yalavarthi 
41c775df1cSSrikanth Yalavarthi struct rte_ml_dev;
42c775df1cSSrikanth Yalavarthi 
43ea80eafbSSrikanth Yalavarthi /**
44ea80eafbSSrikanth Yalavarthi  * @internal
45ea80eafbSSrikanth Yalavarthi  *
46ea80eafbSSrikanth Yalavarthi  * Get the ML device pointer for the device. Assumes a valid device index.
47ea80eafbSSrikanth Yalavarthi  *
48ea80eafbSSrikanth Yalavarthi  * @param dev_id
49ea80eafbSSrikanth Yalavarthi  *	Device ID value to select the device structure.
50ea80eafbSSrikanth Yalavarthi  *
51ea80eafbSSrikanth Yalavarthi  * @return
52ea80eafbSSrikanth Yalavarthi  *	The rte_ml_dev pointer for the given device ID.
53ea80eafbSSrikanth Yalavarthi  */
54ea80eafbSSrikanth Yalavarthi __rte_internal
55ea80eafbSSrikanth Yalavarthi struct rte_ml_dev *
56ea80eafbSSrikanth Yalavarthi rte_ml_dev_pmd_get_dev(int16_t dev_id);
57ea80eafbSSrikanth Yalavarthi 
58ea80eafbSSrikanth Yalavarthi /**
59ea80eafbSSrikanth Yalavarthi  * @internal
60ea80eafbSSrikanth Yalavarthi  *
61ea80eafbSSrikanth Yalavarthi  * Get the rte_ml_dev structure device pointer for the named device.
62ea80eafbSSrikanth Yalavarthi  *
63ea80eafbSSrikanth Yalavarthi  * @param name
64ea80eafbSSrikanth Yalavarthi  *	Device name to select the device structure.
65ea80eafbSSrikanth Yalavarthi  *
66ea80eafbSSrikanth Yalavarthi  * @return
67ea80eafbSSrikanth Yalavarthi  *	The rte_ml_dev pointer for the given device ID.
68ea80eafbSSrikanth Yalavarthi  */
69ea80eafbSSrikanth Yalavarthi __rte_internal
70ea80eafbSSrikanth Yalavarthi struct rte_ml_dev *
71ea80eafbSSrikanth Yalavarthi rte_ml_dev_pmd_get_named_dev(const char *name);
72ea80eafbSSrikanth Yalavarthi 
73ea80eafbSSrikanth Yalavarthi /**
74ea80eafbSSrikanth Yalavarthi  * @internal
75ea80eafbSSrikanth Yalavarthi  *
76ea80eafbSSrikanth Yalavarthi  * Allocates a new mldev slot for an ML device and returns the pointer to that slot for use.
77ea80eafbSSrikanth Yalavarthi  * Function for internal use by dummy drivers.
78ea80eafbSSrikanth Yalavarthi  *
79ea80eafbSSrikanth Yalavarthi  * @param name
80ea80eafbSSrikanth Yalavarthi  *	Unique identifier name for each device.
81ea80eafbSSrikanth Yalavarthi  * @param socket_id
82ea80eafbSSrikanth Yalavarthi  *	Socket to allocate resources.
83ea80eafbSSrikanth Yalavarthi  *
84ea80eafbSSrikanth Yalavarthi  * @return
85ea80eafbSSrikanth Yalavarthi  *	Slot in the rte_ml_dev_devices array for a new device.
86ea80eafbSSrikanth Yalavarthi  */
87ea80eafbSSrikanth Yalavarthi __rte_internal
88ea80eafbSSrikanth Yalavarthi struct rte_ml_dev *
89ea80eafbSSrikanth Yalavarthi rte_ml_dev_pmd_allocate(const char *name, uint8_t socket_id);
90ea80eafbSSrikanth Yalavarthi 
91ea80eafbSSrikanth Yalavarthi /**
92ea80eafbSSrikanth Yalavarthi  * @internal
93ea80eafbSSrikanth Yalavarthi  *
94ea80eafbSSrikanth Yalavarthi  * Release the specified mldev device.
95ea80eafbSSrikanth Yalavarthi  *
96ea80eafbSSrikanth Yalavarthi  * @param dev
97ea80eafbSSrikanth Yalavarthi  *	ML device.
98ea80eafbSSrikanth Yalavarthi  * @return
99ea80eafbSSrikanth Yalavarthi  *	- 0 on success.
100ea80eafbSSrikanth Yalavarthi  *	- < 0, error code on failure.
101ea80eafbSSrikanth Yalavarthi  */
102ea80eafbSSrikanth Yalavarthi __rte_internal
103ea80eafbSSrikanth Yalavarthi int
104ea80eafbSSrikanth Yalavarthi rte_ml_dev_pmd_release(struct rte_ml_dev *dev);
105ea80eafbSSrikanth Yalavarthi 
106ea80eafbSSrikanth Yalavarthi /**
107ea80eafbSSrikanth Yalavarthi  * @internal
108ea80eafbSSrikanth Yalavarthi  *
109ea80eafbSSrikanth Yalavarthi  * PMD assist function to provide boiler plate code for ML driver to create and allocate resources
110ea80eafbSSrikanth Yalavarthi  * for a new ML PMD device instance.
111ea80eafbSSrikanth Yalavarthi  *
112ea80eafbSSrikanth Yalavarthi  * @param name
113ea80eafbSSrikanth Yalavarthi  *	ML device name.
114ea80eafbSSrikanth Yalavarthi  * @param device
115ea80eafbSSrikanth Yalavarthi  *	Base device handle.
116ea80eafbSSrikanth Yalavarthi  * @param params
117ea80eafbSSrikanth Yalavarthi  *	PMD initialisation parameters.
118ea80eafbSSrikanth Yalavarthi  *
119ea80eafbSSrikanth Yalavarthi  * @return
120ea80eafbSSrikanth Yalavarthi  *	- ML device instance on success.
121ea80eafbSSrikanth Yalavarthi  *	- NULL on failure.
122ea80eafbSSrikanth Yalavarthi  */
123ea80eafbSSrikanth Yalavarthi __rte_internal
124ea80eafbSSrikanth Yalavarthi struct rte_ml_dev *
125ea80eafbSSrikanth Yalavarthi rte_ml_dev_pmd_create(const char *name, struct rte_device *device,
126ea80eafbSSrikanth Yalavarthi 		      struct rte_ml_dev_pmd_init_params *params);
127ea80eafbSSrikanth Yalavarthi 
128ea80eafbSSrikanth Yalavarthi /**
129ea80eafbSSrikanth Yalavarthi  * @internal
130ea80eafbSSrikanth Yalavarthi  *
131ea80eafbSSrikanth Yalavarthi  * PMD assist function to provide boiler plate code for ML driver to destroy and free resources
132ea80eafbSSrikanth Yalavarthi  * associated with a ML PMD device instance.
133ea80eafbSSrikanth Yalavarthi  *
134ea80eafbSSrikanth Yalavarthi  * @param mldev
135ea80eafbSSrikanth Yalavarthi  *	ML device instance.
136ea80eafbSSrikanth Yalavarthi  *
137ea80eafbSSrikanth Yalavarthi  * @return
138ea80eafbSSrikanth Yalavarthi  *	- 0 on success.
139ea80eafbSSrikanth Yalavarthi  *	- < 0, error code on failure.
140ea80eafbSSrikanth Yalavarthi  */
141ea80eafbSSrikanth Yalavarthi __rte_internal
142ea80eafbSSrikanth Yalavarthi int
143ea80eafbSSrikanth Yalavarthi rte_ml_dev_pmd_destroy(struct rte_ml_dev *mldev);
144ea80eafbSSrikanth Yalavarthi 
145ea80eafbSSrikanth Yalavarthi #ifdef __cplusplus
146ea80eafbSSrikanth Yalavarthi }
147ea80eafbSSrikanth Yalavarthi #endif
148ea80eafbSSrikanth Yalavarthi 
149ea80eafbSSrikanth Yalavarthi #endif /* RTE_MLDEV_PMD_H */
150