xref: /dpdk/drivers/bus/fslmc/mc/fsl_dpcon.h (revision 591200ef6f32b56adc367ebe3647cc3dbe9362db)
1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2  *
3  * Copyright 2013-2016 Freescale Semiconductor Inc.
4  * Copyright 2017-2021, 2024 NXP
5  *
6  */
7 #ifndef __FSL_DPCON_H
8 #define __FSL_DPCON_H
9 
10 #include <rte_compat.h>
11 
12 /* Data Path Concentrator API
13  * Contains initialization APIs and runtime control APIs for DPCON
14  */
15 
16 struct fsl_mc_io;
17 
18 /** General DPCON macros */
19 
20 /**
21  * Use it to disable notifications; see dpcon_set_notification()
22  */
23 #define DPCON_INVALID_DPIO_ID		(int)(-1)
24 
25 __rte_internal
26 int dpcon_open(struct fsl_mc_io *mc_io,
27 	       uint32_t cmd_flags,
28 	       int dpcon_id,
29 	       uint16_t *token);
30 
31 __rte_internal
32 int dpcon_close(struct fsl_mc_io *mc_io,
33 		uint32_t cmd_flags,
34 		uint16_t token);
35 
36 /**
37  * struct dpcon_cfg - Structure representing DPCON configuration
38  * @num_priorities: Number of priorities for the DPCON channel (1-8)
39  */
40 struct dpcon_cfg {
41 	uint8_t num_priorities;
42 };
43 
44 int dpcon_create(struct fsl_mc_io *mc_io,
45 		 uint16_t dprc_token,
46 		 uint32_t cmd_flags,
47 		 const struct dpcon_cfg *cfg,
48 		 uint32_t *obj_id);
49 
50 int dpcon_destroy(struct fsl_mc_io *mc_io,
51 		  uint16_t dprc_token,
52 		  uint32_t cmd_flags,
53 		  uint32_t obj_id);
54 
55 __rte_internal
56 int dpcon_enable(struct fsl_mc_io *mc_io,
57 		 uint32_t cmd_flags,
58 		 uint16_t token);
59 
60 __rte_internal
61 int dpcon_disable(struct fsl_mc_io *mc_io,
62 		  uint32_t cmd_flags,
63 		  uint16_t token);
64 
65 int dpcon_is_enabled(struct fsl_mc_io *mc_io,
66 		     uint32_t cmd_flags,
67 		     uint16_t token,
68 		     int *en);
69 
70 __rte_internal
71 int dpcon_reset(struct fsl_mc_io *mc_io,
72 		uint32_t cmd_flags,
73 		uint16_t token);
74 
75 /**
76  * struct dpcon_attr - Structure representing DPCON attributes
77  * @id:			DPCON object ID
78  * @qbman_ch_id:	Channel ID to be used by dequeue operation
79  * @num_priorities:	Number of priorities for the DPCON channel (1-8)
80  */
81 struct dpcon_attr {
82 	int id;
83 	uint16_t qbman_ch_id;
84 	uint8_t num_priorities;
85 };
86 
87 __rte_internal
88 int dpcon_get_attributes(struct fsl_mc_io *mc_io,
89 			 uint32_t cmd_flags,
90 			 uint16_t token,
91 			 struct dpcon_attr *attr);
92 
93 int dpcon_get_api_version(struct fsl_mc_io *mc_io,
94 			  uint32_t cmd_flags,
95 			  uint16_t *major_ver,
96 			  uint16_t *minor_ver);
97 
98 #endif /* __FSL_DPCON_H */
99