xref: /rk3399_rockchip-uboot/drivers/net/fsl-mc/dpni.c (revision cd85bec36d0e0d16fedb00e0c434ed070a9c6b37)
1a2a55e51SPrabhakar Kushwaha /*
2a2a55e51SPrabhakar Kushwaha  * Copyright (C) 2013-2015 Freescale Semiconductor
3a2a55e51SPrabhakar Kushwaha  *
4a2a55e51SPrabhakar Kushwaha  * SPDX-License-Identifier:	GPL-2.0+
5a2a55e51SPrabhakar Kushwaha  */
6a2a55e51SPrabhakar Kushwaha 
7a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h>
8a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h>
9a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dpni.h>
10a2a55e51SPrabhakar Kushwaha 
dpni_prepare_extended_cfg(const struct dpni_extended_cfg * cfg,uint8_t * ext_cfg_buf)11*53e353fcSPrabhakar Kushwaha int dpni_prepare_extended_cfg(const struct dpni_extended_cfg	*cfg,
12*53e353fcSPrabhakar Kushwaha 			      uint8_t			*ext_cfg_buf)
13*53e353fcSPrabhakar Kushwaha {
14*53e353fcSPrabhakar Kushwaha 	uint64_t *ext_params = (uint64_t *)ext_cfg_buf;
15*53e353fcSPrabhakar Kushwaha 
16*53e353fcSPrabhakar Kushwaha 	DPNI_PREP_EXTENDED_CFG(ext_params, cfg);
17*53e353fcSPrabhakar Kushwaha 
18*53e353fcSPrabhakar Kushwaha 	return 0;
19*53e353fcSPrabhakar Kushwaha }
20*53e353fcSPrabhakar Kushwaha 
dpni_extract_extended_cfg(struct dpni_extended_cfg * cfg,const uint8_t * ext_cfg_buf)21*53e353fcSPrabhakar Kushwaha int dpni_extract_extended_cfg(struct dpni_extended_cfg	*cfg,
22*53e353fcSPrabhakar Kushwaha 			      const uint8_t		*ext_cfg_buf)
23*53e353fcSPrabhakar Kushwaha {
24*53e353fcSPrabhakar Kushwaha 	uint64_t *ext_params = (uint64_t *)ext_cfg_buf;
25*53e353fcSPrabhakar Kushwaha 
26*53e353fcSPrabhakar Kushwaha 	DPNI_EXT_EXTENDED_CFG(ext_params, cfg);
27*53e353fcSPrabhakar Kushwaha 
28*53e353fcSPrabhakar Kushwaha 	return 0;
29*53e353fcSPrabhakar Kushwaha }
30*53e353fcSPrabhakar Kushwaha 
dpni_open(struct fsl_mc_io * mc_io,uint32_t cmd_flags,int dpni_id,uint16_t * token)3187457d11SPrabhakar Kushwaha int dpni_open(struct fsl_mc_io *mc_io,
3287457d11SPrabhakar Kushwaha 	      uint32_t cmd_flags,
3387457d11SPrabhakar Kushwaha 	      int dpni_id,
3487457d11SPrabhakar Kushwaha 	      uint16_t *token)
35a2a55e51SPrabhakar Kushwaha {
36a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
37a2a55e51SPrabhakar Kushwaha 	int err;
38a2a55e51SPrabhakar Kushwaha 
39a2a55e51SPrabhakar Kushwaha 	/* prepare command */
40a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_OPEN,
4187457d11SPrabhakar Kushwaha 					  cmd_flags,
4287457d11SPrabhakar Kushwaha 					  0);
43a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_OPEN(cmd, dpni_id);
44a2a55e51SPrabhakar Kushwaha 
45a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
46a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
47a2a55e51SPrabhakar Kushwaha 	if (err)
48a2a55e51SPrabhakar Kushwaha 		return err;
49a2a55e51SPrabhakar Kushwaha 
50a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
51a2a55e51SPrabhakar Kushwaha 	*token = MC_CMD_HDR_READ_TOKEN(cmd.header);
52a2a55e51SPrabhakar Kushwaha 
53a2a55e51SPrabhakar Kushwaha 	return 0;
54a2a55e51SPrabhakar Kushwaha }
55a2a55e51SPrabhakar Kushwaha 
dpni_close(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)5687457d11SPrabhakar Kushwaha int dpni_close(struct fsl_mc_io *mc_io,
5787457d11SPrabhakar Kushwaha 	       uint32_t cmd_flags,
5887457d11SPrabhakar Kushwaha 	       uint16_t token)
59a2a55e51SPrabhakar Kushwaha {
60a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
61a2a55e51SPrabhakar Kushwaha 
62a2a55e51SPrabhakar Kushwaha 	/* prepare command */
63a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_CLOSE,
6487457d11SPrabhakar Kushwaha 					  cmd_flags,
6587457d11SPrabhakar Kushwaha 					  token);
66a2a55e51SPrabhakar Kushwaha 
67a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
68a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
69a2a55e51SPrabhakar Kushwaha }
70a2a55e51SPrabhakar Kushwaha 
dpni_create(struct fsl_mc_io * mc_io,uint32_t cmd_flags,const struct dpni_cfg * cfg,uint16_t * token)711ebbe4fcSPrabhakar Kushwaha int dpni_create(struct fsl_mc_io *mc_io,
721ebbe4fcSPrabhakar Kushwaha 		uint32_t cmd_flags,
731ebbe4fcSPrabhakar Kushwaha 		const struct dpni_cfg *cfg,
741ebbe4fcSPrabhakar Kushwaha 		uint16_t *token)
751ebbe4fcSPrabhakar Kushwaha {
761ebbe4fcSPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
771ebbe4fcSPrabhakar Kushwaha 	int err;
781ebbe4fcSPrabhakar Kushwaha 
791ebbe4fcSPrabhakar Kushwaha 	/* prepare command */
801ebbe4fcSPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_CREATE,
811ebbe4fcSPrabhakar Kushwaha 					  cmd_flags,
821ebbe4fcSPrabhakar Kushwaha 					  0);
831ebbe4fcSPrabhakar Kushwaha 	DPNI_CMD_CREATE(cmd, cfg);
841ebbe4fcSPrabhakar Kushwaha 
851ebbe4fcSPrabhakar Kushwaha 	/* send command to mc*/
861ebbe4fcSPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
871ebbe4fcSPrabhakar Kushwaha 	if (err)
881ebbe4fcSPrabhakar Kushwaha 		return err;
891ebbe4fcSPrabhakar Kushwaha 
901ebbe4fcSPrabhakar Kushwaha 	/* retrieve response parameters */
911ebbe4fcSPrabhakar Kushwaha 	*token = MC_CMD_HDR_READ_TOKEN(cmd.header);
921ebbe4fcSPrabhakar Kushwaha 
931ebbe4fcSPrabhakar Kushwaha 	return 0;
941ebbe4fcSPrabhakar Kushwaha }
951ebbe4fcSPrabhakar Kushwaha 
dpni_destroy(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)961ebbe4fcSPrabhakar Kushwaha int dpni_destroy(struct fsl_mc_io *mc_io,
971ebbe4fcSPrabhakar Kushwaha 		 uint32_t cmd_flags,
981ebbe4fcSPrabhakar Kushwaha 		 uint16_t token)
991ebbe4fcSPrabhakar Kushwaha {
1001ebbe4fcSPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
1011ebbe4fcSPrabhakar Kushwaha 
1021ebbe4fcSPrabhakar Kushwaha 	/* prepare command */
1031ebbe4fcSPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_DESTROY,
1041ebbe4fcSPrabhakar Kushwaha 					  cmd_flags,
1051ebbe4fcSPrabhakar Kushwaha 					  token);
1061ebbe4fcSPrabhakar Kushwaha 
1071ebbe4fcSPrabhakar Kushwaha 	/* send command to mc*/
1081ebbe4fcSPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
1091ebbe4fcSPrabhakar Kushwaha }
1101ebbe4fcSPrabhakar Kushwaha 
dpni_set_pools(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dpni_pools_cfg * cfg)111a2a55e51SPrabhakar Kushwaha int dpni_set_pools(struct fsl_mc_io *mc_io,
11287457d11SPrabhakar Kushwaha 		   uint32_t cmd_flags,
113a2a55e51SPrabhakar Kushwaha 		   uint16_t token,
114a2a55e51SPrabhakar Kushwaha 		   const struct dpni_pools_cfg *cfg)
115a2a55e51SPrabhakar Kushwaha {
116a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
117a2a55e51SPrabhakar Kushwaha 
118a2a55e51SPrabhakar Kushwaha 	/* prepare command */
119a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_POOLS,
12087457d11SPrabhakar Kushwaha 					  cmd_flags,
121a2a55e51SPrabhakar Kushwaha 					  token);
122a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_POOLS(cmd, cfg);
123a2a55e51SPrabhakar Kushwaha 
124a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
125a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
126a2a55e51SPrabhakar Kushwaha }
127a2a55e51SPrabhakar Kushwaha 
dpni_enable(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)12887457d11SPrabhakar Kushwaha int dpni_enable(struct fsl_mc_io *mc_io,
12987457d11SPrabhakar Kushwaha 		uint32_t cmd_flags,
13087457d11SPrabhakar Kushwaha 		uint16_t token)
131a2a55e51SPrabhakar Kushwaha {
132a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
133a2a55e51SPrabhakar Kushwaha 
134a2a55e51SPrabhakar Kushwaha 	/* prepare command */
135a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_ENABLE,
13687457d11SPrabhakar Kushwaha 					  cmd_flags,
137a2a55e51SPrabhakar Kushwaha 					  token);
138a2a55e51SPrabhakar Kushwaha 
139a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
140a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
141a2a55e51SPrabhakar Kushwaha }
142a2a55e51SPrabhakar Kushwaha 
dpni_disable(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)14387457d11SPrabhakar Kushwaha int dpni_disable(struct fsl_mc_io *mc_io,
14487457d11SPrabhakar Kushwaha 		 uint32_t cmd_flags,
14587457d11SPrabhakar Kushwaha 		 uint16_t token)
14687457d11SPrabhakar Kushwaha {
14787457d11SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
14887457d11SPrabhakar Kushwaha 
14987457d11SPrabhakar Kushwaha 	/* prepare command */
15087457d11SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_DISABLE,
15187457d11SPrabhakar Kushwaha 					  cmd_flags,
15287457d11SPrabhakar Kushwaha 					  token);
15387457d11SPrabhakar Kushwaha 
15487457d11SPrabhakar Kushwaha 	/* send command to mc*/
15587457d11SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
15687457d11SPrabhakar Kushwaha }
15787457d11SPrabhakar Kushwaha 
dpni_reset(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)15887457d11SPrabhakar Kushwaha int dpni_reset(struct fsl_mc_io *mc_io,
15987457d11SPrabhakar Kushwaha 	       uint32_t cmd_flags,
16087457d11SPrabhakar Kushwaha 	       uint16_t token)
161a2a55e51SPrabhakar Kushwaha {
162a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
163a2a55e51SPrabhakar Kushwaha 
164a2a55e51SPrabhakar Kushwaha 	/* prepare command */
165a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_RESET,
16687457d11SPrabhakar Kushwaha 					  cmd_flags,
16787457d11SPrabhakar Kushwaha 					  token);
168a2a55e51SPrabhakar Kushwaha 
169a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
170a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
171a2a55e51SPrabhakar Kushwaha }
172a2a55e51SPrabhakar Kushwaha 
dpni_get_attributes(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpni_attr * attr)173a2a55e51SPrabhakar Kushwaha int dpni_get_attributes(struct fsl_mc_io *mc_io,
17487457d11SPrabhakar Kushwaha 			uint32_t cmd_flags,
175a2a55e51SPrabhakar Kushwaha 			uint16_t token,
176a2a55e51SPrabhakar Kushwaha 			struct dpni_attr *attr)
177a2a55e51SPrabhakar Kushwaha {
178a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
179a2a55e51SPrabhakar Kushwaha 	int err;
180a2a55e51SPrabhakar Kushwaha 
181a2a55e51SPrabhakar Kushwaha 	/* prepare command */
182a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_ATTR,
18387457d11SPrabhakar Kushwaha 					  cmd_flags,
184a2a55e51SPrabhakar Kushwaha 					  token);
185*53e353fcSPrabhakar Kushwaha 	DPNI_CMD_GET_ATTR(cmd, attr);
186a2a55e51SPrabhakar Kushwaha 
187a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
188a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
189a2a55e51SPrabhakar Kushwaha 	if (err)
190a2a55e51SPrabhakar Kushwaha 		return err;
191a2a55e51SPrabhakar Kushwaha 
192a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
193a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_ATTR(cmd, attr);
194a2a55e51SPrabhakar Kushwaha 
195a2a55e51SPrabhakar Kushwaha 	return 0;
196a2a55e51SPrabhakar Kushwaha }
197a2a55e51SPrabhakar Kushwaha 
dpni_set_errors_behavior(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpni_error_cfg * cfg)198*53e353fcSPrabhakar Kushwaha int dpni_set_errors_behavior(struct fsl_mc_io *mc_io,
199*53e353fcSPrabhakar Kushwaha 			     uint32_t cmd_flags,
200*53e353fcSPrabhakar Kushwaha 			     uint16_t token,
201*53e353fcSPrabhakar Kushwaha 			      struct dpni_error_cfg *cfg)
202*53e353fcSPrabhakar Kushwaha {
203*53e353fcSPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
204*53e353fcSPrabhakar Kushwaha 
205*53e353fcSPrabhakar Kushwaha 	/* prepare command */
206*53e353fcSPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_ERRORS_BEHAVIOR,
207*53e353fcSPrabhakar Kushwaha 					  cmd_flags,
208*53e353fcSPrabhakar Kushwaha 					  token);
209*53e353fcSPrabhakar Kushwaha 	DPNI_CMD_SET_ERRORS_BEHAVIOR(cmd, cfg);
210*53e353fcSPrabhakar Kushwaha 
211*53e353fcSPrabhakar Kushwaha 	/* send command to mc*/
212*53e353fcSPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
213*53e353fcSPrabhakar Kushwaha }
214*53e353fcSPrabhakar Kushwaha 
dpni_get_rx_buffer_layout(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpni_buffer_layout * layout)215a2a55e51SPrabhakar Kushwaha int dpni_get_rx_buffer_layout(struct fsl_mc_io *mc_io,
21687457d11SPrabhakar Kushwaha 			      uint32_t cmd_flags,
217a2a55e51SPrabhakar Kushwaha 			      uint16_t token,
218a2a55e51SPrabhakar Kushwaha 			      struct dpni_buffer_layout *layout)
219a2a55e51SPrabhakar Kushwaha {
220a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
221a2a55e51SPrabhakar Kushwaha 	int err;
222a2a55e51SPrabhakar Kushwaha 
223a2a55e51SPrabhakar Kushwaha 	/* prepare command */
224a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_RX_BUFFER_LAYOUT,
22587457d11SPrabhakar Kushwaha 					  cmd_flags,
22687457d11SPrabhakar Kushwaha 					  token);
227a2a55e51SPrabhakar Kushwaha 
228a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
229a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
230a2a55e51SPrabhakar Kushwaha 	if (err)
231a2a55e51SPrabhakar Kushwaha 		return err;
232a2a55e51SPrabhakar Kushwaha 
233a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
234a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_RX_BUFFER_LAYOUT(cmd, layout);
235a2a55e51SPrabhakar Kushwaha 
236a2a55e51SPrabhakar Kushwaha 	return 0;
237a2a55e51SPrabhakar Kushwaha }
238a2a55e51SPrabhakar Kushwaha 
dpni_set_rx_buffer_layout(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dpni_buffer_layout * layout)239a2a55e51SPrabhakar Kushwaha int dpni_set_rx_buffer_layout(struct fsl_mc_io *mc_io,
24087457d11SPrabhakar Kushwaha 			      uint32_t cmd_flags,
241a2a55e51SPrabhakar Kushwaha 			      uint16_t token,
242a2a55e51SPrabhakar Kushwaha 			      const struct dpni_buffer_layout *layout)
243a2a55e51SPrabhakar Kushwaha {
244a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
245a2a55e51SPrabhakar Kushwaha 
246a2a55e51SPrabhakar Kushwaha 	/* prepare command */
247a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_RX_BUFFER_LAYOUT,
24887457d11SPrabhakar Kushwaha 					  cmd_flags,
24987457d11SPrabhakar Kushwaha 					  token);
250a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_RX_BUFFER_LAYOUT(cmd, layout);
251a2a55e51SPrabhakar Kushwaha 
252a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
253a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
254a2a55e51SPrabhakar Kushwaha }
255a2a55e51SPrabhakar Kushwaha 
dpni_get_tx_buffer_layout(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpni_buffer_layout * layout)256a2a55e51SPrabhakar Kushwaha int dpni_get_tx_buffer_layout(struct fsl_mc_io *mc_io,
25787457d11SPrabhakar Kushwaha 			      uint32_t cmd_flags,
258a2a55e51SPrabhakar Kushwaha 			      uint16_t token,
259a2a55e51SPrabhakar Kushwaha 			      struct dpni_buffer_layout *layout)
260a2a55e51SPrabhakar Kushwaha {
261a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
262a2a55e51SPrabhakar Kushwaha 	int err;
263a2a55e51SPrabhakar Kushwaha 
264a2a55e51SPrabhakar Kushwaha 	/* prepare command */
265a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_TX_BUFFER_LAYOUT,
26687457d11SPrabhakar Kushwaha 					  cmd_flags,
26787457d11SPrabhakar Kushwaha 					  token);
268a2a55e51SPrabhakar Kushwaha 
269a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
270a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
271a2a55e51SPrabhakar Kushwaha 	if (err)
272a2a55e51SPrabhakar Kushwaha 		return err;
273a2a55e51SPrabhakar Kushwaha 
274a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
275a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_TX_BUFFER_LAYOUT(cmd, layout);
276a2a55e51SPrabhakar Kushwaha 
277a2a55e51SPrabhakar Kushwaha 	return 0;
278a2a55e51SPrabhakar Kushwaha }
279a2a55e51SPrabhakar Kushwaha 
dpni_set_tx_buffer_layout(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dpni_buffer_layout * layout)280a2a55e51SPrabhakar Kushwaha int dpni_set_tx_buffer_layout(struct fsl_mc_io *mc_io,
28187457d11SPrabhakar Kushwaha 			      uint32_t cmd_flags,
282a2a55e51SPrabhakar Kushwaha 			      uint16_t token,
283a2a55e51SPrabhakar Kushwaha 			      const struct dpni_buffer_layout *layout)
284a2a55e51SPrabhakar Kushwaha {
285a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
286a2a55e51SPrabhakar Kushwaha 
287a2a55e51SPrabhakar Kushwaha 	/* prepare command */
288a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_BUFFER_LAYOUT,
28987457d11SPrabhakar Kushwaha 					  cmd_flags,
29087457d11SPrabhakar Kushwaha 					  token);
291a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_TX_BUFFER_LAYOUT(cmd, layout);
292a2a55e51SPrabhakar Kushwaha 
293a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
294a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
295a2a55e51SPrabhakar Kushwaha }
296a2a55e51SPrabhakar Kushwaha 
dpni_get_tx_conf_buffer_layout(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpni_buffer_layout * layout)297a2a55e51SPrabhakar Kushwaha int dpni_get_tx_conf_buffer_layout(struct fsl_mc_io *mc_io,
29887457d11SPrabhakar Kushwaha 				   uint32_t cmd_flags,
299a2a55e51SPrabhakar Kushwaha 				   uint16_t token,
300a2a55e51SPrabhakar Kushwaha 				   struct dpni_buffer_layout *layout)
301a2a55e51SPrabhakar Kushwaha {
302a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
303a2a55e51SPrabhakar Kushwaha 	int err;
304a2a55e51SPrabhakar Kushwaha 
305a2a55e51SPrabhakar Kushwaha 	/* prepare command */
306a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_TX_CONF_BUFFER_LAYOUT,
30787457d11SPrabhakar Kushwaha 					  cmd_flags,
30887457d11SPrabhakar Kushwaha 					  token);
309a2a55e51SPrabhakar Kushwaha 
310a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
311a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
312a2a55e51SPrabhakar Kushwaha 	if (err)
313a2a55e51SPrabhakar Kushwaha 		return err;
314a2a55e51SPrabhakar Kushwaha 
315a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
316a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_TX_CONF_BUFFER_LAYOUT(cmd, layout);
317a2a55e51SPrabhakar Kushwaha 
318a2a55e51SPrabhakar Kushwaha 	return 0;
319a2a55e51SPrabhakar Kushwaha }
320a2a55e51SPrabhakar Kushwaha 
dpni_set_tx_conf_buffer_layout(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dpni_buffer_layout * layout)321a2a55e51SPrabhakar Kushwaha int dpni_set_tx_conf_buffer_layout(struct fsl_mc_io *mc_io,
32287457d11SPrabhakar Kushwaha 				   uint32_t cmd_flags,
323a2a55e51SPrabhakar Kushwaha 				   uint16_t token,
324a2a55e51SPrabhakar Kushwaha 				   const struct dpni_buffer_layout *layout)
325a2a55e51SPrabhakar Kushwaha {
326a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
327a2a55e51SPrabhakar Kushwaha 
328a2a55e51SPrabhakar Kushwaha 	/* prepare command */
329a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_CONF_BUFFER_LAYOUT,
33087457d11SPrabhakar Kushwaha 					  cmd_flags,
33187457d11SPrabhakar Kushwaha 					  token);
332a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_TX_CONF_BUFFER_LAYOUT(cmd, layout);
333a2a55e51SPrabhakar Kushwaha 
334a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
335a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
336a2a55e51SPrabhakar Kushwaha }
337a2a55e51SPrabhakar Kushwaha 
dpni_get_qdid(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint16_t * qdid)33887457d11SPrabhakar Kushwaha int dpni_get_qdid(struct fsl_mc_io *mc_io,
33987457d11SPrabhakar Kushwaha 		  uint32_t cmd_flags,
34087457d11SPrabhakar Kushwaha 		  uint16_t token,
34187457d11SPrabhakar Kushwaha 		  uint16_t *qdid)
342a2a55e51SPrabhakar Kushwaha {
343a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
344a2a55e51SPrabhakar Kushwaha 	int err;
345a2a55e51SPrabhakar Kushwaha 
346a2a55e51SPrabhakar Kushwaha 	/* prepare command */
347a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_QDID,
34887457d11SPrabhakar Kushwaha 					  cmd_flags,
349a2a55e51SPrabhakar Kushwaha 					  token);
350a2a55e51SPrabhakar Kushwaha 
351a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
352a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
353a2a55e51SPrabhakar Kushwaha 	if (err)
354a2a55e51SPrabhakar Kushwaha 		return err;
355a2a55e51SPrabhakar Kushwaha 
356a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
357a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_QDID(cmd, *qdid);
358a2a55e51SPrabhakar Kushwaha 
359a2a55e51SPrabhakar Kushwaha 	return 0;
360a2a55e51SPrabhakar Kushwaha }
361a2a55e51SPrabhakar Kushwaha 
dpni_get_tx_data_offset(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint16_t * data_offset)362a2a55e51SPrabhakar Kushwaha int dpni_get_tx_data_offset(struct fsl_mc_io *mc_io,
36387457d11SPrabhakar Kushwaha 			    uint32_t cmd_flags,
364a2a55e51SPrabhakar Kushwaha 			    uint16_t token,
365a2a55e51SPrabhakar Kushwaha 			    uint16_t *data_offset)
366a2a55e51SPrabhakar Kushwaha {
367a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
368a2a55e51SPrabhakar Kushwaha 	int err;
369a2a55e51SPrabhakar Kushwaha 
370a2a55e51SPrabhakar Kushwaha 	/* prepare command */
371a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_TX_DATA_OFFSET,
37287457d11SPrabhakar Kushwaha 					  cmd_flags,
37387457d11SPrabhakar Kushwaha 					  token);
374a2a55e51SPrabhakar Kushwaha 
375a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
376a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
377a2a55e51SPrabhakar Kushwaha 	if (err)
378a2a55e51SPrabhakar Kushwaha 		return err;
379a2a55e51SPrabhakar Kushwaha 
380a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
381a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_TX_DATA_OFFSET(cmd, *data_offset);
382a2a55e51SPrabhakar Kushwaha 
383a2a55e51SPrabhakar Kushwaha 	return 0;
384a2a55e51SPrabhakar Kushwaha }
385a2a55e51SPrabhakar Kushwaha 
dpni_get_counter(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,enum dpni_counter counter,uint64_t * value)386a2a55e51SPrabhakar Kushwaha int dpni_get_counter(struct fsl_mc_io *mc_io,
38787457d11SPrabhakar Kushwaha 		     uint32_t cmd_flags,
388a2a55e51SPrabhakar Kushwaha 		     uint16_t token,
389a2a55e51SPrabhakar Kushwaha 		     enum dpni_counter counter,
390a2a55e51SPrabhakar Kushwaha 		     uint64_t *value)
391a2a55e51SPrabhakar Kushwaha {
392a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
393a2a55e51SPrabhakar Kushwaha 	int err;
394a2a55e51SPrabhakar Kushwaha 
395a2a55e51SPrabhakar Kushwaha 	/* prepare command */
396a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_COUNTER,
39787457d11SPrabhakar Kushwaha 					  cmd_flags,
39887457d11SPrabhakar Kushwaha 					  token);
399a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_GET_COUNTER(cmd, counter);
400a2a55e51SPrabhakar Kushwaha 
401a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
402a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
403a2a55e51SPrabhakar Kushwaha 	if (err)
404a2a55e51SPrabhakar Kushwaha 		return err;
405a2a55e51SPrabhakar Kushwaha 
406a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
407a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_COUNTER(cmd, *value);
408a2a55e51SPrabhakar Kushwaha 
409a2a55e51SPrabhakar Kushwaha 	return 0;
410a2a55e51SPrabhakar Kushwaha }
411a2a55e51SPrabhakar Kushwaha 
dpni_set_counter(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,enum dpni_counter counter,uint64_t value)412a2a55e51SPrabhakar Kushwaha int dpni_set_counter(struct fsl_mc_io *mc_io,
41387457d11SPrabhakar Kushwaha 		     uint32_t cmd_flags,
414a2a55e51SPrabhakar Kushwaha 		     uint16_t token,
415a2a55e51SPrabhakar Kushwaha 		     enum dpni_counter counter,
416a2a55e51SPrabhakar Kushwaha 		     uint64_t value)
417a2a55e51SPrabhakar Kushwaha {
418a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
419a2a55e51SPrabhakar Kushwaha 
420a2a55e51SPrabhakar Kushwaha 	/* prepare command */
421a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_COUNTER,
42287457d11SPrabhakar Kushwaha 					  cmd_flags,
42387457d11SPrabhakar Kushwaha 					  token);
424a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_COUNTER(cmd, counter, value);
425a2a55e51SPrabhakar Kushwaha 
426a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
427a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
428a2a55e51SPrabhakar Kushwaha }
429a2a55e51SPrabhakar Kushwaha 
dpni_set_link_cfg(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dpni_link_cfg * cfg)430a2a55e51SPrabhakar Kushwaha int dpni_set_link_cfg(struct fsl_mc_io *mc_io,
43187457d11SPrabhakar Kushwaha 		      uint32_t cmd_flags,
432a2a55e51SPrabhakar Kushwaha 		      uint16_t token,
4331f1c25c7SPrabhakar Kushwaha 		      const struct dpni_link_cfg *cfg)
434a2a55e51SPrabhakar Kushwaha {
435a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
436a2a55e51SPrabhakar Kushwaha 
437a2a55e51SPrabhakar Kushwaha 	/* prepare command */
438a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_LINK_CFG,
43987457d11SPrabhakar Kushwaha 					  cmd_flags,
44087457d11SPrabhakar Kushwaha 					  token);
441a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_LINK_CFG(cmd, cfg);
442a2a55e51SPrabhakar Kushwaha 
443a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
444a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
445a2a55e51SPrabhakar Kushwaha }
446a2a55e51SPrabhakar Kushwaha 
dpni_get_link_state(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dpni_link_state * state)447a2a55e51SPrabhakar Kushwaha int dpni_get_link_state(struct fsl_mc_io *mc_io,
44887457d11SPrabhakar Kushwaha 			uint32_t cmd_flags,
449a2a55e51SPrabhakar Kushwaha 			uint16_t token,
450a2a55e51SPrabhakar Kushwaha 			struct dpni_link_state *state)
451a2a55e51SPrabhakar Kushwaha {
452a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
453a2a55e51SPrabhakar Kushwaha 	int err;
454a2a55e51SPrabhakar Kushwaha 
455a2a55e51SPrabhakar Kushwaha 	/* prepare command */
456a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_LINK_STATE,
45787457d11SPrabhakar Kushwaha 					  cmd_flags,
45887457d11SPrabhakar Kushwaha 					  token);
459a2a55e51SPrabhakar Kushwaha 
460a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
461a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
462a2a55e51SPrabhakar Kushwaha 	if (err)
463a2a55e51SPrabhakar Kushwaha 		return err;
464a2a55e51SPrabhakar Kushwaha 
465a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
466a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_LINK_STATE(cmd, state);
467a2a55e51SPrabhakar Kushwaha 
468a2a55e51SPrabhakar Kushwaha 	return 0;
469a2a55e51SPrabhakar Kushwaha }
470a2a55e51SPrabhakar Kushwaha 
471a2a55e51SPrabhakar Kushwaha 
dpni_set_primary_mac_addr(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const uint8_t mac_addr[6])472a2a55e51SPrabhakar Kushwaha int dpni_set_primary_mac_addr(struct fsl_mc_io *mc_io,
47387457d11SPrabhakar Kushwaha 			      uint32_t cmd_flags,
474a2a55e51SPrabhakar Kushwaha 			      uint16_t token,
475a2a55e51SPrabhakar Kushwaha 			      const uint8_t mac_addr[6])
476a2a55e51SPrabhakar Kushwaha {
477a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
478a2a55e51SPrabhakar Kushwaha 
479a2a55e51SPrabhakar Kushwaha 	/* prepare command */
480a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_PRIM_MAC,
48187457d11SPrabhakar Kushwaha 					  cmd_flags,
48287457d11SPrabhakar Kushwaha 					  token);
483a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_PRIMARY_MAC_ADDR(cmd, mac_addr);
484a2a55e51SPrabhakar Kushwaha 
485a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
486a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
487a2a55e51SPrabhakar Kushwaha }
488a2a55e51SPrabhakar Kushwaha 
dpni_get_primary_mac_addr(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint8_t mac_addr[6])489a2a55e51SPrabhakar Kushwaha int dpni_get_primary_mac_addr(struct fsl_mc_io *mc_io,
49087457d11SPrabhakar Kushwaha 			      uint32_t cmd_flags,
491a2a55e51SPrabhakar Kushwaha 			      uint16_t token,
492a2a55e51SPrabhakar Kushwaha 			      uint8_t mac_addr[6])
493a2a55e51SPrabhakar Kushwaha {
494a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
495a2a55e51SPrabhakar Kushwaha 	int err;
496a2a55e51SPrabhakar Kushwaha 
497a2a55e51SPrabhakar Kushwaha 	/* prepare command */
498a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_PRIM_MAC,
49987457d11SPrabhakar Kushwaha 					  cmd_flags,
50087457d11SPrabhakar Kushwaha 					  token);
501a2a55e51SPrabhakar Kushwaha 
502a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
503a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
504a2a55e51SPrabhakar Kushwaha 	if (err)
505a2a55e51SPrabhakar Kushwaha 		return err;
506a2a55e51SPrabhakar Kushwaha 
507a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
508a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_PRIMARY_MAC_ADDR(cmd, mac_addr);
509a2a55e51SPrabhakar Kushwaha 
510a2a55e51SPrabhakar Kushwaha 	return 0;
511a2a55e51SPrabhakar Kushwaha }
512a2a55e51SPrabhakar Kushwaha 
dpni_add_mac_addr(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const uint8_t mac_addr[6])513a2a55e51SPrabhakar Kushwaha int dpni_add_mac_addr(struct fsl_mc_io *mc_io,
51487457d11SPrabhakar Kushwaha 		      uint32_t cmd_flags,
515a2a55e51SPrabhakar Kushwaha 		      uint16_t token,
516a2a55e51SPrabhakar Kushwaha 		      const uint8_t mac_addr[6])
517a2a55e51SPrabhakar Kushwaha {
518a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
519a2a55e51SPrabhakar Kushwaha 
520a2a55e51SPrabhakar Kushwaha 	/* prepare command */
521a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_ADD_MAC_ADDR,
52287457d11SPrabhakar Kushwaha 					  cmd_flags,
52387457d11SPrabhakar Kushwaha 					  token);
524a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_ADD_MAC_ADDR(cmd, mac_addr);
525a2a55e51SPrabhakar Kushwaha 
526a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
527a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
528a2a55e51SPrabhakar Kushwaha }
529a2a55e51SPrabhakar Kushwaha 
dpni_remove_mac_addr(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const uint8_t mac_addr[6])530a2a55e51SPrabhakar Kushwaha int dpni_remove_mac_addr(struct fsl_mc_io *mc_io,
53187457d11SPrabhakar Kushwaha 			 uint32_t cmd_flags,
532a2a55e51SPrabhakar Kushwaha 			 uint16_t token,
533a2a55e51SPrabhakar Kushwaha 			 const uint8_t mac_addr[6])
534a2a55e51SPrabhakar Kushwaha {
535a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
536a2a55e51SPrabhakar Kushwaha 
537a2a55e51SPrabhakar Kushwaha 	/* prepare command */
538a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_REMOVE_MAC_ADDR,
53987457d11SPrabhakar Kushwaha 					  cmd_flags,
54087457d11SPrabhakar Kushwaha 					  token);
541a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_REMOVE_MAC_ADDR(cmd, mac_addr);
542a2a55e51SPrabhakar Kushwaha 
543a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
544a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
545a2a55e51SPrabhakar Kushwaha }
546a2a55e51SPrabhakar Kushwaha 
dpni_set_tx_flow(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint16_t * flow_id,const struct dpni_tx_flow_cfg * cfg)547a2a55e51SPrabhakar Kushwaha int dpni_set_tx_flow(struct fsl_mc_io *mc_io,
54887457d11SPrabhakar Kushwaha 		     uint32_t cmd_flags,
549a2a55e51SPrabhakar Kushwaha 		     uint16_t token,
550a2a55e51SPrabhakar Kushwaha 		     uint16_t *flow_id,
551a2a55e51SPrabhakar Kushwaha 		     const struct dpni_tx_flow_cfg *cfg)
552a2a55e51SPrabhakar Kushwaha {
553a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
554a2a55e51SPrabhakar Kushwaha 	int err;
555a2a55e51SPrabhakar Kushwaha 
556a2a55e51SPrabhakar Kushwaha 	/* prepare command */
557a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_FLOW,
55887457d11SPrabhakar Kushwaha 					  cmd_flags,
55987457d11SPrabhakar Kushwaha 					  token);
560a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_TX_FLOW(cmd, *flow_id, cfg);
561a2a55e51SPrabhakar Kushwaha 
562a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
563a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
564a2a55e51SPrabhakar Kushwaha 	if (err)
565a2a55e51SPrabhakar Kushwaha 		return err;
566a2a55e51SPrabhakar Kushwaha 
567a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
568a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_SET_TX_FLOW(cmd, *flow_id);
569a2a55e51SPrabhakar Kushwaha 
570a2a55e51SPrabhakar Kushwaha 	return 0;
571a2a55e51SPrabhakar Kushwaha }
572a2a55e51SPrabhakar Kushwaha 
dpni_get_tx_flow(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint16_t flow_id,struct dpni_tx_flow_attr * attr)573a2a55e51SPrabhakar Kushwaha int dpni_get_tx_flow(struct fsl_mc_io *mc_io,
57487457d11SPrabhakar Kushwaha 		     uint32_t cmd_flags,
575a2a55e51SPrabhakar Kushwaha 		     uint16_t token,
576a2a55e51SPrabhakar Kushwaha 		     uint16_t flow_id,
577a2a55e51SPrabhakar Kushwaha 		     struct dpni_tx_flow_attr *attr)
578a2a55e51SPrabhakar Kushwaha {
579a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
580a2a55e51SPrabhakar Kushwaha 	int err;
581a2a55e51SPrabhakar Kushwaha 
582a2a55e51SPrabhakar Kushwaha 	/* prepare command */
583a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_TX_FLOW,
58487457d11SPrabhakar Kushwaha 					  cmd_flags,
58587457d11SPrabhakar Kushwaha 					  token);
586a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_GET_TX_FLOW(cmd, flow_id);
587a2a55e51SPrabhakar Kushwaha 
588a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
589a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
590a2a55e51SPrabhakar Kushwaha 	if (err)
591a2a55e51SPrabhakar Kushwaha 		return err;
592a2a55e51SPrabhakar Kushwaha 
593a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
594a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_TX_FLOW(cmd, attr);
595a2a55e51SPrabhakar Kushwaha 
596a2a55e51SPrabhakar Kushwaha 	return 0;
597a2a55e51SPrabhakar Kushwaha }
598a2a55e51SPrabhakar Kushwaha 
dpni_set_rx_flow(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint8_t tc_id,uint16_t flow_id,const struct dpni_queue_cfg * cfg)599a2a55e51SPrabhakar Kushwaha int dpni_set_rx_flow(struct fsl_mc_io *mc_io,
60087457d11SPrabhakar Kushwaha 		     uint32_t cmd_flags,
601a2a55e51SPrabhakar Kushwaha 		     uint16_t token,
602a2a55e51SPrabhakar Kushwaha 		     uint8_t tc_id,
603a2a55e51SPrabhakar Kushwaha 		     uint16_t flow_id,
604a2a55e51SPrabhakar Kushwaha 		     const struct dpni_queue_cfg *cfg)
605a2a55e51SPrabhakar Kushwaha {
606a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
607a2a55e51SPrabhakar Kushwaha 
608a2a55e51SPrabhakar Kushwaha 	/* prepare command */
609a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_RX_FLOW,
61087457d11SPrabhakar Kushwaha 					  cmd_flags,
61187457d11SPrabhakar Kushwaha 					  token);
612a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_SET_RX_FLOW(cmd, tc_id, flow_id, cfg);
613a2a55e51SPrabhakar Kushwaha 
614a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
615a2a55e51SPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
616a2a55e51SPrabhakar Kushwaha }
617a2a55e51SPrabhakar Kushwaha 
dpni_get_rx_flow(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint8_t tc_id,uint16_t flow_id,struct dpni_queue_attr * attr)618a2a55e51SPrabhakar Kushwaha int dpni_get_rx_flow(struct fsl_mc_io *mc_io,
61987457d11SPrabhakar Kushwaha 		     uint32_t cmd_flags,
620a2a55e51SPrabhakar Kushwaha 		     uint16_t token,
621a2a55e51SPrabhakar Kushwaha 		     uint8_t tc_id,
622a2a55e51SPrabhakar Kushwaha 		     uint16_t flow_id,
623a2a55e51SPrabhakar Kushwaha 		     struct dpni_queue_attr *attr)
624a2a55e51SPrabhakar Kushwaha {
625a2a55e51SPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
626a2a55e51SPrabhakar Kushwaha 	int err;
627a2a55e51SPrabhakar Kushwaha 	/* prepare command */
628a2a55e51SPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_RX_FLOW,
62987457d11SPrabhakar Kushwaha 					  cmd_flags,
63087457d11SPrabhakar Kushwaha 					  token);
631a2a55e51SPrabhakar Kushwaha 	DPNI_CMD_GET_RX_FLOW(cmd, tc_id, flow_id);
632a2a55e51SPrabhakar Kushwaha 
633a2a55e51SPrabhakar Kushwaha 	/* send command to mc*/
634a2a55e51SPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
635a2a55e51SPrabhakar Kushwaha 	if (err)
636a2a55e51SPrabhakar Kushwaha 		return err;
637a2a55e51SPrabhakar Kushwaha 
638a2a55e51SPrabhakar Kushwaha 	/* retrieve response parameters */
639a2a55e51SPrabhakar Kushwaha 	DPNI_RSP_GET_RX_FLOW(cmd, attr);
640a2a55e51SPrabhakar Kushwaha 
641a2a55e51SPrabhakar Kushwaha 	return 0;
642a2a55e51SPrabhakar Kushwaha }
643*53e353fcSPrabhakar Kushwaha 
dpni_set_tx_conf(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint16_t flow_id,const struct dpni_tx_conf_cfg * cfg)644*53e353fcSPrabhakar Kushwaha int dpni_set_tx_conf(struct fsl_mc_io	*mc_io,
645*53e353fcSPrabhakar Kushwaha 		     uint32_t		cmd_flags,
646*53e353fcSPrabhakar Kushwaha 		     uint16_t		token,
647*53e353fcSPrabhakar Kushwaha 		     uint16_t		flow_id,
648*53e353fcSPrabhakar Kushwaha 		     const struct dpni_tx_conf_cfg	*cfg)
649*53e353fcSPrabhakar Kushwaha {
650*53e353fcSPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
651*53e353fcSPrabhakar Kushwaha 
652*53e353fcSPrabhakar Kushwaha 	/* prepare command */
653*53e353fcSPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_SET_TX_CONF,
654*53e353fcSPrabhakar Kushwaha 					  cmd_flags,
655*53e353fcSPrabhakar Kushwaha 					  token);
656*53e353fcSPrabhakar Kushwaha 	DPNI_CMD_SET_TX_CONF(cmd, flow_id, cfg);
657*53e353fcSPrabhakar Kushwaha 
658*53e353fcSPrabhakar Kushwaha 	/* send command to mc*/
659*53e353fcSPrabhakar Kushwaha 	return mc_send_command(mc_io, &cmd);
660*53e353fcSPrabhakar Kushwaha }
661*53e353fcSPrabhakar Kushwaha 
dpni_get_tx_conf(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,uint16_t flow_id,struct dpni_tx_conf_attr * attr)662*53e353fcSPrabhakar Kushwaha int dpni_get_tx_conf(struct fsl_mc_io		*mc_io,
663*53e353fcSPrabhakar Kushwaha 		     uint32_t			cmd_flags,
664*53e353fcSPrabhakar Kushwaha 		     uint16_t			token,
665*53e353fcSPrabhakar Kushwaha 		     uint16_t			flow_id,
666*53e353fcSPrabhakar Kushwaha 		     struct dpni_tx_conf_attr	*attr)
667*53e353fcSPrabhakar Kushwaha {
668*53e353fcSPrabhakar Kushwaha 	struct mc_command cmd = { 0 };
669*53e353fcSPrabhakar Kushwaha 	int err;
670*53e353fcSPrabhakar Kushwaha 
671*53e353fcSPrabhakar Kushwaha 	/* prepare command */
672*53e353fcSPrabhakar Kushwaha 	cmd.header = mc_encode_cmd_header(DPNI_CMDID_GET_TX_CONF,
673*53e353fcSPrabhakar Kushwaha 					  cmd_flags,
674*53e353fcSPrabhakar Kushwaha 					  token);
675*53e353fcSPrabhakar Kushwaha 	DPNI_CMD_GET_TX_CONF(cmd, flow_id);
676*53e353fcSPrabhakar Kushwaha 
677*53e353fcSPrabhakar Kushwaha 	/* send command to mc*/
678*53e353fcSPrabhakar Kushwaha 	err = mc_send_command(mc_io, &cmd);
679*53e353fcSPrabhakar Kushwaha 	if (err)
680*53e353fcSPrabhakar Kushwaha 		return err;
681*53e353fcSPrabhakar Kushwaha 
682*53e353fcSPrabhakar Kushwaha 	DPNI_RSP_GET_TX_CONF(cmd, attr);
683*53e353fcSPrabhakar Kushwaha 
684*53e353fcSPrabhakar Kushwaha 	return 0;
685*53e353fcSPrabhakar Kushwaha }
686