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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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