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