xref: /rk3399_rockchip-uboot/include/fsl-mc/fsl_dprc.h (revision cd85bec36d0e0d16fedb00e0c434ed070a9c6b37)
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 #ifndef _FSL_DPRC_H
10a2a55e51SPrabhakar Kushwaha #define _FSL_DPRC_H
11a2a55e51SPrabhakar Kushwaha 
12a2a55e51SPrabhakar Kushwaha /* DPRC Version */
1387457d11SPrabhakar Kushwaha #define DPRC_VER_MAJOR				5
14*53e353fcSPrabhakar Kushwaha #define DPRC_VER_MINOR				1
15a2a55e51SPrabhakar Kushwaha 
16a2a55e51SPrabhakar Kushwaha /* Command IDs */
17a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_CLOSE			0x800
18a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_OPEN				0x805
191ebbe4fcSPrabhakar Kushwaha #define DPRC_CMDID_CREATE			0x905
20a2a55e51SPrabhakar Kushwaha 
21a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_ATTR			0x004
22a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_RESET_CONT			0x005
23a2a55e51SPrabhakar Kushwaha 
241ebbe4fcSPrabhakar Kushwaha #define DPRC_CMDID_CREATE_CONT			0x151
251ebbe4fcSPrabhakar Kushwaha #define DPRC_CMDID_DESTROY_CONT			0x152
26a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_CONT_ID			0x830
27a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_OBJ_COUNT		0x159
28a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_OBJ			0x15A
29a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_RES_COUNT		0x15B
30a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_RES_IDS			0x15C
31a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_OBJ_REG			0x15E
32a2a55e51SPrabhakar Kushwaha 
33a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_CONNECT			0x167
34a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_DISCONNECT			0x168
35a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_CONNECTION		0x16C
36a2a55e51SPrabhakar Kushwaha 
37a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
38a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_CONTAINER_ID(cmd, container_id) \
39a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 0,  32,  int,	    container_id)
40a2a55e51SPrabhakar Kushwaha 
41a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
42a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_OPEN(cmd, container_id) \
43a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    container_id)
44a2a55e51SPrabhakar Kushwaha 
45a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
461ebbe4fcSPrabhakar Kushwaha #define DPRC_CMD_CREATE_CONTAINER(cmd, cfg) \
471ebbe4fcSPrabhakar Kushwaha do { \
481ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 32, 16, uint16_t, cfg->icid); \
491ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, uint32_t, cfg->options); \
501ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 32, int,	    cfg->portal_id); \
511ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    cfg->label[0]);\
521ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    cfg->label[1]);\
531ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    cfg->label[2]);\
541ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    cfg->label[3]);\
551ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    cfg->label[4]);\
561ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    cfg->label[5]);\
571ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    cfg->label[6]);\
581ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    cfg->label[7]);\
591ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 0,  8,  char,	    cfg->label[8]);\
601ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 8,  8,  char,	    cfg->label[9]);\
611ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 16, 8,  char,	    cfg->label[10]);\
621ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 24, 8,  char,	    cfg->label[11]);\
631ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 32, 8,  char,	    cfg->label[12]);\
641ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 40, 8,  char,	    cfg->label[13]);\
651ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 48, 8,  char,	    cfg->label[14]);\
661ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 56, 8,  char,	    cfg->label[15]);\
671ebbe4fcSPrabhakar Kushwaha } while (0)
681ebbe4fcSPrabhakar Kushwaha 
691ebbe4fcSPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
701ebbe4fcSPrabhakar Kushwaha #define DPRC_RSP_CREATE_CONTAINER(cmd, child_container_id, child_portal_offset)\
711ebbe4fcSPrabhakar Kushwaha do { \
721ebbe4fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  32, int,	   child_container_id); \
731ebbe4fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 0,  64, uint64_t, child_portal_offset);\
741ebbe4fcSPrabhakar Kushwaha } while (0)
751ebbe4fcSPrabhakar Kushwaha 
761ebbe4fcSPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
771ebbe4fcSPrabhakar Kushwaha #define DPRC_CMD_DESTROY_CONTAINER(cmd, child_container_id) \
781ebbe4fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    child_container_id)
791ebbe4fcSPrabhakar Kushwaha 
801ebbe4fcSPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
81a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_RESET_CONTAINER(cmd, child_container_id) \
82a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    child_container_id)
83a2a55e51SPrabhakar Kushwaha 
84a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
85a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_ATTRIBUTES(cmd, attr) \
86a2a55e51SPrabhakar Kushwaha do { \
87a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 0,  32, int,	    attr->container_id); \
88a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 32, 16, uint16_t, attr->icid); \
89a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  32, uint32_t, attr->options);\
90a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 32, 32, int,      attr->portal_id); \
91a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 0,  16, uint16_t, attr->version.major);\
92a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 16, 16, uint16_t, attr->version.minor);\
93a2a55e51SPrabhakar Kushwaha } while (0)
94a2a55e51SPrabhakar Kushwaha 
95a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
96a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ_COUNT(cmd, obj_count) \
97a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 32, 32, int,      obj_count)
98a2a55e51SPrabhakar Kushwaha 
99a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
100a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_OBJ(cmd, obj_index) \
101a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    obj_index)
102a2a55e51SPrabhakar Kushwaha 
103a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
104a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ(cmd, obj_desc) \
105a2a55e51SPrabhakar Kushwaha do { \
106a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 32, 32, int,	    obj_desc->id); \
107a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  16, uint16_t, obj_desc->vendor); \
108a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 16, 8,  uint8_t,  obj_desc->irq_count); \
109a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 24, 8,  uint8_t,  obj_desc->region_count); \
110a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 32, 32, uint32_t, obj_desc->state);\
111a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 0,  16, uint16_t, obj_desc->ver_major);\
112a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 16, 16, uint16_t, obj_desc->ver_minor);\
113*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 32, 16, uint16_t, obj_desc->flags); \
114*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 0,  8,  char,	    obj_desc->type[0]);\
115*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 8,  8,  char,	    obj_desc->type[1]);\
116*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 16, 8,  char,	    obj_desc->type[2]);\
117*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 24, 8,  char,	    obj_desc->type[3]);\
118*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 32, 8,  char,	    obj_desc->type[4]);\
119*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 40, 8,  char,	    obj_desc->type[5]);\
120*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 48, 8,  char,	    obj_desc->type[6]);\
121*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 56, 8,  char,	    obj_desc->type[7]);\
122*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 0,  8,  char,	    obj_desc->type[8]);\
123*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 8,  8,  char,	    obj_desc->type[9]);\
124*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 16, 8,  char,	    obj_desc->type[10]);\
125*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 24, 8,  char,	    obj_desc->type[11]);\
126*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 32, 8,  char,	    obj_desc->type[12]);\
127*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 40, 8,  char,	    obj_desc->type[13]);\
128*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 48, 8,  char,	    obj_desc->type[14]);\
129*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 56, 8,  char,	    obj_desc->type[15]);\
130*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 0,  8,  char,	    obj_desc->label[0]);\
131*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 8,  8,  char,	    obj_desc->label[1]);\
132*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 16, 8,  char,	    obj_desc->label[2]);\
133*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 24, 8,  char,	    obj_desc->label[3]);\
134*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 32, 8,  char,	    obj_desc->label[4]);\
135*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 40, 8,  char,	    obj_desc->label[5]);\
136*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 48, 8,  char,	    obj_desc->label[6]);\
137*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 56, 8,  char,	    obj_desc->label[7]);\
138*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 0,  8,  char,	    obj_desc->label[8]);\
139*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 8,  8,  char,	    obj_desc->label[9]);\
140*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 16, 8,  char,	    obj_desc->label[10]);\
141*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 24, 8,  char,	    obj_desc->label[11]);\
142*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 32, 8,  char,	    obj_desc->label[12]);\
143*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 40, 8,  char,	    obj_desc->label[13]);\
144*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 48, 8,  char,	    obj_desc->label[14]);\
145*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 56, 8,  char,	    obj_desc->label[15]);\
146*53e353fcSPrabhakar Kushwaha } while (0)
147*53e353fcSPrabhakar Kushwaha 
148*53e353fcSPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
149*53e353fcSPrabhakar Kushwaha #define DPRC_CMD_GET_OBJ_DESC(cmd, obj_type, obj_id) \
150*53e353fcSPrabhakar Kushwaha do { \
151*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    obj_id);\
152*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  8,  char,     obj_type[0]);\
153*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 8,  8,  char,	    obj_type[1]);\
154*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 16, 8,  char,	    obj_type[2]);\
155*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 24, 8,  char,	    obj_type[3]);\
156*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 8,  char,	    obj_type[4]);\
157*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 40, 8,  char,	    obj_type[5]);\
158*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 48, 8,  char,	    obj_type[6]);\
159*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 56, 8,  char,	    obj_type[7]);\
160*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    obj_type[8]);\
161*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    obj_type[9]);\
162*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    obj_type[10]);\
163*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    obj_type[11]);\
164*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    obj_type[12]);\
165*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    obj_type[13]);\
166*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,     obj_type[14]);\
167*53e353fcSPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    obj_type[15]);\
168*53e353fcSPrabhakar Kushwaha } while (0)
169*53e353fcSPrabhakar Kushwaha 
170*53e353fcSPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
171*53e353fcSPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ_DESC(cmd, obj_desc) \
172*53e353fcSPrabhakar Kushwaha do { \
173*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 32, 32, int,	    obj_desc->id); \
174*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  16, uint16_t, obj_desc->vendor); \
175*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 16, 8,  uint8_t,  obj_desc->irq_count); \
176*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 24, 8,  uint8_t,  obj_desc->region_count); \
177*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 32, 32, uint32_t, obj_desc->state);\
178*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 0,  16, uint16_t, obj_desc->ver_major);\
179*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 16, 16, uint16_t, obj_desc->ver_minor);\
180*53e353fcSPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 32, 16, uint16_t, obj_desc->flags); \
181a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 0,  8,  char,	    obj_desc->type[0]);\
182a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 8,  8,  char,	    obj_desc->type[1]);\
183a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 16, 8,  char,	    obj_desc->type[2]);\
184a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 24, 8,  char,	    obj_desc->type[3]);\
185a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 32, 8,  char,	    obj_desc->type[4]);\
186a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 40, 8,  char,	    obj_desc->type[5]);\
187a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 48, 8,  char,	    obj_desc->type[6]);\
188a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 56, 8,  char,	    obj_desc->type[7]);\
189a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 0,  8,  char,	    obj_desc->type[8]);\
190a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 8,  8,  char,	    obj_desc->type[9]);\
191a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 16, 8,  char,	    obj_desc->type[10]);\
192a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 24, 8,  char,	    obj_desc->type[11]);\
193a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 32, 8,  char,	    obj_desc->type[12]);\
194a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 40, 8,  char,	    obj_desc->type[13]);\
195a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 48, 8,  char,	    obj_desc->type[14]);\
196a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 56, 8,  char,	    obj_desc->type[15]);\
1971f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 0,  8,  char,	    obj_desc->label[0]);\
1981f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 8,  8,  char,	    obj_desc->label[1]);\
1991f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 16, 8,  char,	    obj_desc->label[2]);\
2001f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 24, 8,  char,	    obj_desc->label[3]);\
2011f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 32, 8,  char,	    obj_desc->label[4]);\
2021f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 40, 8,  char,	    obj_desc->label[5]);\
2031f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 48, 8,  char,	    obj_desc->label[6]);\
2041f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 56, 8,  char,	    obj_desc->label[7]);\
2051f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 0,  8,  char,	    obj_desc->label[8]);\
2061f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 8,  8,  char,	    obj_desc->label[9]);\
2071f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 16, 8,  char,	    obj_desc->label[10]);\
2081f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 24, 8,  char,	    obj_desc->label[11]);\
2091f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 32, 8,  char,	    obj_desc->label[12]);\
2101f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 40, 8,  char,	    obj_desc->label[13]);\
2111f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 48, 8,  char,	    obj_desc->label[14]);\
2121f1c25c7SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 56, 8,  char,	    obj_desc->label[15]);\
213a2a55e51SPrabhakar Kushwaha } while (0)
214a2a55e51SPrabhakar Kushwaha 
215a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
216a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_RES_COUNT(cmd, type) \
217a2a55e51SPrabhakar Kushwaha do { \
218a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  8,  char,	    type[0]);\
219a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 8,  8,  char,	    type[1]);\
220a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 16, 8,  char,	    type[2]);\
221a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 24, 8,  char,	    type[3]);\
222a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 8,  char,	    type[4]);\
223a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 40, 8,  char,	    type[5]);\
224a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 48, 8,  char,	    type[6]);\
225a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 56, 8,  char,	    type[7]);\
226a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    type[8]);\
227a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    type[9]);\
228a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    type[10]);\
229a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    type[11]);\
230a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    type[12]);\
231a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    type[13]);\
232a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    type[14]);\
233a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    type[15]);\
234a2a55e51SPrabhakar Kushwaha } while (0)
235a2a55e51SPrabhakar Kushwaha 
236a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
237a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_RES_COUNT(cmd, res_count) \
238a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 0,  32, int,	    res_count)
239a2a55e51SPrabhakar Kushwaha 
240a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
241a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_RES_IDS(cmd, range_desc, type) \
242a2a55e51SPrabhakar Kushwaha do { \
243a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 42, 7,  enum dprc_iter_status, \
244a2a55e51SPrabhakar Kushwaha 					    range_desc->iter_status); \
245a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  32, int,	    range_desc->base_id); \
246a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 32, int,	    range_desc->last_id);\
247a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    type[0]);\
248a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    type[1]);\
249a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    type[2]);\
250a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    type[3]);\
251a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    type[4]);\
252a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,     type[5]);\
253a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    type[6]);\
254a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    type[7]);\
255a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 0,  8,  char,	    type[8]);\
256a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 8,  8,  char,	    type[9]);\
257a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 16, 8,  char,	    type[10]);\
258a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 24, 8,  char,	    type[11]);\
259a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 32, 8,  char,	    type[12]);\
260a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 40, 8,  char,	    type[13]);\
261a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 48, 8,  char,	    type[14]);\
262a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 56, 8,  char,	    type[15]);\
263a2a55e51SPrabhakar Kushwaha } while (0)
264a2a55e51SPrabhakar Kushwaha 
265a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
266a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_RES_IDS(cmd, range_desc) \
267a2a55e51SPrabhakar Kushwaha do { \
268a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 0, 42, 7,  enum dprc_iter_status, \
269a2a55e51SPrabhakar Kushwaha 					    range_desc->iter_status);\
270a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  32, int,	    range_desc->base_id); \
271a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 32, 32, int,	    range_desc->last_id);\
272a2a55e51SPrabhakar Kushwaha } while (0)
273a2a55e51SPrabhakar Kushwaha 
274a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
275a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_OBJ_REGION(cmd, obj_type, obj_id, region_index) \
276a2a55e51SPrabhakar Kushwaha do { \
277a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    obj_id); \
278a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 48, 8,  uint8_t,  region_index);\
279a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 0,  8,  char,	    obj_type[0]);\
280a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 8,  8,  char,	    obj_type[1]);\
281a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 16, 8,  char,	    obj_type[2]);\
282a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 24, 8,  char,	    obj_type[3]);\
283a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 32, 8,  char,	    obj_type[4]);\
284a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 40, 8,  char,	    obj_type[5]);\
285a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 48, 8,  char,	    obj_type[6]);\
286a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 56, 8,  char,	    obj_type[7]);\
287a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 0,  8,  char,	    obj_type[8]);\
288a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 8,  8,  char,	    obj_type[9]);\
289a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 16, 8,  char,	    obj_type[10]);\
290a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 24, 8,  char,	    obj_type[11]);\
291a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 32, 8,  char,	    obj_type[12]);\
292a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 40, 8,  char,	    obj_type[13]);\
293a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 48, 8,  char,	    obj_type[14]);\
294a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 56, 8,  char,	    obj_type[15]);\
295a2a55e51SPrabhakar Kushwaha } while (0)
296a2a55e51SPrabhakar Kushwaha 
297a2a55e51SPrabhakar Kushwaha /*	param, offset, width,	type,		arg_name */
298a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ_REGION(cmd, region_desc) \
299a2a55e51SPrabhakar Kushwaha do { \
30087457d11SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 1, 0,  32, uint32_t, region_desc->base_offset);\
301a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 0,  32, uint32_t, region_desc->size); \
30287457d11SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 2, 32, 4,  enum dprc_region_type, region_desc->type);\
30387457d11SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 0,  32, uint32_t, region_desc->flags);\
304a2a55e51SPrabhakar Kushwaha } while (0)
305a2a55e51SPrabhakar Kushwaha 
306a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
30787457d11SPrabhakar Kushwaha #define DPRC_CMD_SET_OBJ_LABEL(cmd, obj_type, obj_id, label) \
3081f1c25c7SPrabhakar Kushwaha do { \
30987457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,      obj_id); \
3101f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  8,  char,	    label[0]);\
3111f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 8,  8,  char,	    label[1]);\
3121f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 16, 8,  char,	    label[2]);\
3131f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 24, 8,  char,	    label[3]);\
3141f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 8,  char,	    label[4]);\
3151f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 40, 8,  char,	    label[5]);\
3161f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 48, 8,  char,	    label[6]);\
3171f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 56, 8,  char,	    label[7]);\
3181f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    label[8]);\
3191f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    label[9]);\
3201f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    label[10]);\
3211f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    label[11]);\
3221f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    label[12]);\
3231f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    label[13]);\
3241f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    label[14]);\
3251f1c25c7SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    label[15]);\
32687457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 0,  8,  char,	    obj_type[0]);\
32787457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 8,  8,  char,	    obj_type[1]);\
32887457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 16, 8,  char,	    obj_type[2]);\
32987457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 24, 8,  char,	    obj_type[3]);\
33087457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 32, 8,  char,	    obj_type[4]);\
33187457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 40, 8,  char,	    obj_type[5]);\
33287457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 48, 8,  char,	    obj_type[6]);\
33387457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 56, 8,  char,	    obj_type[7]);\
33487457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 0,  8,  char,	    obj_type[8]);\
33587457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 8,  8,  char,	    obj_type[9]);\
33687457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 16, 8,  char,	    obj_type[10]);\
33787457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 24, 8,  char,	    obj_type[11]);\
33887457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 32, 8,  char,	    obj_type[12]);\
33987457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 40, 8,  char,	    obj_type[13]);\
34087457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 48, 8,  char,	    obj_type[14]);\
34187457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 56, 8,  char,	    obj_type[15]);\
3421f1c25c7SPrabhakar Kushwaha } while (0)
3431f1c25c7SPrabhakar Kushwaha 
3441f1c25c7SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
34587457d11SPrabhakar Kushwaha #define DPRC_CMD_CONNECT(cmd, endpoint1, endpoint2, cfg) \
346a2a55e51SPrabhakar Kushwaha do { \
347a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,      endpoint1->id); \
34887457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 32, 16, uint16_t, endpoint1->if_id); \
349a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  32, int,	    endpoint2->id); \
35087457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 16, uint16_t, endpoint2->if_id); \
351a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,     endpoint1->type[0]); \
352a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    endpoint1->type[1]); \
353a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    endpoint1->type[2]); \
354a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    endpoint1->type[3]); \
355a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    endpoint1->type[4]); \
356a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    endpoint1->type[5]); \
357a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    endpoint1->type[6]); \
358a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    endpoint1->type[7]); \
359a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 0,  8,  char,	    endpoint1->type[8]); \
360a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 8,  8,  char,	    endpoint1->type[9]); \
361a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 16, 8,  char,	    endpoint1->type[10]); \
362a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 24, 8,  char,	    endpoint1->type[11]); \
363a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 32, 8,  char,     endpoint1->type[12]); \
364a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 40, 8,  char,	    endpoint1->type[13]); \
365a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 48, 8,  char,	    endpoint1->type[14]); \
366a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 3, 56, 8,  char,	    endpoint1->type[15]); \
36787457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 0,  32, uint32_t, cfg->max_rate); \
36887457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 4, 32, 32, uint32_t, cfg->committed_rate); \
369a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 0,  8,  char,	    endpoint2->type[0]); \
370a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 8,  8,  char,	    endpoint2->type[1]); \
371a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 16, 8,  char,	    endpoint2->type[2]); \
372a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 24, 8,  char,	    endpoint2->type[3]); \
373a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 32, 8,  char,	    endpoint2->type[4]); \
374a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 40, 8,  char,	    endpoint2->type[5]); \
375a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 48, 8,  char,	    endpoint2->type[6]); \
376a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 5, 56, 8,  char,	    endpoint2->type[7]); \
377a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 0,  8,  char,	    endpoint2->type[8]); \
378a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 8,  8,  char,	    endpoint2->type[9]); \
379a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 16, 8,  char,	    endpoint2->type[10]); \
380a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 24, 8,  char,	    endpoint2->type[11]); \
381a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 32, 8,  char,	    endpoint2->type[12]); \
382a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 40, 8,  char,	    endpoint2->type[13]); \
383a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 48, 8,  char,	    endpoint2->type[14]); \
384a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 6, 56, 8,  char,	    endpoint2->type[15]); \
385a2a55e51SPrabhakar Kushwaha } while (0)
386a2a55e51SPrabhakar Kushwaha 
387a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
388a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_DISCONNECT(cmd, endpoint) \
389a2a55e51SPrabhakar Kushwaha do { \
390a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,	    endpoint->id); \
39187457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 32, 16, uint16_t, endpoint->if_id); \
392a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  8,  char,	    endpoint->type[0]); \
393a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 8,  8,  char,	    endpoint->type[1]); \
394a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 16, 8,  char,	    endpoint->type[2]); \
395a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 24, 8,  char,	    endpoint->type[3]); \
396a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 8,  char,	    endpoint->type[4]); \
397a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 40, 8,  char,	    endpoint->type[5]); \
398a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 48, 8,  char,	    endpoint->type[6]); \
399a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 56, 8,  char,	    endpoint->type[7]); \
400a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    endpoint->type[8]); \
401a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    endpoint->type[9]); \
402a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    endpoint->type[10]); \
403a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    endpoint->type[11]); \
404a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,	    endpoint->type[12]); \
405a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    endpoint->type[13]); \
406a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    endpoint->type[14]); \
407a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    endpoint->type[15]); \
408a2a55e51SPrabhakar Kushwaha } while (0)
409a2a55e51SPrabhakar Kushwaha 
410a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
411a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_CONNECTION(cmd, endpoint1) \
412a2a55e51SPrabhakar Kushwaha do { \
413a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 0,  32, int,      endpoint1->id); \
41487457d11SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 0, 32, 16, uint16_t, endpoint1->if_id); \
415a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 0,  8,  char,     endpoint1->type[0]); \
416a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 8,  8,  char,	    endpoint1->type[1]); \
417a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 16, 8,  char,	    endpoint1->type[2]); \
418a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 24, 8,  char,	    endpoint1->type[3]); \
419a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 32, 8,  char,	    endpoint1->type[4]); \
420a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 40, 8,  char,	    endpoint1->type[5]); \
421a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 48, 8,  char,	    endpoint1->type[6]); \
422a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 1, 56, 8,  char,	    endpoint1->type[7]); \
423a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 0,  8,  char,	    endpoint1->type[8]); \
424a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 8,  8,  char,	    endpoint1->type[9]); \
425a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 16, 8,  char,	    endpoint1->type[10]); \
426a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 24, 8,  char,	    endpoint1->type[11]); \
427a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 32, 8,  char,     endpoint1->type[12]); \
428a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 40, 8,  char,	    endpoint1->type[13]); \
429a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 48, 8,  char,	    endpoint1->type[14]); \
430a2a55e51SPrabhakar Kushwaha 	MC_CMD_OP(cmd, 2, 56, 8,  char,	    endpoint1->type[15]); \
431a2a55e51SPrabhakar Kushwaha } while (0)
432a2a55e51SPrabhakar Kushwaha 
433a2a55e51SPrabhakar Kushwaha /*                cmd, param, offset, width, type, arg_name */
434a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_CONNECTION(cmd, endpoint2, state) \
435a2a55e51SPrabhakar Kushwaha do { \
436a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 0,  32, int,	    endpoint2->id); \
43787457d11SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 3, 32, 16, uint16_t, endpoint2->if_id); \
438a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 0,  8,  char,	    endpoint2->type[0]); \
439a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 8,  8,  char,	    endpoint2->type[1]); \
440a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 16, 8,  char,	    endpoint2->type[2]); \
441a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 24, 8,  char,	    endpoint2->type[3]); \
442a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 32, 8,  char,	    endpoint2->type[4]); \
443a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 40, 8,  char,	    endpoint2->type[5]); \
444a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 48, 8,  char,	    endpoint2->type[6]); \
445a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 4, 56, 8,  char,	    endpoint2->type[7]); \
446a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 0,  8,  char,	    endpoint2->type[8]); \
447a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 8,  8,  char,	    endpoint2->type[9]); \
448a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 16, 8,  char,	    endpoint2->type[10]); \
449a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 24, 8,  char,	    endpoint2->type[11]); \
450a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 32, 8,  char,	    endpoint2->type[12]); \
451a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 40, 8,  char,	    endpoint2->type[13]); \
452a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 48, 8,  char,	    endpoint2->type[14]); \
453a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 5, 56, 8,  char,	    endpoint2->type[15]); \
454a2a55e51SPrabhakar Kushwaha 	MC_RSP_OP(cmd, 6, 0,  32, int,	    state); \
455a2a55e51SPrabhakar Kushwaha } while (0)
456a2a55e51SPrabhakar Kushwaha 
457a2a55e51SPrabhakar Kushwaha /* Data Path Resource Container API
458a2a55e51SPrabhakar Kushwaha  * Contains DPRC API for managing and querying DPAA resources
459a2a55e51SPrabhakar Kushwaha  */
4601f1c25c7SPrabhakar Kushwaha 
461a2a55e51SPrabhakar Kushwaha struct fsl_mc_io;
462a2a55e51SPrabhakar Kushwaha 
463a2a55e51SPrabhakar Kushwaha /**
464a2a55e51SPrabhakar Kushwaha  * Set this value as the icid value in dprc_cfg structure when creating a
465a2a55e51SPrabhakar Kushwaha  * container, in case the ICID is not selected by the user and should be
466a2a55e51SPrabhakar Kushwaha  * allocated by the DPRC from the pool of ICIDs.
467a2a55e51SPrabhakar Kushwaha  */
468a2a55e51SPrabhakar Kushwaha #define DPRC_GET_ICID_FROM_POOL			(uint16_t)(~(0))
469a2a55e51SPrabhakar Kushwaha 
470a2a55e51SPrabhakar Kushwaha /**
471a2a55e51SPrabhakar Kushwaha  * Set this value as the portal_id value in dprc_cfg structure when creating a
472a2a55e51SPrabhakar Kushwaha  * container, in case the portal ID is not specifically selected by the
473a2a55e51SPrabhakar Kushwaha  * user and should be allocated by the DPRC from the pool of portal ids.
474a2a55e51SPrabhakar Kushwaha  */
475a2a55e51SPrabhakar Kushwaha #define DPRC_GET_PORTAL_ID_FROM_POOL	(int)(~(0))
476a2a55e51SPrabhakar Kushwaha 
477a2a55e51SPrabhakar Kushwaha /**
478a2a55e51SPrabhakar Kushwaha  * dprc_get_container_id() - Get container ID associated with a given portal.
479a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
48087457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
481a2a55e51SPrabhakar Kushwaha  * @container_id:	Requested container ID
482a2a55e51SPrabhakar Kushwaha  *
483a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
484a2a55e51SPrabhakar Kushwaha  */
48587457d11SPrabhakar Kushwaha int dprc_get_container_id(struct fsl_mc_io	*mc_io,
48687457d11SPrabhakar Kushwaha 			  uint32_t		cmd_flags,
48787457d11SPrabhakar Kushwaha 			  int			*container_id);
488a2a55e51SPrabhakar Kushwaha 
489a2a55e51SPrabhakar Kushwaha /**
490a2a55e51SPrabhakar Kushwaha  * dprc_open() - Open DPRC object for use
491a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
49287457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
493a2a55e51SPrabhakar Kushwaha  * @container_id: Container ID to open
494a2a55e51SPrabhakar Kushwaha  * @token:	Returned token of DPRC object
495a2a55e51SPrabhakar Kushwaha  *
496a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
497a2a55e51SPrabhakar Kushwaha  *
498a2a55e51SPrabhakar Kushwaha  * @warning	Required before any operation on the object.
499a2a55e51SPrabhakar Kushwaha  */
50087457d11SPrabhakar Kushwaha int dprc_open(struct fsl_mc_io	*mc_io,
50187457d11SPrabhakar Kushwaha 	      uint32_t		cmd_flags,
50287457d11SPrabhakar Kushwaha 	      int		container_id,
50387457d11SPrabhakar Kushwaha 	      uint16_t		*token);
504a2a55e51SPrabhakar Kushwaha 
505a2a55e51SPrabhakar Kushwaha /**
506a2a55e51SPrabhakar Kushwaha  * dprc_close() - Close the control session of the object
507a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
50887457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
509a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
510a2a55e51SPrabhakar Kushwaha  *
511a2a55e51SPrabhakar Kushwaha  * After this function is called, no further operations are
512a2a55e51SPrabhakar Kushwaha  * allowed on the object without opening a new control session.
513a2a55e51SPrabhakar Kushwaha  *
514a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
515a2a55e51SPrabhakar Kushwaha  */
51687457d11SPrabhakar Kushwaha int dprc_close(struct fsl_mc_io	*mc_io,
51787457d11SPrabhakar Kushwaha 	       uint32_t		cmd_flags,
51887457d11SPrabhakar Kushwaha 	       uint16_t		token);
519a2a55e51SPrabhakar Kushwaha 
520a2a55e51SPrabhakar Kushwaha /**
521a2a55e51SPrabhakar Kushwaha  * Container general options
522a2a55e51SPrabhakar Kushwaha  *
523a2a55e51SPrabhakar Kushwaha  * These options may be selected at container creation by the container creator
524a2a55e51SPrabhakar Kushwaha  * and can be retrieved using dprc_get_attributes()
525a2a55e51SPrabhakar Kushwaha  */
526a2a55e51SPrabhakar Kushwaha 
527a2a55e51SPrabhakar Kushwaha /* Spawn Policy Option allowed - Indicates that the new container is allowed
528a2a55e51SPrabhakar Kushwaha  * to spawn and have its own child containers.
529a2a55e51SPrabhakar Kushwaha  */
530a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_SPAWN_ALLOWED		0x00000001
531a2a55e51SPrabhakar Kushwaha 
532a2a55e51SPrabhakar Kushwaha /* General Container allocation policy - Indicates that the new container is
533a2a55e51SPrabhakar Kushwaha  * allowed to allocate requested resources from its parent container; if not
534a2a55e51SPrabhakar Kushwaha  * set, the container is only allowed to use resources in its own pools; Note
535a2a55e51SPrabhakar Kushwaha  * that this is a container's global policy, but the parent container may
536a2a55e51SPrabhakar Kushwaha  * override it and set specific quota per resource type.
537a2a55e51SPrabhakar Kushwaha  */
538a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_ALLOC_ALLOWED		0x00000002
539a2a55e51SPrabhakar Kushwaha 
540a2a55e51SPrabhakar Kushwaha /* Object initialization allowed - software context associated with this
541a2a55e51SPrabhakar Kushwaha  * container is allowed to invoke object initialization operations.
542a2a55e51SPrabhakar Kushwaha  */
543a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_OBJ_CREATE_ALLOWED		0x00000004
544a2a55e51SPrabhakar Kushwaha 
545a2a55e51SPrabhakar Kushwaha /* Topology change allowed - software context associated with this
546a2a55e51SPrabhakar Kushwaha  * container is allowed to invoke topology operations, such as attach/detach
547a2a55e51SPrabhakar Kushwaha  * of network objects.
548a2a55e51SPrabhakar Kushwaha  */
549a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_TOPOLOGY_CHANGES_ALLOWED	0x00000008
550a2a55e51SPrabhakar Kushwaha 
551a2a55e51SPrabhakar Kushwaha 
552a2a55e51SPrabhakar Kushwaha /* AIOP - Indicates that container belongs to AIOP. */
553a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_AIOP			0x00000020
554a2a55e51SPrabhakar Kushwaha 
555*53e353fcSPrabhakar Kushwaha /* IRQ Config - Indicates that the container allowed to configure its IRQs.*/
556*53e353fcSPrabhakar Kushwaha #define DPRC_CFG_OPT_IRQ_CFG_ALLOWED		0x00000040
557*53e353fcSPrabhakar Kushwaha 
558a2a55e51SPrabhakar Kushwaha /**
559a2a55e51SPrabhakar Kushwaha  * struct dprc_cfg - Container configuration options
560a2a55e51SPrabhakar Kushwaha  * @icid: Container's ICID; if set to 'DPRC_GET_ICID_FROM_POOL', a free
561a2a55e51SPrabhakar Kushwaha  *		ICID value is allocated by the DPRC
562a2a55e51SPrabhakar Kushwaha  * @portal_id: Portal ID; if set to 'DPRC_GET_PORTAL_ID_FROM_POOL', a free
563a2a55e51SPrabhakar Kushwaha  *		portal ID is allocated by the DPRC
564a2a55e51SPrabhakar Kushwaha  * @options: Combination of 'DPRC_CFG_OPT_<X>' options
5651f1c25c7SPrabhakar Kushwaha  * @label: Object's label
566a2a55e51SPrabhakar Kushwaha  */
567a2a55e51SPrabhakar Kushwaha struct dprc_cfg {
568a2a55e51SPrabhakar Kushwaha 	uint16_t icid;
569a2a55e51SPrabhakar Kushwaha 	int portal_id;
570a2a55e51SPrabhakar Kushwaha 	uint64_t options;
5711f1c25c7SPrabhakar Kushwaha 	char label[16];
572a2a55e51SPrabhakar Kushwaha };
573a2a55e51SPrabhakar Kushwaha 
574a2a55e51SPrabhakar Kushwaha /**
5751ebbe4fcSPrabhakar Kushwaha  * dprc_create_container() - Create child container
5761ebbe4fcSPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
5771ebbe4fcSPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
5781ebbe4fcSPrabhakar Kushwaha  * @token:	Token of DPRC object
5791ebbe4fcSPrabhakar Kushwaha  * @cfg:	Child container configuration
5801ebbe4fcSPrabhakar Kushwaha  * @child_container_id:	Returned child container ID
5811ebbe4fcSPrabhakar Kushwaha  * @child_portal_offset: Returned child portal offset from MC portal base
5821ebbe4fcSPrabhakar Kushwaha  *
5831ebbe4fcSPrabhakar Kushwaha  *
5841ebbe4fcSPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
5851ebbe4fcSPrabhakar Kushwaha  */
5861ebbe4fcSPrabhakar Kushwaha int dprc_create_container(struct fsl_mc_io	*mc_io,
5871ebbe4fcSPrabhakar Kushwaha 			  uint32_t		cmd_flags,
5881ebbe4fcSPrabhakar Kushwaha 			  uint16_t		token,
5891ebbe4fcSPrabhakar Kushwaha 			  struct dprc_cfg	*cfg,
5901ebbe4fcSPrabhakar Kushwaha 			  int			*child_container_id,
5911ebbe4fcSPrabhakar Kushwaha 			  uint64_t		*child_portal_offset);
5921ebbe4fcSPrabhakar Kushwaha 
5931ebbe4fcSPrabhakar Kushwaha /**
5941ebbe4fcSPrabhakar Kushwaha  * dprc_destroy_container() - Destroy child container.
5951ebbe4fcSPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
5961ebbe4fcSPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
5971ebbe4fcSPrabhakar Kushwaha  * @token:	Token of DPRC object
5981ebbe4fcSPrabhakar Kushwaha  * @child_container_id:	ID of the container to destroy
5991ebbe4fcSPrabhakar Kushwaha  *
6001ebbe4fcSPrabhakar Kushwaha  * This function terminates the child container, so following this call the
6011ebbe4fcSPrabhakar Kushwaha  * child container ID becomes invalid.
6021ebbe4fcSPrabhakar Kushwaha  *
6031ebbe4fcSPrabhakar Kushwaha  * Notes:
6041ebbe4fcSPrabhakar Kushwaha  * - All resources and objects of the destroyed container are returned to the
6051ebbe4fcSPrabhakar Kushwaha  * parent container or destroyed if were created be the destroyed container.
6061ebbe4fcSPrabhakar Kushwaha  * - This function destroy all the child containers of the specified
6071ebbe4fcSPrabhakar Kushwaha  *   container prior to destroying the container itself.
6081ebbe4fcSPrabhakar Kushwaha  *
6091ebbe4fcSPrabhakar Kushwaha  * warning: Only the parent container is allowed to destroy a child policy
6101ebbe4fcSPrabhakar Kushwaha  *		Container 0 can't be destroyed
6111ebbe4fcSPrabhakar Kushwaha  *
6121ebbe4fcSPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
6131ebbe4fcSPrabhakar Kushwaha  *
6141ebbe4fcSPrabhakar Kushwaha  */
6151ebbe4fcSPrabhakar Kushwaha int dprc_destroy_container(struct fsl_mc_io	*mc_io,
6161ebbe4fcSPrabhakar Kushwaha 			   uint32_t		cmd_flags,
6171ebbe4fcSPrabhakar Kushwaha 			   uint16_t		token,
6181ebbe4fcSPrabhakar Kushwaha 			   int			child_container_id);
6191ebbe4fcSPrabhakar Kushwaha 
6201ebbe4fcSPrabhakar Kushwaha /**
621a2a55e51SPrabhakar Kushwaha  * dprc_reset_container - Reset child container.
622a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
62387457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
624a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
625a2a55e51SPrabhakar Kushwaha  * @child_container_id:	ID of the container to reset
626a2a55e51SPrabhakar Kushwaha  *
627a2a55e51SPrabhakar Kushwaha  * In case a software context crashes or becomes non-responsive, the parent
628a2a55e51SPrabhakar Kushwaha  * may wish to reset its resources container before the software context is
629a2a55e51SPrabhakar Kushwaha  * restarted.
630a2a55e51SPrabhakar Kushwaha  *
631a2a55e51SPrabhakar Kushwaha  * This routine informs all objects assigned to the child container that the
632a2a55e51SPrabhakar Kushwaha  * container is being reset, so they may perform any cleanup operations that are
633a2a55e51SPrabhakar Kushwaha  * needed. All objects handles that were owned by the child container shall be
634a2a55e51SPrabhakar Kushwaha  * closed.
635a2a55e51SPrabhakar Kushwaha  *
636a2a55e51SPrabhakar Kushwaha  * Note that such request may be submitted even if the child software context
637a2a55e51SPrabhakar Kushwaha  * has not crashed, but the resulting object cleanup operations will not be
638a2a55e51SPrabhakar Kushwaha  * aware of that.
639a2a55e51SPrabhakar Kushwaha  *
640a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
641a2a55e51SPrabhakar Kushwaha  */
642a2a55e51SPrabhakar Kushwaha int dprc_reset_container(struct fsl_mc_io	*mc_io,
64387457d11SPrabhakar Kushwaha 			 uint32_t		cmd_flags,
644a2a55e51SPrabhakar Kushwaha 			 uint16_t		token,
645a2a55e51SPrabhakar Kushwaha 			 int			child_container_id);
646a2a55e51SPrabhakar Kushwaha 
647a2a55e51SPrabhakar Kushwaha /**
648a2a55e51SPrabhakar Kushwaha  * struct dprc_attributes - Container attributes
649a2a55e51SPrabhakar Kushwaha  * @container_id: Container's ID
650a2a55e51SPrabhakar Kushwaha  * @icid: Container's ICID
651a2a55e51SPrabhakar Kushwaha  * @portal_id: Container's portal ID
652a2a55e51SPrabhakar Kushwaha  * @options: Container's options as set at container's creation
653a2a55e51SPrabhakar Kushwaha  * @version: DPRC version
654a2a55e51SPrabhakar Kushwaha  */
655a2a55e51SPrabhakar Kushwaha struct dprc_attributes {
656a2a55e51SPrabhakar Kushwaha 	int container_id;
657a2a55e51SPrabhakar Kushwaha 	uint16_t icid;
658a2a55e51SPrabhakar Kushwaha 	int portal_id;
659a2a55e51SPrabhakar Kushwaha 	uint64_t options;
660a2a55e51SPrabhakar Kushwaha 	/**
661a2a55e51SPrabhakar Kushwaha 	 * struct version - DPRC version
662a2a55e51SPrabhakar Kushwaha 	 * @major: DPRC major version
663a2a55e51SPrabhakar Kushwaha 	 * @minor: DPRC minor version
664a2a55e51SPrabhakar Kushwaha 	 */
665a2a55e51SPrabhakar Kushwaha 	struct {
666a2a55e51SPrabhakar Kushwaha 		uint16_t major;
667a2a55e51SPrabhakar Kushwaha 		uint16_t minor;
668a2a55e51SPrabhakar Kushwaha 	} version;
669a2a55e51SPrabhakar Kushwaha };
670a2a55e51SPrabhakar Kushwaha 
671a2a55e51SPrabhakar Kushwaha /**
672a2a55e51SPrabhakar Kushwaha  * dprc_get_attributes() - Obtains container attributes
673a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
67487457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
675a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
67687457d11SPrabhakar Kushwaha  * @attributes:	Returned container attributes
677a2a55e51SPrabhakar Kushwaha  *
678a2a55e51SPrabhakar Kushwaha  * Return:     '0' on Success; Error code otherwise.
679a2a55e51SPrabhakar Kushwaha  */
680a2a55e51SPrabhakar Kushwaha int dprc_get_attributes(struct fsl_mc_io	*mc_io,
68187457d11SPrabhakar Kushwaha 			uint32_t		cmd_flags,
682a2a55e51SPrabhakar Kushwaha 			uint16_t		token,
683a2a55e51SPrabhakar Kushwaha 			struct dprc_attributes	*attributes);
684a2a55e51SPrabhakar Kushwaha 
685a2a55e51SPrabhakar Kushwaha /**
686a2a55e51SPrabhakar Kushwaha  * dprc_get_obj_count() - Obtains the number of objects in the DPRC
687a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
68887457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
689a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
690a2a55e51SPrabhakar Kushwaha  * @obj_count:	Number of objects assigned to the DPRC
691a2a55e51SPrabhakar Kushwaha  *
692a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
693a2a55e51SPrabhakar Kushwaha  */
69487457d11SPrabhakar Kushwaha int dprc_get_obj_count(struct fsl_mc_io	*mc_io,
69587457d11SPrabhakar Kushwaha 		       uint32_t		cmd_flags,
69687457d11SPrabhakar Kushwaha 		       uint16_t		token,
69787457d11SPrabhakar Kushwaha 		       int			*obj_count);
698a2a55e51SPrabhakar Kushwaha 
699a2a55e51SPrabhakar Kushwaha /* Objects Attributes Flags */
700a2a55e51SPrabhakar Kushwaha 
701a2a55e51SPrabhakar Kushwaha /* Opened state - Indicates that an object is open by at least one owner */
702a2a55e51SPrabhakar Kushwaha #define DPRC_OBJ_STATE_OPEN		0x00000001
703a2a55e51SPrabhakar Kushwaha /* Plugged state - Indicates that the object is plugged */
704a2a55e51SPrabhakar Kushwaha #define DPRC_OBJ_STATE_PLUGGED		0x00000002
705a2a55e51SPrabhakar Kushwaha 
706a2a55e51SPrabhakar Kushwaha /**
707*53e353fcSPrabhakar Kushwaha  * Shareability flag - Object flag indicating no memory shareability.
708*53e353fcSPrabhakar Kushwaha  *  the object generates memory accesses that are non coherent with other
709*53e353fcSPrabhakar Kushwaha  *  masters;
710*53e353fcSPrabhakar Kushwaha  *  user is responsible for proper memory handling through IOMMU configuration.
711*53e353fcSPrabhakar Kushwaha  */
712*53e353fcSPrabhakar Kushwaha #define DPRC_OBJ_FLAG_NO_MEM_SHAREABILITY		0x0001
713*53e353fcSPrabhakar Kushwaha 
714*53e353fcSPrabhakar Kushwaha /**
715a2a55e51SPrabhakar Kushwaha  * struct dprc_obj_desc - Object descriptor, returned from dprc_get_obj()
716a2a55e51SPrabhakar Kushwaha  * @type: Type of object: NULL terminated string
717a2a55e51SPrabhakar Kushwaha  * @id: ID of logical object resource
718a2a55e51SPrabhakar Kushwaha  * @vendor: Object vendor identifier
719a2a55e51SPrabhakar Kushwaha  * @ver_major: Major version number
720a2a55e51SPrabhakar Kushwaha  * @ver_minor:  Minor version number
721a2a55e51SPrabhakar Kushwaha  * @irq_count: Number of interrupts supported by the object
722a2a55e51SPrabhakar Kushwaha  * @region_count: Number of mappable regions supported by the object
723a2a55e51SPrabhakar Kushwaha  * @state: Object state: combination of DPRC_OBJ_STATE_ states
7241f1c25c7SPrabhakar Kushwaha  * @label: Object label
725*53e353fcSPrabhakar Kushwaha  * @flags: Object's flags
726a2a55e51SPrabhakar Kushwaha  */
727a2a55e51SPrabhakar Kushwaha struct dprc_obj_desc {
728a2a55e51SPrabhakar Kushwaha 	char type[16];
729a2a55e51SPrabhakar Kushwaha 	int id;
730a2a55e51SPrabhakar Kushwaha 	uint16_t vendor;
731a2a55e51SPrabhakar Kushwaha 	uint16_t ver_major;
732a2a55e51SPrabhakar Kushwaha 	uint16_t ver_minor;
733a2a55e51SPrabhakar Kushwaha 	uint8_t irq_count;
734a2a55e51SPrabhakar Kushwaha 	uint8_t region_count;
735a2a55e51SPrabhakar Kushwaha 	uint32_t state;
7361f1c25c7SPrabhakar Kushwaha 	char label[16];
737*53e353fcSPrabhakar Kushwaha 	uint16_t	flags;
738a2a55e51SPrabhakar Kushwaha };
739a2a55e51SPrabhakar Kushwaha 
740a2a55e51SPrabhakar Kushwaha /**
741a2a55e51SPrabhakar Kushwaha  * dprc_get_obj() - Get general information on an object
742a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
74387457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
744a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
745a2a55e51SPrabhakar Kushwaha  * @obj_index:	Index of the object to be queried (< obj_count)
746a2a55e51SPrabhakar Kushwaha  * @obj_desc:	Returns the requested object descriptor
747a2a55e51SPrabhakar Kushwaha  *
748a2a55e51SPrabhakar Kushwaha  * The object descriptors are retrieved one by one by incrementing
749a2a55e51SPrabhakar Kushwaha  * obj_index up to (not including) the value of obj_count returned
750a2a55e51SPrabhakar Kushwaha  * from dprc_get_obj_count(). dprc_get_obj_count() must
751a2a55e51SPrabhakar Kushwaha  * be called prior to dprc_get_obj().
752a2a55e51SPrabhakar Kushwaha  *
753a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
754a2a55e51SPrabhakar Kushwaha  */
755a2a55e51SPrabhakar Kushwaha int dprc_get_obj(struct fsl_mc_io	*mc_io,
75687457d11SPrabhakar Kushwaha 		 uint32_t		cmd_flags,
757a2a55e51SPrabhakar Kushwaha 		 uint16_t		token,
758a2a55e51SPrabhakar Kushwaha 		 int			obj_index,
759a2a55e51SPrabhakar Kushwaha 		 struct dprc_obj_desc	*obj_desc);
760a2a55e51SPrabhakar Kushwaha 
761a2a55e51SPrabhakar Kushwaha /**
7621f1c25c7SPrabhakar Kushwaha  * dprc_get_res_count() - Obtains the number of free resources that are
7631f1c25c7SPrabhakar Kushwaha  *		assigned to this container, by pool type
764a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
76587457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
766a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
767a2a55e51SPrabhakar Kushwaha  * @type:	pool type
768a2a55e51SPrabhakar Kushwaha  * @res_count:	Returned number of free resources of the given
769a2a55e51SPrabhakar Kushwaha  *			resource type that are assigned to this DPRC
770a2a55e51SPrabhakar Kushwaha  *
771a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
772a2a55e51SPrabhakar Kushwaha  */
773a2a55e51SPrabhakar Kushwaha int dprc_get_res_count(struct fsl_mc_io *mc_io,
77487457d11SPrabhakar Kushwaha 		       uint32_t	cmd_flags,
775a2a55e51SPrabhakar Kushwaha 		       uint16_t		token,
776a2a55e51SPrabhakar Kushwaha 		       char		*type,
777a2a55e51SPrabhakar Kushwaha 		       int		*res_count);
778a2a55e51SPrabhakar Kushwaha 
779a2a55e51SPrabhakar Kushwaha /**
780a2a55e51SPrabhakar Kushwaha  * enum dprc_iter_status - Iteration status
781a2a55e51SPrabhakar Kushwaha  * @DPRC_ITER_STATUS_FIRST: Perform first iteration
782a2a55e51SPrabhakar Kushwaha  * @DPRC_ITER_STATUS_MORE: Indicates more/next iteration is needed
783a2a55e51SPrabhakar Kushwaha  * @DPRC_ITER_STATUS_LAST: Indicates last iteration
784a2a55e51SPrabhakar Kushwaha  */
785a2a55e51SPrabhakar Kushwaha enum dprc_iter_status {
786a2a55e51SPrabhakar Kushwaha 	DPRC_ITER_STATUS_FIRST = 0,
787a2a55e51SPrabhakar Kushwaha 	DPRC_ITER_STATUS_MORE = 1,
788a2a55e51SPrabhakar Kushwaha 	DPRC_ITER_STATUS_LAST = 2
789a2a55e51SPrabhakar Kushwaha };
790a2a55e51SPrabhakar Kushwaha 
791a2a55e51SPrabhakar Kushwaha /**
792a2a55e51SPrabhakar Kushwaha  * struct dprc_res_ids_range_desc - Resource ID range descriptor
793a2a55e51SPrabhakar Kushwaha  * @base_id: Base resource ID of this range
794a2a55e51SPrabhakar Kushwaha  * @last_id: Last resource ID of this range
795a2a55e51SPrabhakar Kushwaha  * @iter_status: Iteration status - should be set to DPRC_ITER_STATUS_FIRST at
796a2a55e51SPrabhakar Kushwaha  *	first iteration; while the returned marker is DPRC_ITER_STATUS_MORE,
797a2a55e51SPrabhakar Kushwaha  *	additional iterations are needed, until the returned marker is
798a2a55e51SPrabhakar Kushwaha  *	DPRC_ITER_STATUS_LAST
799a2a55e51SPrabhakar Kushwaha  */
800a2a55e51SPrabhakar Kushwaha struct dprc_res_ids_range_desc {
801a2a55e51SPrabhakar Kushwaha 	int base_id;
802a2a55e51SPrabhakar Kushwaha 	int last_id;
803a2a55e51SPrabhakar Kushwaha 	enum dprc_iter_status iter_status;
804a2a55e51SPrabhakar Kushwaha };
805a2a55e51SPrabhakar Kushwaha 
806a2a55e51SPrabhakar Kushwaha /**
807a2a55e51SPrabhakar Kushwaha  * dprc_get_res_ids() - Obtains IDs of free resources in the container
808a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
80987457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
810a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
811a2a55e51SPrabhakar Kushwaha  * @type:	pool type
812a2a55e51SPrabhakar Kushwaha  * @range_desc:	range descriptor
813a2a55e51SPrabhakar Kushwaha  *
814a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
815a2a55e51SPrabhakar Kushwaha  */
816a2a55e51SPrabhakar Kushwaha int dprc_get_res_ids(struct fsl_mc_io			*mc_io,
81787457d11SPrabhakar Kushwaha 		     uint32_t				cmd_flags,
818a2a55e51SPrabhakar Kushwaha 		     uint16_t				token,
819a2a55e51SPrabhakar Kushwaha 		     char				*type,
820a2a55e51SPrabhakar Kushwaha 		     struct dprc_res_ids_range_desc	*range_desc);
821a2a55e51SPrabhakar Kushwaha 
82287457d11SPrabhakar Kushwaha /* Region flags */
82387457d11SPrabhakar Kushwaha /* Cacheable - Indicates that region should be mapped as cacheable */
82487457d11SPrabhakar Kushwaha #define DPRC_REGION_CACHEABLE	0x00000001
82587457d11SPrabhakar Kushwaha 
82687457d11SPrabhakar Kushwaha /**
82787457d11SPrabhakar Kushwaha  * enum dprc_region_type - Region type
82887457d11SPrabhakar Kushwaha  * @DPRC_REGION_TYPE_MC_PORTAL: MC portal region
82987457d11SPrabhakar Kushwaha  * @DPRC_REGION_TYPE_QBMAN_PORTAL: Qbman portal region
83087457d11SPrabhakar Kushwaha  */
83187457d11SPrabhakar Kushwaha enum dprc_region_type {
83287457d11SPrabhakar Kushwaha 	DPRC_REGION_TYPE_MC_PORTAL,
83387457d11SPrabhakar Kushwaha 	DPRC_REGION_TYPE_QBMAN_PORTAL
83487457d11SPrabhakar Kushwaha };
83587457d11SPrabhakar Kushwaha 
836a2a55e51SPrabhakar Kushwaha /**
837a2a55e51SPrabhakar Kushwaha  * struct dprc_region_desc - Mappable region descriptor
8381f1c25c7SPrabhakar Kushwaha  * @base_offset: Region offset from region's base address.
8391f1c25c7SPrabhakar Kushwaha  *	For DPMCP and DPRC objects, region base is offset from SoC MC portals
8401f1c25c7SPrabhakar Kushwaha  *	base address; For DPIO, region base is offset from SoC QMan portals
8411f1c25c7SPrabhakar Kushwaha  *	base address
842a2a55e51SPrabhakar Kushwaha  * @size: Region size (in bytes)
84387457d11SPrabhakar Kushwaha  * @flags: Region attributes
84487457d11SPrabhakar Kushwaha  * @type: Portal region type
845a2a55e51SPrabhakar Kushwaha  */
846a2a55e51SPrabhakar Kushwaha struct dprc_region_desc {
84787457d11SPrabhakar Kushwaha 	uint32_t base_offset;
848a2a55e51SPrabhakar Kushwaha 	uint32_t size;
84987457d11SPrabhakar Kushwaha 	uint32_t flags;
85087457d11SPrabhakar Kushwaha 	enum dprc_region_type type;
851a2a55e51SPrabhakar Kushwaha };
852a2a55e51SPrabhakar Kushwaha 
853a2a55e51SPrabhakar Kushwaha /**
854a2a55e51SPrabhakar Kushwaha  * dprc_get_obj_region() - Get region information for a specified object.
855a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
85687457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
857a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
85887457d11SPrabhakar Kushwaha  * @obj_type:	Object type as returned in dprc_get_obj()
859a2a55e51SPrabhakar Kushwaha  * @obj_id:	Unique object instance as returned in dprc_get_obj()
860a2a55e51SPrabhakar Kushwaha  * @region_index: The specific region to query
861a2a55e51SPrabhakar Kushwaha  * @region_desc:  Returns the requested region descriptor
862a2a55e51SPrabhakar Kushwaha  *
863a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
864a2a55e51SPrabhakar Kushwaha  */
865a2a55e51SPrabhakar Kushwaha int dprc_get_obj_region(struct fsl_mc_io	*mc_io,
86687457d11SPrabhakar Kushwaha 			uint32_t		cmd_flags,
867a2a55e51SPrabhakar Kushwaha 			uint16_t		token,
868a2a55e51SPrabhakar Kushwaha 			char			*obj_type,
869a2a55e51SPrabhakar Kushwaha 			int			obj_id,
870a2a55e51SPrabhakar Kushwaha 			uint8_t			region_index,
871a2a55e51SPrabhakar Kushwaha 			struct dprc_region_desc	*region_desc);
872a2a55e51SPrabhakar Kushwaha /**
873a2a55e51SPrabhakar Kushwaha  * struct dprc_endpoint - Endpoint description for link connect/disconnect
874a2a55e51SPrabhakar Kushwaha  *			operations
875a2a55e51SPrabhakar Kushwaha  * @type: Endpoint object type: NULL terminated string
876a2a55e51SPrabhakar Kushwaha  * @id: Endpoint object ID
87787457d11SPrabhakar Kushwaha  * @if_id: Interface ID; should be set for endpoints with multiple
878a2a55e51SPrabhakar Kushwaha  *		interfaces ("dpsw", "dpdmux"); for others, always set to 0
879a2a55e51SPrabhakar Kushwaha  */
880a2a55e51SPrabhakar Kushwaha struct dprc_endpoint {
881a2a55e51SPrabhakar Kushwaha 	char		type[16];
882a2a55e51SPrabhakar Kushwaha 	int		id;
88387457d11SPrabhakar Kushwaha 	uint16_t	if_id;
88487457d11SPrabhakar Kushwaha };
88587457d11SPrabhakar Kushwaha 
88687457d11SPrabhakar Kushwaha /**
88787457d11SPrabhakar Kushwaha  * struct dprc_connection_cfg - Connection configuration.
88887457d11SPrabhakar Kushwaha  *				Used for virtual connections only
88987457d11SPrabhakar Kushwaha  * @committed_rate: Committed rate (Mbits/s)
89087457d11SPrabhakar Kushwaha  * @max_rate: Maximum rate (Mbits/s)
89187457d11SPrabhakar Kushwaha  */
89287457d11SPrabhakar Kushwaha struct dprc_connection_cfg {
89387457d11SPrabhakar Kushwaha 	uint32_t committed_rate;
89487457d11SPrabhakar Kushwaha 	uint32_t max_rate;
895a2a55e51SPrabhakar Kushwaha };
896a2a55e51SPrabhakar Kushwaha 
897a2a55e51SPrabhakar Kushwaha /**
898a2a55e51SPrabhakar Kushwaha  * dprc_connect() - Connect two endpoints to create a network link between them
899a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
90087457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
901a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
902a2a55e51SPrabhakar Kushwaha  * @endpoint1:	Endpoint 1 configuration parameters
903a2a55e51SPrabhakar Kushwaha  * @endpoint2:	Endpoint 2 configuration parameters
90487457d11SPrabhakar Kushwaha  * @cfg: Connection configuration. The connection configuration is ignored for
90587457d11SPrabhakar Kushwaha  *	connections made to DPMAC objects, where rate is retrieved from the
90687457d11SPrabhakar Kushwaha  *	MAC configuration.
907a2a55e51SPrabhakar Kushwaha  *
908a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
909a2a55e51SPrabhakar Kushwaha  */
910a2a55e51SPrabhakar Kushwaha int dprc_connect(struct fsl_mc_io			*mc_io,
91187457d11SPrabhakar Kushwaha 		 uint32_t				cmd_flags,
912a2a55e51SPrabhakar Kushwaha 		 uint16_t				token,
913a2a55e51SPrabhakar Kushwaha 		 const struct dprc_endpoint		*endpoint1,
91487457d11SPrabhakar Kushwaha 		 const struct dprc_endpoint		*endpoint2,
91587457d11SPrabhakar Kushwaha 		 const struct dprc_connection_cfg	*cfg);
916a2a55e51SPrabhakar Kushwaha 
917a2a55e51SPrabhakar Kushwaha /**
918a2a55e51SPrabhakar Kushwaha  * dprc_disconnect() - Disconnect one endpoint to remove its network connection
919a2a55e51SPrabhakar Kushwaha  * @mc_io:	Pointer to MC portal's I/O object
92087457d11SPrabhakar Kushwaha  * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
921a2a55e51SPrabhakar Kushwaha  * @token:	Token of DPRC object
922a2a55e51SPrabhakar Kushwaha  * @endpoint:	Endpoint configuration parameters
923a2a55e51SPrabhakar Kushwaha  *
924a2a55e51SPrabhakar Kushwaha  * Return:	'0' on Success; Error code otherwise.
925a2a55e51SPrabhakar Kushwaha  */
926a2a55e51SPrabhakar Kushwaha int dprc_disconnect(struct fsl_mc_io		*mc_io,
92787457d11SPrabhakar Kushwaha 		    uint32_t			cmd_flags,
928a2a55e51SPrabhakar Kushwaha 		    uint16_t			token,
929a2a55e51SPrabhakar Kushwaha 		    const struct dprc_endpoint	*endpoint);
930a2a55e51SPrabhakar Kushwaha 
931a2a55e51SPrabhakar Kushwaha /**
932a2a55e51SPrabhakar Kushwaha * dprc_get_connection() - Get connected endpoint and link status if connection
933a2a55e51SPrabhakar Kushwaha *			exists.
93487457d11SPrabhakar Kushwaha * @mc_io:	Pointer to MC portal's I/O object
93587457d11SPrabhakar Kushwaha * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
93687457d11SPrabhakar Kushwaha * @token:	Token of DPRC object
93787457d11SPrabhakar Kushwaha * @endpoint1:	Endpoint 1 configuration parameters
93887457d11SPrabhakar Kushwaha * @endpoint2:	Returned endpoint 2 configuration parameters
939*53e353fcSPrabhakar Kushwaha * @state:	Returned link state:
940*53e353fcSPrabhakar Kushwaha *           1 - link is up;
941*53e353fcSPrabhakar Kushwaha *           0 - link is down;
942*53e353fcSPrabhakar Kushwaha *           -1 - no connection (endpoint2 information is irrelevant)
943a2a55e51SPrabhakar Kushwaha *
944a2a55e51SPrabhakar Kushwaha * Return:     '0' on Success; -ENAVAIL if connection does not exist.
945a2a55e51SPrabhakar Kushwaha */
946a2a55e51SPrabhakar Kushwaha int dprc_get_connection(struct fsl_mc_io		*mc_io,
94787457d11SPrabhakar Kushwaha 			uint32_t			cmd_flags,
948a2a55e51SPrabhakar Kushwaha 			uint16_t			token,
949a2a55e51SPrabhakar Kushwaha 			const struct dprc_endpoint	*endpoint1,
950a2a55e51SPrabhakar Kushwaha 			struct dprc_endpoint		*endpoint2,
951a2a55e51SPrabhakar Kushwaha 			int				*state);
952a2a55e51SPrabhakar Kushwaha 
953a2a55e51SPrabhakar Kushwaha #endif /* _FSL_DPRC_H */
954