xref: /linux/drivers/crypto/caam/dpseci.h (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
1f9cb74fdSHoria Geantă /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
2f9cb74fdSHoria Geantă /*
3f9cb74fdSHoria Geantă  * Copyright 2013-2016 Freescale Semiconductor Inc.
4f9cb74fdSHoria Geantă  * Copyright 2017-2018 NXP
5f9cb74fdSHoria Geantă  */
6f9cb74fdSHoria Geantă #ifndef _DPSECI_H_
7f9cb74fdSHoria Geantă #define _DPSECI_H_
8f9cb74fdSHoria Geantă 
9f9cb74fdSHoria Geantă /*
10f9cb74fdSHoria Geantă  * Data Path SEC Interface API
11f9cb74fdSHoria Geantă  * Contains initialization APIs and runtime control APIs for DPSECI
12f9cb74fdSHoria Geantă  */
13f9cb74fdSHoria Geantă 
14f9cb74fdSHoria Geantă struct fsl_mc_io;
15f9cb74fdSHoria Geantă 
16f9cb74fdSHoria Geantă /**
17f9cb74fdSHoria Geantă  * General DPSECI macros
18f9cb74fdSHoria Geantă  */
19f9cb74fdSHoria Geantă 
20f9cb74fdSHoria Geantă /**
21f9cb74fdSHoria Geantă  * Maximum number of Tx/Rx queues per DPSECI object
22f9cb74fdSHoria Geantă  */
23f9cb74fdSHoria Geantă #define DPSECI_MAX_QUEUE_NUM		16
24f9cb74fdSHoria Geantă 
25f9cb74fdSHoria Geantă /**
26f9cb74fdSHoria Geantă  * All queues considered; see dpseci_set_rx_queue()
27f9cb74fdSHoria Geantă  */
28f9cb74fdSHoria Geantă #define DPSECI_ALL_QUEUES	(u8)(-1)
29f9cb74fdSHoria Geantă 
30f9cb74fdSHoria Geantă int dpseci_open(struct fsl_mc_io *mc_io, u32 cmd_flags, int dpseci_id,
31f9cb74fdSHoria Geantă 		u16 *token);
32f9cb74fdSHoria Geantă 
33f9cb74fdSHoria Geantă int dpseci_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
34f9cb74fdSHoria Geantă 
35f9cb74fdSHoria Geantă /**
36f9cb74fdSHoria Geantă  * Enable the Congestion Group support
37f9cb74fdSHoria Geantă  */
38f9cb74fdSHoria Geantă #define DPSECI_OPT_HAS_CG		0x000020
39f9cb74fdSHoria Geantă 
40f9cb74fdSHoria Geantă /**
41f9cb74fdSHoria Geantă  * struct dpseci_cfg - Structure representing DPSECI configuration
42f9cb74fdSHoria Geantă  * @options: Any combination of the following flags:
43f9cb74fdSHoria Geantă  *		DPSECI_OPT_HAS_CG
44f9cb74fdSHoria Geantă  * @num_tx_queues: num of queues towards the SEC
45f9cb74fdSHoria Geantă  * @num_rx_queues: num of queues back from the SEC
46f9cb74fdSHoria Geantă  * @priorities: Priorities for the SEC hardware processing;
47f9cb74fdSHoria Geantă  *		each place in the array is the priority of the tx queue
48f9cb74fdSHoria Geantă  *		towards the SEC;
49f9cb74fdSHoria Geantă  *		valid priorities are configured with values 1-8;
50f9cb74fdSHoria Geantă  */
51f9cb74fdSHoria Geantă struct dpseci_cfg {
52f9cb74fdSHoria Geantă 	u32 options;
53f9cb74fdSHoria Geantă 	u8 num_tx_queues;
54f9cb74fdSHoria Geantă 	u8 num_rx_queues;
55f9cb74fdSHoria Geantă 	u8 priorities[DPSECI_MAX_QUEUE_NUM];
56f9cb74fdSHoria Geantă };
57f9cb74fdSHoria Geantă 
58f9cb74fdSHoria Geantă int dpseci_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
59f9cb74fdSHoria Geantă 
60f9cb74fdSHoria Geantă int dpseci_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
61f9cb74fdSHoria Geantă 
62*060ce503SAndrei Botila int dpseci_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
63*060ce503SAndrei Botila 
64f9cb74fdSHoria Geantă int dpseci_is_enabled(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
65f9cb74fdSHoria Geantă 		      int *en);
66f9cb74fdSHoria Geantă 
67f9cb74fdSHoria Geantă /**
68f9cb74fdSHoria Geantă  * struct dpseci_attr - Structure representing DPSECI attributes
69f9cb74fdSHoria Geantă  * @id: DPSECI object ID
70f9cb74fdSHoria Geantă  * @num_tx_queues: number of queues towards the SEC
71f9cb74fdSHoria Geantă  * @num_rx_queues: number of queues back from the SEC
72f9cb74fdSHoria Geantă  * @options: any combination of the following flags:
73f9cb74fdSHoria Geantă  *		DPSECI_OPT_HAS_CG
74f9cb74fdSHoria Geantă  */
75f9cb74fdSHoria Geantă struct dpseci_attr {
76f9cb74fdSHoria Geantă 	int id;
77f9cb74fdSHoria Geantă 	u8 num_tx_queues;
78f9cb74fdSHoria Geantă 	u8 num_rx_queues;
79f9cb74fdSHoria Geantă 	u32 options;
80f9cb74fdSHoria Geantă };
81f9cb74fdSHoria Geantă 
82f9cb74fdSHoria Geantă int dpseci_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
83f9cb74fdSHoria Geantă 			  struct dpseci_attr *attr);
84f9cb74fdSHoria Geantă 
85f9cb74fdSHoria Geantă /**
86f9cb74fdSHoria Geantă  * enum dpseci_dest - DPSECI destination types
87f9cb74fdSHoria Geantă  * @DPSECI_DEST_NONE: Unassigned destination; The queue is set in parked mode
88f9cb74fdSHoria Geantă  *	and does not generate FQDAN notifications; user is expected to dequeue
89f9cb74fdSHoria Geantă  *	from the queue based on polling or other user-defined method
90f9cb74fdSHoria Geantă  * @DPSECI_DEST_DPIO: The queue is set in schedule mode and generates FQDAN
91f9cb74fdSHoria Geantă  *	notifications to the specified DPIO; user is expected to dequeue from
92f9cb74fdSHoria Geantă  *	the queue only after notification is received
93f9cb74fdSHoria Geantă  * @DPSECI_DEST_DPCON: The queue is set in schedule mode and does not generate
94f9cb74fdSHoria Geantă  *	FQDAN notifications, but is connected to the specified DPCON object;
95f9cb74fdSHoria Geantă  *	user is expected to dequeue from the DPCON channel
96f9cb74fdSHoria Geantă  */
97f9cb74fdSHoria Geantă enum dpseci_dest {
98f9cb74fdSHoria Geantă 	DPSECI_DEST_NONE = 0,
99f9cb74fdSHoria Geantă 	DPSECI_DEST_DPIO,
100f9cb74fdSHoria Geantă 	DPSECI_DEST_DPCON
101f9cb74fdSHoria Geantă };
102f9cb74fdSHoria Geantă 
103f9cb74fdSHoria Geantă /**
104f9cb74fdSHoria Geantă  * struct dpseci_dest_cfg - Structure representing DPSECI destination parameters
105f9cb74fdSHoria Geantă  * @dest_type: Destination type
106f9cb74fdSHoria Geantă  * @dest_id: Either DPIO ID or DPCON ID, depending on the destination type
107f9cb74fdSHoria Geantă  * @priority: Priority selection within the DPIO or DPCON channel; valid values
108f9cb74fdSHoria Geantă  *	are 0-1 or 0-7, depending on the number of priorities in that channel;
109f9cb74fdSHoria Geantă  *	not relevant for 'DPSECI_DEST_NONE' option
110f9cb74fdSHoria Geantă  */
111f9cb74fdSHoria Geantă struct dpseci_dest_cfg {
112f9cb74fdSHoria Geantă 	enum dpseci_dest dest_type;
113f9cb74fdSHoria Geantă 	int dest_id;
114f9cb74fdSHoria Geantă 	u8 priority;
115f9cb74fdSHoria Geantă };
116f9cb74fdSHoria Geantă 
117f9cb74fdSHoria Geantă /**
118f9cb74fdSHoria Geantă  * DPSECI queue modification options
119f9cb74fdSHoria Geantă  */
120f9cb74fdSHoria Geantă 
121f9cb74fdSHoria Geantă /**
122f9cb74fdSHoria Geantă  * Select to modify the user's context associated with the queue
123f9cb74fdSHoria Geantă  */
124f9cb74fdSHoria Geantă #define DPSECI_QUEUE_OPT_USER_CTX		0x00000001
125f9cb74fdSHoria Geantă 
126f9cb74fdSHoria Geantă /**
127f9cb74fdSHoria Geantă  * Select to modify the queue's destination
128f9cb74fdSHoria Geantă  */
129f9cb74fdSHoria Geantă #define DPSECI_QUEUE_OPT_DEST			0x00000002
130f9cb74fdSHoria Geantă 
131f9cb74fdSHoria Geantă /**
132f9cb74fdSHoria Geantă  * Select to modify the queue's order preservation
133f9cb74fdSHoria Geantă  */
134f9cb74fdSHoria Geantă #define DPSECI_QUEUE_OPT_ORDER_PRESERVATION	0x00000004
135f9cb74fdSHoria Geantă 
136f9cb74fdSHoria Geantă /**
137f9cb74fdSHoria Geantă  * struct dpseci_rx_queue_cfg - DPSECI RX queue configuration
138f9cb74fdSHoria Geantă  * @options: Flags representing the suggested modifications to the queue;
139f9cb74fdSHoria Geantă  *	Use any combination of 'DPSECI_QUEUE_OPT_<X>' flags
140f9cb74fdSHoria Geantă  * @order_preservation_en: order preservation configuration for the rx queue
141f9cb74fdSHoria Geantă  * valid only if 'DPSECI_QUEUE_OPT_ORDER_PRESERVATION' is contained in 'options'
142f9cb74fdSHoria Geantă  * @user_ctx: User context value provided in the frame descriptor of each
143f9cb74fdSHoria Geantă  *	dequeued frame;	valid only if 'DPSECI_QUEUE_OPT_USER_CTX' is contained
144f9cb74fdSHoria Geantă  *	in 'options'
145f9cb74fdSHoria Geantă  * @dest_cfg: Queue destination parameters; valid only if
146f9cb74fdSHoria Geantă  *	'DPSECI_QUEUE_OPT_DEST' is contained in 'options'
147f9cb74fdSHoria Geantă  */
148f9cb74fdSHoria Geantă struct dpseci_rx_queue_cfg {
149f9cb74fdSHoria Geantă 	u32 options;
150f9cb74fdSHoria Geantă 	int order_preservation_en;
151f9cb74fdSHoria Geantă 	u64 user_ctx;
152f9cb74fdSHoria Geantă 	struct dpseci_dest_cfg dest_cfg;
153f9cb74fdSHoria Geantă };
154f9cb74fdSHoria Geantă 
155f9cb74fdSHoria Geantă int dpseci_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
156f9cb74fdSHoria Geantă 			u8 queue, const struct dpseci_rx_queue_cfg *cfg);
157f9cb74fdSHoria Geantă 
158f9cb74fdSHoria Geantă /**
159f9cb74fdSHoria Geantă  * struct dpseci_rx_queue_attr - Structure representing attributes of Rx queues
160f9cb74fdSHoria Geantă  * @user_ctx: User context value provided in the frame descriptor of each
161f9cb74fdSHoria Geantă  *	dequeued frame
162f9cb74fdSHoria Geantă  * @order_preservation_en: Status of the order preservation configuration on the
163f9cb74fdSHoria Geantă  *	queue
164f9cb74fdSHoria Geantă  * @dest_cfg: Queue destination configuration
165f9cb74fdSHoria Geantă  * @fqid: Virtual FQID value to be used for dequeue operations
166f9cb74fdSHoria Geantă  */
167f9cb74fdSHoria Geantă struct dpseci_rx_queue_attr {
168f9cb74fdSHoria Geantă 	u64 user_ctx;
169f9cb74fdSHoria Geantă 	int order_preservation_en;
170f9cb74fdSHoria Geantă 	struct dpseci_dest_cfg dest_cfg;
171f9cb74fdSHoria Geantă 	u32 fqid;
172f9cb74fdSHoria Geantă };
173f9cb74fdSHoria Geantă 
174f9cb74fdSHoria Geantă int dpseci_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
175f9cb74fdSHoria Geantă 			u8 queue, struct dpseci_rx_queue_attr *attr);
176f9cb74fdSHoria Geantă 
177f9cb74fdSHoria Geantă /**
178f9cb74fdSHoria Geantă  * struct dpseci_tx_queue_attr - Structure representing attributes of Tx queues
179f9cb74fdSHoria Geantă  * @fqid: Virtual FQID to be used for sending frames to SEC hardware
180f9cb74fdSHoria Geantă  * @priority: SEC hardware processing priority for the queue
181f9cb74fdSHoria Geantă  */
182f9cb74fdSHoria Geantă struct dpseci_tx_queue_attr {
183f9cb74fdSHoria Geantă 	u32 fqid;
184f9cb74fdSHoria Geantă 	u8 priority;
185f9cb74fdSHoria Geantă };
186f9cb74fdSHoria Geantă 
187f9cb74fdSHoria Geantă int dpseci_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
188f9cb74fdSHoria Geantă 			u8 queue, struct dpseci_tx_queue_attr *attr);
189f9cb74fdSHoria Geantă 
190f9cb74fdSHoria Geantă /**
191f9cb74fdSHoria Geantă  * struct dpseci_sec_attr - Structure representing attributes of the SEC
192f9cb74fdSHoria Geantă  *	hardware accelerator
193f9cb74fdSHoria Geantă  * @ip_id: ID for SEC
194f9cb74fdSHoria Geantă  * @major_rev: Major revision number for SEC
195f9cb74fdSHoria Geantă  * @minor_rev: Minor revision number for SEC
196f9cb74fdSHoria Geantă  * @era: SEC Era
197f9cb74fdSHoria Geantă  * @deco_num: The number of copies of the DECO that are implemented in this
198f9cb74fdSHoria Geantă  *	version of SEC
199f9cb74fdSHoria Geantă  * @zuc_auth_acc_num: The number of copies of ZUCA that are implemented in this
200f9cb74fdSHoria Geantă  *	version of SEC
201f9cb74fdSHoria Geantă  * @zuc_enc_acc_num: The number of copies of ZUCE that are implemented in this
202f9cb74fdSHoria Geantă  *	version of SEC
203f9cb74fdSHoria Geantă  * @snow_f8_acc_num: The number of copies of the SNOW-f8 module that are
204f9cb74fdSHoria Geantă  *	implemented in this version of SEC
205f9cb74fdSHoria Geantă  * @snow_f9_acc_num: The number of copies of the SNOW-f9 module that are
206f9cb74fdSHoria Geantă  *	implemented in this version of SEC
207f9cb74fdSHoria Geantă  * @crc_acc_num: The number of copies of the CRC module that are implemented in
208f9cb74fdSHoria Geantă  *	this version of SEC
209f9cb74fdSHoria Geantă  * @pk_acc_num:  The number of copies of the Public Key module that are
210f9cb74fdSHoria Geantă  *	implemented in this version of SEC
211f9cb74fdSHoria Geantă  * @kasumi_acc_num: The number of copies of the Kasumi module that are
212f9cb74fdSHoria Geantă  *	implemented in this version of SEC
213f9cb74fdSHoria Geantă  * @rng_acc_num: The number of copies of the Random Number Generator that are
214f9cb74fdSHoria Geantă  *	implemented in this version of SEC
215f9cb74fdSHoria Geantă  * @md_acc_num: The number of copies of the MDHA (Hashing module) that are
216f9cb74fdSHoria Geantă  *	implemented in this version of SEC
217f9cb74fdSHoria Geantă  * @arc4_acc_num: The number of copies of the ARC4 module that are implemented
218f9cb74fdSHoria Geantă  *	in this version of SEC
219f9cb74fdSHoria Geantă  * @des_acc_num: The number of copies of the DES module that are implemented in
220f9cb74fdSHoria Geantă  *	this version of SEC
221f9cb74fdSHoria Geantă  * @aes_acc_num: The number of copies of the AES module that are implemented in
222f9cb74fdSHoria Geantă  *	this version of SEC
223f9cb74fdSHoria Geantă  * @ccha_acc_num: The number of copies of the ChaCha20 module that are
224f9cb74fdSHoria Geantă  *	implemented in this version of SEC.
225f9cb74fdSHoria Geantă  * @ptha_acc_num: The number of copies of the Poly1305 module that are
226f9cb74fdSHoria Geantă  *	implemented in this version of SEC.
227f9cb74fdSHoria Geantă  **/
228f9cb74fdSHoria Geantă struct dpseci_sec_attr {
229f9cb74fdSHoria Geantă 	u16 ip_id;
230f9cb74fdSHoria Geantă 	u8 major_rev;
231f9cb74fdSHoria Geantă 	u8 minor_rev;
232f9cb74fdSHoria Geantă 	u8 era;
233f9cb74fdSHoria Geantă 	u8 deco_num;
234f9cb74fdSHoria Geantă 	u8 zuc_auth_acc_num;
235f9cb74fdSHoria Geantă 	u8 zuc_enc_acc_num;
236f9cb74fdSHoria Geantă 	u8 snow_f8_acc_num;
237f9cb74fdSHoria Geantă 	u8 snow_f9_acc_num;
238f9cb74fdSHoria Geantă 	u8 crc_acc_num;
239f9cb74fdSHoria Geantă 	u8 pk_acc_num;
240f9cb74fdSHoria Geantă 	u8 kasumi_acc_num;
241f9cb74fdSHoria Geantă 	u8 rng_acc_num;
242f9cb74fdSHoria Geantă 	u8 md_acc_num;
243f9cb74fdSHoria Geantă 	u8 arc4_acc_num;
244f9cb74fdSHoria Geantă 	u8 des_acc_num;
245f9cb74fdSHoria Geantă 	u8 aes_acc_num;
246f9cb74fdSHoria Geantă 	u8 ccha_acc_num;
247f9cb74fdSHoria Geantă 	u8 ptha_acc_num;
248f9cb74fdSHoria Geantă };
249f9cb74fdSHoria Geantă 
250f9cb74fdSHoria Geantă int dpseci_get_sec_attr(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
251f9cb74fdSHoria Geantă 			struct dpseci_sec_attr *attr);
252f9cb74fdSHoria Geantă 
253f9cb74fdSHoria Geantă int dpseci_get_api_version(struct fsl_mc_io *mc_io, u32 cmd_flags,
254f9cb74fdSHoria Geantă 			   u16 *major_ver, u16 *minor_ver);
255f9cb74fdSHoria Geantă 
256f9cb74fdSHoria Geantă /**
257f9cb74fdSHoria Geantă  * enum dpseci_congestion_unit - DPSECI congestion units
258f9cb74fdSHoria Geantă  * @DPSECI_CONGESTION_UNIT_BYTES: bytes units
259f9cb74fdSHoria Geantă  * @DPSECI_CONGESTION_UNIT_FRAMES: frames units
260f9cb74fdSHoria Geantă  */
261f9cb74fdSHoria Geantă enum dpseci_congestion_unit {
262f9cb74fdSHoria Geantă 	DPSECI_CONGESTION_UNIT_BYTES = 0,
263f9cb74fdSHoria Geantă 	DPSECI_CONGESTION_UNIT_FRAMES
264f9cb74fdSHoria Geantă };
265f9cb74fdSHoria Geantă 
266f9cb74fdSHoria Geantă /**
267f9cb74fdSHoria Geantă  * CSCN message is written to message_iova once entering a
268f9cb74fdSHoria Geantă  * congestion state (see 'threshold_entry')
269f9cb74fdSHoria Geantă  */
270f9cb74fdSHoria Geantă #define DPSECI_CGN_MODE_WRITE_MEM_ON_ENTER		0x00000001
271f9cb74fdSHoria Geantă 
272f9cb74fdSHoria Geantă /**
273f9cb74fdSHoria Geantă  * CSCN message is written to message_iova once exiting a
274f9cb74fdSHoria Geantă  * congestion state (see 'threshold_exit')
275f9cb74fdSHoria Geantă  */
276f9cb74fdSHoria Geantă #define DPSECI_CGN_MODE_WRITE_MEM_ON_EXIT		0x00000002
277f9cb74fdSHoria Geantă 
278f9cb74fdSHoria Geantă /**
279f9cb74fdSHoria Geantă  * CSCN write will attempt to allocate into a cache (coherent write);
280f9cb74fdSHoria Geantă  * valid only if 'DPSECI_CGN_MODE_WRITE_MEM_<X>' is selected
281f9cb74fdSHoria Geantă  */
282f9cb74fdSHoria Geantă #define DPSECI_CGN_MODE_COHERENT_WRITE			0x00000004
283f9cb74fdSHoria Geantă 
284f9cb74fdSHoria Geantă /**
285f9cb74fdSHoria Geantă  * if 'dpseci_dest_cfg.dest_type != DPSECI_DEST_NONE' CSCN message is sent to
286f9cb74fdSHoria Geantă  * DPIO/DPCON's WQ channel once entering a congestion state
287f9cb74fdSHoria Geantă  * (see 'threshold_entry')
288f9cb74fdSHoria Geantă  */
289f9cb74fdSHoria Geantă #define DPSECI_CGN_MODE_NOTIFY_DEST_ON_ENTER		0x00000008
290f9cb74fdSHoria Geantă 
291f9cb74fdSHoria Geantă /**
292f9cb74fdSHoria Geantă  * if 'dpseci_dest_cfg.dest_type != DPSECI_DEST_NONE' CSCN message is sent to
293f9cb74fdSHoria Geantă  * DPIO/DPCON's WQ channel once exiting a congestion state
294f9cb74fdSHoria Geantă  * (see 'threshold_exit')
295f9cb74fdSHoria Geantă  */
296f9cb74fdSHoria Geantă #define DPSECI_CGN_MODE_NOTIFY_DEST_ON_EXIT		0x00000010
297f9cb74fdSHoria Geantă 
298f9cb74fdSHoria Geantă /**
299f9cb74fdSHoria Geantă  * if 'dpseci_dest_cfg.dest_type != DPSECI_DEST_NONE' when the CSCN is written
300f9cb74fdSHoria Geantă  * to the sw-portal's DQRR, the DQRI interrupt is asserted immediately
301f9cb74fdSHoria Geantă  * (if enabled)
302f9cb74fdSHoria Geantă  */
303f9cb74fdSHoria Geantă #define DPSECI_CGN_MODE_INTR_COALESCING_DISABLED	0x00000020
304f9cb74fdSHoria Geantă 
305f9cb74fdSHoria Geantă /**
306f9cb74fdSHoria Geantă  * struct dpseci_congestion_notification_cfg - congestion notification
307f9cb74fdSHoria Geantă  *	configuration
308f9cb74fdSHoria Geantă  * @units: units type
309f9cb74fdSHoria Geantă  * @threshold_entry: above this threshold we enter a congestion state.
310f9cb74fdSHoria Geantă  *	set it to '0' to disable it
311f9cb74fdSHoria Geantă  * @threshold_exit: below this threshold we exit the congestion state.
312f9cb74fdSHoria Geantă  * @message_ctx: The context that will be part of the CSCN message
313f9cb74fdSHoria Geantă  * @message_iova: I/O virtual address (must be in DMA-able memory),
314f9cb74fdSHoria Geantă  *	must be 16B aligned;
315f9cb74fdSHoria Geantă  * @dest_cfg: CSCN can be send to either DPIO or DPCON WQ channel
316f9cb74fdSHoria Geantă  * @notification_mode: Mask of available options; use 'DPSECI_CGN_MODE_<X>'
317f9cb74fdSHoria Geantă  *	values
318f9cb74fdSHoria Geantă  */
319f9cb74fdSHoria Geantă struct dpseci_congestion_notification_cfg {
320f9cb74fdSHoria Geantă 	enum dpseci_congestion_unit units;
321f9cb74fdSHoria Geantă 	u32 threshold_entry;
322f9cb74fdSHoria Geantă 	u32 threshold_exit;
323f9cb74fdSHoria Geantă 	u64 message_ctx;
324f9cb74fdSHoria Geantă 	u64 message_iova;
325f9cb74fdSHoria Geantă 	struct dpseci_dest_cfg dest_cfg;
326f9cb74fdSHoria Geantă 	u16 notification_mode;
327f9cb74fdSHoria Geantă };
328f9cb74fdSHoria Geantă 
329f9cb74fdSHoria Geantă int dpseci_set_congestion_notification(struct fsl_mc_io *mc_io, u32 cmd_flags,
330f9cb74fdSHoria Geantă 	u16 token, const struct dpseci_congestion_notification_cfg *cfg);
331f9cb74fdSHoria Geantă 
332f9cb74fdSHoria Geantă int dpseci_get_congestion_notification(struct fsl_mc_io *mc_io, u32 cmd_flags,
333f9cb74fdSHoria Geantă 	u16 token, struct dpseci_congestion_notification_cfg *cfg);
334f9cb74fdSHoria Geantă 
335f9cb74fdSHoria Geantă #endif /* _DPSECI_H_ */
336