1a2a55e51SPrabhakar Kushwaha /*
2a2a55e51SPrabhakar Kushwaha * Freescale Layerscape MC I/O wrapper
3a2a55e51SPrabhakar Kushwaha *
4a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor, Inc.
5a2a55e51SPrabhakar Kushwaha * Author: German Rivera <German.Rivera@freescale.com>
6a2a55e51SPrabhakar Kushwaha *
7a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+
8a2a55e51SPrabhakar Kushwaha */
9a2a55e51SPrabhakar Kushwaha
10a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_sys.h>
11a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_mc_cmd.h>
12a2a55e51SPrabhakar Kushwaha #include <fsl-mc/fsl_dprc.h>
13a2a55e51SPrabhakar Kushwaha
dprc_get_container_id(struct fsl_mc_io * mc_io,uint32_t cmd_flags,int * container_id)1487457d11SPrabhakar Kushwaha int dprc_get_container_id(struct fsl_mc_io *mc_io,
1587457d11SPrabhakar Kushwaha uint32_t cmd_flags,
1687457d11SPrabhakar Kushwaha int *container_id)
17a2a55e51SPrabhakar Kushwaha {
18a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
19a2a55e51SPrabhakar Kushwaha int err;
20a2a55e51SPrabhakar Kushwaha
21a2a55e51SPrabhakar Kushwaha /* prepare command */
22a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_CONT_ID,
2387457d11SPrabhakar Kushwaha cmd_flags,
2487457d11SPrabhakar Kushwaha 0);
25a2a55e51SPrabhakar Kushwaha
26a2a55e51SPrabhakar Kushwaha /* send command to mc*/
27a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
28a2a55e51SPrabhakar Kushwaha if (err)
29a2a55e51SPrabhakar Kushwaha return err;
30a2a55e51SPrabhakar Kushwaha
31a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
32a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_CONTAINER_ID(cmd, *container_id);
33a2a55e51SPrabhakar Kushwaha
34a2a55e51SPrabhakar Kushwaha return 0;
35a2a55e51SPrabhakar Kushwaha }
36a2a55e51SPrabhakar Kushwaha
dprc_open(struct fsl_mc_io * mc_io,uint32_t cmd_flags,int container_id,uint16_t * token)3787457d11SPrabhakar Kushwaha int dprc_open(struct fsl_mc_io *mc_io,
3887457d11SPrabhakar Kushwaha uint32_t cmd_flags,
3987457d11SPrabhakar Kushwaha int container_id,
4087457d11SPrabhakar Kushwaha uint16_t *token)
41a2a55e51SPrabhakar Kushwaha {
42a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
43a2a55e51SPrabhakar Kushwaha int err;
44a2a55e51SPrabhakar Kushwaha
45a2a55e51SPrabhakar Kushwaha /* prepare command */
4687457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_OPEN, cmd_flags,
47a2a55e51SPrabhakar Kushwaha 0);
48a2a55e51SPrabhakar Kushwaha DPRC_CMD_OPEN(cmd, container_id);
49a2a55e51SPrabhakar Kushwaha
50a2a55e51SPrabhakar Kushwaha /* send command to mc*/
51a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
52a2a55e51SPrabhakar Kushwaha if (err)
53a2a55e51SPrabhakar Kushwaha return err;
54a2a55e51SPrabhakar Kushwaha
55a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
56a2a55e51SPrabhakar Kushwaha *token = MC_CMD_HDR_READ_TOKEN(cmd.header);
57a2a55e51SPrabhakar Kushwaha
58a2a55e51SPrabhakar Kushwaha return 0;
59a2a55e51SPrabhakar Kushwaha }
60a2a55e51SPrabhakar Kushwaha
dprc_close(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token)6187457d11SPrabhakar Kushwaha int dprc_close(struct fsl_mc_io *mc_io,
6287457d11SPrabhakar Kushwaha uint32_t cmd_flags,
6387457d11SPrabhakar Kushwaha uint16_t token)
64a2a55e51SPrabhakar Kushwaha {
65a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
66a2a55e51SPrabhakar Kushwaha
67a2a55e51SPrabhakar Kushwaha /* prepare command */
6887457d11SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_CLOSE, cmd_flags,
69a2a55e51SPrabhakar Kushwaha token);
70a2a55e51SPrabhakar Kushwaha
71a2a55e51SPrabhakar Kushwaha /* send command to mc*/
72a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
73a2a55e51SPrabhakar Kushwaha }
74a2a55e51SPrabhakar Kushwaha
dprc_create_container(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dprc_cfg * cfg,int * child_container_id,uint64_t * child_portal_paddr)75*1ebbe4fcSPrabhakar Kushwaha int dprc_create_container(struct fsl_mc_io *mc_io,
76*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags,
77*1ebbe4fcSPrabhakar Kushwaha uint16_t token,
78*1ebbe4fcSPrabhakar Kushwaha struct dprc_cfg *cfg,
79*1ebbe4fcSPrabhakar Kushwaha int *child_container_id,
80*1ebbe4fcSPrabhakar Kushwaha uint64_t *child_portal_paddr)
81*1ebbe4fcSPrabhakar Kushwaha {
82*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 };
83*1ebbe4fcSPrabhakar Kushwaha int err;
84*1ebbe4fcSPrabhakar Kushwaha
85*1ebbe4fcSPrabhakar Kushwaha /* prepare command */
86*1ebbe4fcSPrabhakar Kushwaha DPRC_CMD_CREATE_CONTAINER(cmd, cfg);
87*1ebbe4fcSPrabhakar Kushwaha
88*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_CREATE_CONT,
89*1ebbe4fcSPrabhakar Kushwaha cmd_flags,
90*1ebbe4fcSPrabhakar Kushwaha token);
91*1ebbe4fcSPrabhakar Kushwaha
92*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/
93*1ebbe4fcSPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
94*1ebbe4fcSPrabhakar Kushwaha if (err)
95*1ebbe4fcSPrabhakar Kushwaha return err;
96*1ebbe4fcSPrabhakar Kushwaha
97*1ebbe4fcSPrabhakar Kushwaha /* retrieve response parameters */
98*1ebbe4fcSPrabhakar Kushwaha DPRC_RSP_CREATE_CONTAINER(cmd, *child_container_id,
99*1ebbe4fcSPrabhakar Kushwaha *child_portal_paddr);
100*1ebbe4fcSPrabhakar Kushwaha
101*1ebbe4fcSPrabhakar Kushwaha return 0;
102*1ebbe4fcSPrabhakar Kushwaha }
103*1ebbe4fcSPrabhakar Kushwaha
dprc_destroy_container(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,int child_container_id)104*1ebbe4fcSPrabhakar Kushwaha int dprc_destroy_container(struct fsl_mc_io *mc_io,
105*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags,
106*1ebbe4fcSPrabhakar Kushwaha uint16_t token,
107*1ebbe4fcSPrabhakar Kushwaha int child_container_id)
108*1ebbe4fcSPrabhakar Kushwaha {
109*1ebbe4fcSPrabhakar Kushwaha struct mc_command cmd = { 0 };
110*1ebbe4fcSPrabhakar Kushwaha
111*1ebbe4fcSPrabhakar Kushwaha /* prepare command */
112*1ebbe4fcSPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_DESTROY_CONT,
113*1ebbe4fcSPrabhakar Kushwaha cmd_flags,
114*1ebbe4fcSPrabhakar Kushwaha token);
115*1ebbe4fcSPrabhakar Kushwaha DPRC_CMD_DESTROY_CONTAINER(cmd, child_container_id);
116*1ebbe4fcSPrabhakar Kushwaha
117*1ebbe4fcSPrabhakar Kushwaha /* send command to mc*/
118*1ebbe4fcSPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
119*1ebbe4fcSPrabhakar Kushwaha }
120*1ebbe4fcSPrabhakar Kushwaha
dprc_reset_container(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,int child_container_id)121a2a55e51SPrabhakar Kushwaha int dprc_reset_container(struct fsl_mc_io *mc_io,
12287457d11SPrabhakar Kushwaha uint32_t cmd_flags,
123a2a55e51SPrabhakar Kushwaha uint16_t token,
124a2a55e51SPrabhakar Kushwaha int child_container_id)
125a2a55e51SPrabhakar Kushwaha {
126a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
127a2a55e51SPrabhakar Kushwaha
128a2a55e51SPrabhakar Kushwaha /* prepare command */
129a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_RESET_CONT,
13087457d11SPrabhakar Kushwaha cmd_flags,
13187457d11SPrabhakar Kushwaha token);
132a2a55e51SPrabhakar Kushwaha DPRC_CMD_RESET_CONTAINER(cmd, child_container_id);
133a2a55e51SPrabhakar Kushwaha
134a2a55e51SPrabhakar Kushwaha /* send command to mc*/
135a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
136a2a55e51SPrabhakar Kushwaha }
137a2a55e51SPrabhakar Kushwaha
dprc_get_attributes(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,struct dprc_attributes * attr)138a2a55e51SPrabhakar Kushwaha int dprc_get_attributes(struct fsl_mc_io *mc_io,
13987457d11SPrabhakar Kushwaha uint32_t cmd_flags,
140a2a55e51SPrabhakar Kushwaha uint16_t token,
141a2a55e51SPrabhakar Kushwaha struct dprc_attributes *attr)
142a2a55e51SPrabhakar Kushwaha {
143a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
144a2a55e51SPrabhakar Kushwaha int err;
145a2a55e51SPrabhakar Kushwaha
146a2a55e51SPrabhakar Kushwaha /* prepare command */
147a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_ATTR,
14887457d11SPrabhakar Kushwaha cmd_flags,
149a2a55e51SPrabhakar Kushwaha token);
150a2a55e51SPrabhakar Kushwaha
151a2a55e51SPrabhakar Kushwaha /* send command to mc*/
152a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
153a2a55e51SPrabhakar Kushwaha if (err)
154a2a55e51SPrabhakar Kushwaha return err;
155a2a55e51SPrabhakar Kushwaha
156a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
157a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_ATTRIBUTES(cmd, attr);
158a2a55e51SPrabhakar Kushwaha
159a2a55e51SPrabhakar Kushwaha return 0;
160a2a55e51SPrabhakar Kushwaha }
161a2a55e51SPrabhakar Kushwaha
dprc_get_obj_count(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,int * obj_count)16287457d11SPrabhakar Kushwaha int dprc_get_obj_count(struct fsl_mc_io *mc_io,
16387457d11SPrabhakar Kushwaha uint32_t cmd_flags,
16487457d11SPrabhakar Kushwaha uint16_t token,
16587457d11SPrabhakar Kushwaha int *obj_count)
166a2a55e51SPrabhakar Kushwaha {
167a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
168a2a55e51SPrabhakar Kushwaha int err;
169a2a55e51SPrabhakar Kushwaha
170a2a55e51SPrabhakar Kushwaha /* prepare command */
171a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_OBJ_COUNT,
17287457d11SPrabhakar Kushwaha cmd_flags,
17387457d11SPrabhakar Kushwaha token);
174a2a55e51SPrabhakar Kushwaha
175a2a55e51SPrabhakar Kushwaha /* send command to mc*/
176a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
177a2a55e51SPrabhakar Kushwaha if (err)
178a2a55e51SPrabhakar Kushwaha return err;
179a2a55e51SPrabhakar Kushwaha
180a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
181a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_OBJ_COUNT(cmd, *obj_count);
182a2a55e51SPrabhakar Kushwaha
183a2a55e51SPrabhakar Kushwaha return 0;
184a2a55e51SPrabhakar Kushwaha }
185a2a55e51SPrabhakar Kushwaha
dprc_get_obj(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,int obj_index,struct dprc_obj_desc * obj_desc)186a2a55e51SPrabhakar Kushwaha int dprc_get_obj(struct fsl_mc_io *mc_io,
18787457d11SPrabhakar Kushwaha uint32_t cmd_flags,
188a2a55e51SPrabhakar Kushwaha uint16_t token,
189a2a55e51SPrabhakar Kushwaha int obj_index,
190a2a55e51SPrabhakar Kushwaha struct dprc_obj_desc *obj_desc)
191a2a55e51SPrabhakar Kushwaha {
192a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
193a2a55e51SPrabhakar Kushwaha int err;
194a2a55e51SPrabhakar Kushwaha
195a2a55e51SPrabhakar Kushwaha /* prepare command */
196a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_OBJ,
19787457d11SPrabhakar Kushwaha cmd_flags,
198a2a55e51SPrabhakar Kushwaha token);
199a2a55e51SPrabhakar Kushwaha DPRC_CMD_GET_OBJ(cmd, obj_index);
200a2a55e51SPrabhakar Kushwaha
201a2a55e51SPrabhakar Kushwaha /* send command to mc*/
202a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
203a2a55e51SPrabhakar Kushwaha if (err)
204a2a55e51SPrabhakar Kushwaha return err;
205a2a55e51SPrabhakar Kushwaha
206a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
207a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_OBJ(cmd, obj_desc);
208a2a55e51SPrabhakar Kushwaha
209a2a55e51SPrabhakar Kushwaha return 0;
210a2a55e51SPrabhakar Kushwaha }
211a2a55e51SPrabhakar Kushwaha
dprc_get_res_count(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,char * type,int * res_count)212a2a55e51SPrabhakar Kushwaha int dprc_get_res_count(struct fsl_mc_io *mc_io,
21387457d11SPrabhakar Kushwaha uint32_t cmd_flags,
214a2a55e51SPrabhakar Kushwaha uint16_t token,
215a2a55e51SPrabhakar Kushwaha char *type,
216a2a55e51SPrabhakar Kushwaha int *res_count)
217a2a55e51SPrabhakar Kushwaha {
218a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
219a2a55e51SPrabhakar Kushwaha int err;
220a2a55e51SPrabhakar Kushwaha
221a2a55e51SPrabhakar Kushwaha *res_count = 0;
222a2a55e51SPrabhakar Kushwaha
223a2a55e51SPrabhakar Kushwaha /* prepare command */
224a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_RES_COUNT,
22587457d11SPrabhakar Kushwaha cmd_flags,
22687457d11SPrabhakar Kushwaha token);
227a2a55e51SPrabhakar Kushwaha DPRC_CMD_GET_RES_COUNT(cmd, type);
228a2a55e51SPrabhakar Kushwaha
229a2a55e51SPrabhakar Kushwaha /* send command to mc*/
230a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
231a2a55e51SPrabhakar Kushwaha if (err)
232a2a55e51SPrabhakar Kushwaha return err;
233a2a55e51SPrabhakar Kushwaha
234a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
235a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_RES_COUNT(cmd, *res_count);
236a2a55e51SPrabhakar Kushwaha
237a2a55e51SPrabhakar Kushwaha return 0;
238a2a55e51SPrabhakar Kushwaha }
239a2a55e51SPrabhakar Kushwaha
dprc_get_res_ids(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,char * type,struct dprc_res_ids_range_desc * range_desc)240a2a55e51SPrabhakar Kushwaha int dprc_get_res_ids(struct fsl_mc_io *mc_io,
24187457d11SPrabhakar Kushwaha uint32_t cmd_flags,
242a2a55e51SPrabhakar Kushwaha uint16_t token,
243a2a55e51SPrabhakar Kushwaha char *type,
244a2a55e51SPrabhakar Kushwaha struct dprc_res_ids_range_desc *range_desc)
245a2a55e51SPrabhakar Kushwaha {
246a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
247a2a55e51SPrabhakar Kushwaha int err;
248a2a55e51SPrabhakar Kushwaha
249a2a55e51SPrabhakar Kushwaha /* prepare command */
250a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_RES_IDS,
25187457d11SPrabhakar Kushwaha cmd_flags,
25287457d11SPrabhakar Kushwaha token);
253a2a55e51SPrabhakar Kushwaha DPRC_CMD_GET_RES_IDS(cmd, range_desc, type);
254a2a55e51SPrabhakar Kushwaha
255a2a55e51SPrabhakar Kushwaha /* send command to mc*/
256a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
257a2a55e51SPrabhakar Kushwaha if (err)
258a2a55e51SPrabhakar Kushwaha return err;
259a2a55e51SPrabhakar Kushwaha
260a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
261a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_RES_IDS(cmd, range_desc);
262a2a55e51SPrabhakar Kushwaha
263a2a55e51SPrabhakar Kushwaha return 0;
264a2a55e51SPrabhakar Kushwaha }
265a2a55e51SPrabhakar Kushwaha
dprc_get_obj_region(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,char * obj_type,int obj_id,uint8_t region_index,struct dprc_region_desc * region_desc)266a2a55e51SPrabhakar Kushwaha int dprc_get_obj_region(struct fsl_mc_io *mc_io,
26787457d11SPrabhakar Kushwaha uint32_t cmd_flags,
268a2a55e51SPrabhakar Kushwaha uint16_t token,
269a2a55e51SPrabhakar Kushwaha char *obj_type,
270a2a55e51SPrabhakar Kushwaha int obj_id,
271a2a55e51SPrabhakar Kushwaha uint8_t region_index,
272a2a55e51SPrabhakar Kushwaha struct dprc_region_desc *region_desc)
273a2a55e51SPrabhakar Kushwaha {
274a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
275a2a55e51SPrabhakar Kushwaha int err;
276a2a55e51SPrabhakar Kushwaha
277a2a55e51SPrabhakar Kushwaha /* prepare command */
278a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_OBJ_REG,
27987457d11SPrabhakar Kushwaha cmd_flags,
28087457d11SPrabhakar Kushwaha token);
281a2a55e51SPrabhakar Kushwaha DPRC_CMD_GET_OBJ_REGION(cmd, obj_type, obj_id, region_index);
282a2a55e51SPrabhakar Kushwaha
283a2a55e51SPrabhakar Kushwaha /* send command to mc*/
284a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
285a2a55e51SPrabhakar Kushwaha if (err)
286a2a55e51SPrabhakar Kushwaha return err;
287a2a55e51SPrabhakar Kushwaha
288a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
289a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_OBJ_REGION(cmd, region_desc);
290a2a55e51SPrabhakar Kushwaha
291a2a55e51SPrabhakar Kushwaha return 0;
292a2a55e51SPrabhakar Kushwaha }
293a2a55e51SPrabhakar Kushwaha
dprc_connect(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dprc_endpoint * endpoint1,const struct dprc_endpoint * endpoint2,const struct dprc_connection_cfg * cfg)294a2a55e51SPrabhakar Kushwaha int dprc_connect(struct fsl_mc_io *mc_io,
29587457d11SPrabhakar Kushwaha uint32_t cmd_flags,
296a2a55e51SPrabhakar Kushwaha uint16_t token,
297a2a55e51SPrabhakar Kushwaha const struct dprc_endpoint *endpoint1,
29887457d11SPrabhakar Kushwaha const struct dprc_endpoint *endpoint2,
29987457d11SPrabhakar Kushwaha const struct dprc_connection_cfg *cfg)
300a2a55e51SPrabhakar Kushwaha {
301a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
302a2a55e51SPrabhakar Kushwaha
303a2a55e51SPrabhakar Kushwaha /* prepare command */
304a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_CONNECT,
30587457d11SPrabhakar Kushwaha cmd_flags,
306a2a55e51SPrabhakar Kushwaha token);
30787457d11SPrabhakar Kushwaha DPRC_CMD_CONNECT(cmd, endpoint1, endpoint2, cfg);
308a2a55e51SPrabhakar Kushwaha
309a2a55e51SPrabhakar Kushwaha /* send command to mc*/
310a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
311a2a55e51SPrabhakar Kushwaha }
312a2a55e51SPrabhakar Kushwaha
dprc_disconnect(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dprc_endpoint * endpoint)313a2a55e51SPrabhakar Kushwaha int dprc_disconnect(struct fsl_mc_io *mc_io,
31487457d11SPrabhakar Kushwaha uint32_t cmd_flags,
315a2a55e51SPrabhakar Kushwaha uint16_t token,
316a2a55e51SPrabhakar Kushwaha const struct dprc_endpoint *endpoint)
317a2a55e51SPrabhakar Kushwaha {
318a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
319a2a55e51SPrabhakar Kushwaha
320a2a55e51SPrabhakar Kushwaha /* prepare command */
321a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_DISCONNECT,
32287457d11SPrabhakar Kushwaha cmd_flags,
323a2a55e51SPrabhakar Kushwaha token);
324a2a55e51SPrabhakar Kushwaha DPRC_CMD_DISCONNECT(cmd, endpoint);
325a2a55e51SPrabhakar Kushwaha
326a2a55e51SPrabhakar Kushwaha /* send command to mc*/
327a2a55e51SPrabhakar Kushwaha return mc_send_command(mc_io, &cmd);
328a2a55e51SPrabhakar Kushwaha }
329a2a55e51SPrabhakar Kushwaha
dprc_get_connection(struct fsl_mc_io * mc_io,uint32_t cmd_flags,uint16_t token,const struct dprc_endpoint * endpoint1,struct dprc_endpoint * endpoint2,int * state)330a2a55e51SPrabhakar Kushwaha int dprc_get_connection(struct fsl_mc_io *mc_io,
33187457d11SPrabhakar Kushwaha uint32_t cmd_flags,
332a2a55e51SPrabhakar Kushwaha uint16_t token,
333a2a55e51SPrabhakar Kushwaha const struct dprc_endpoint *endpoint1,
334a2a55e51SPrabhakar Kushwaha struct dprc_endpoint *endpoint2,
335a2a55e51SPrabhakar Kushwaha int *state)
336a2a55e51SPrabhakar Kushwaha {
337a2a55e51SPrabhakar Kushwaha struct mc_command cmd = { 0 };
338a2a55e51SPrabhakar Kushwaha int err;
339a2a55e51SPrabhakar Kushwaha
340a2a55e51SPrabhakar Kushwaha /* prepare command */
341a2a55e51SPrabhakar Kushwaha cmd.header = mc_encode_cmd_header(DPRC_CMDID_GET_CONNECTION,
34287457d11SPrabhakar Kushwaha cmd_flags,
343a2a55e51SPrabhakar Kushwaha token);
344a2a55e51SPrabhakar Kushwaha DPRC_CMD_GET_CONNECTION(cmd, endpoint1);
345a2a55e51SPrabhakar Kushwaha
346a2a55e51SPrabhakar Kushwaha /* send command to mc*/
347a2a55e51SPrabhakar Kushwaha err = mc_send_command(mc_io, &cmd);
348a2a55e51SPrabhakar Kushwaha if (err)
349a2a55e51SPrabhakar Kushwaha return err;
350a2a55e51SPrabhakar Kushwaha
351a2a55e51SPrabhakar Kushwaha /* retrieve response parameters */
352a2a55e51SPrabhakar Kushwaha DPRC_RSP_GET_CONNECTION(cmd, endpoint2, *state);
353a2a55e51SPrabhakar Kushwaha
354a2a55e51SPrabhakar Kushwaha return 0;
355a2a55e51SPrabhakar Kushwaha }
356