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 */ 13*87457d11SPrabhakar Kushwaha #define DPRC_VER_MAJOR 5 14a2a55e51SPrabhakar Kushwaha #define DPRC_VER_MINOR 0 15a2a55e51SPrabhakar Kushwaha 16a2a55e51SPrabhakar Kushwaha /* Command IDs */ 17a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_CLOSE 0x800 18a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_OPEN 0x805 19a2a55e51SPrabhakar Kushwaha 20a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_ATTR 0x004 21a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_RESET_CONT 0x005 22a2a55e51SPrabhakar Kushwaha 23a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_CONT_ID 0x830 24a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_OBJ_COUNT 0x159 25a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_OBJ 0x15A 26a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_RES_COUNT 0x15B 27a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_RES_IDS 0x15C 28a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_OBJ_REG 0x15E 29a2a55e51SPrabhakar Kushwaha 30a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_CONNECT 0x167 31a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_DISCONNECT 0x168 32a2a55e51SPrabhakar Kushwaha #define DPRC_CMDID_GET_CONNECTION 0x16C 33a2a55e51SPrabhakar Kushwaha 34a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 35a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_CONTAINER_ID(cmd, container_id) \ 36a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 0, 32, int, container_id) 37a2a55e51SPrabhakar Kushwaha 38a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 39a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_OPEN(cmd, container_id) \ 40a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, container_id) 41a2a55e51SPrabhakar Kushwaha 42a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 43a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_RESET_CONTAINER(cmd, child_container_id) \ 44a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, child_container_id) 45a2a55e51SPrabhakar Kushwaha 46a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 47a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_ATTRIBUTES(cmd, attr) \ 48a2a55e51SPrabhakar Kushwaha do { \ 49a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 0, 32, int, attr->container_id); \ 50a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 32, 16, uint16_t, attr->icid); \ 51a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 0, 32, uint32_t, attr->options);\ 52a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 32, 32, int, attr->portal_id); \ 53a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 2, 0, 16, uint16_t, attr->version.major);\ 54a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 2, 16, 16, uint16_t, attr->version.minor);\ 55a2a55e51SPrabhakar Kushwaha } while (0) 56a2a55e51SPrabhakar Kushwaha 57a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 58a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ_COUNT(cmd, obj_count) \ 59a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 32, 32, int, obj_count) 60a2a55e51SPrabhakar Kushwaha 61a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 62a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_OBJ(cmd, obj_index) \ 63a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, obj_index) 64a2a55e51SPrabhakar Kushwaha 65a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 66a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ(cmd, obj_desc) \ 67a2a55e51SPrabhakar Kushwaha do { \ 68a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 32, 32, int, obj_desc->id); \ 69a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 0, 16, uint16_t, obj_desc->vendor); \ 70a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 16, 8, uint8_t, obj_desc->irq_count); \ 71a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 24, 8, uint8_t, obj_desc->region_count); \ 72a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 32, 32, uint32_t, obj_desc->state);\ 73a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 2, 0, 16, uint16_t, obj_desc->ver_major);\ 74a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 2, 16, 16, uint16_t, obj_desc->ver_minor);\ 75a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 0, 8, char, obj_desc->type[0]);\ 76a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 8, 8, char, obj_desc->type[1]);\ 77a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 16, 8, char, obj_desc->type[2]);\ 78a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 24, 8, char, obj_desc->type[3]);\ 79a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 32, 8, char, obj_desc->type[4]);\ 80a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 40, 8, char, obj_desc->type[5]);\ 81a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 48, 8, char, obj_desc->type[6]);\ 82a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 56, 8, char, obj_desc->type[7]);\ 83a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 0, 8, char, obj_desc->type[8]);\ 84a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 8, 8, char, obj_desc->type[9]);\ 85a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 16, 8, char, obj_desc->type[10]);\ 86a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 24, 8, char, obj_desc->type[11]);\ 87a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 32, 8, char, obj_desc->type[12]);\ 88a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 40, 8, char, obj_desc->type[13]);\ 89a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 48, 8, char, obj_desc->type[14]);\ 90a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 56, 8, char, obj_desc->type[15]);\ 911f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 0, 8, char, obj_desc->label[0]);\ 921f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 8, 8, char, obj_desc->label[1]);\ 931f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 16, 8, char, obj_desc->label[2]);\ 941f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 24, 8, char, obj_desc->label[3]);\ 951f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 32, 8, char, obj_desc->label[4]);\ 961f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 40, 8, char, obj_desc->label[5]);\ 971f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 48, 8, char, obj_desc->label[6]);\ 981f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 56, 8, char, obj_desc->label[7]);\ 991f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 0, 8, char, obj_desc->label[8]);\ 1001f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 8, 8, char, obj_desc->label[9]);\ 1011f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 16, 8, char, obj_desc->label[10]);\ 1021f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 24, 8, char, obj_desc->label[11]);\ 1031f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 32, 8, char, obj_desc->label[12]);\ 1041f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 40, 8, char, obj_desc->label[13]);\ 1051f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 48, 8, char, obj_desc->label[14]);\ 1061f1c25c7SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 56, 8, char, obj_desc->label[15]);\ 107a2a55e51SPrabhakar Kushwaha } while (0) 108a2a55e51SPrabhakar Kushwaha 109a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 110a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_RES_COUNT(cmd, type) \ 111a2a55e51SPrabhakar Kushwaha do { \ 112a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 0, 8, char, type[0]);\ 113a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 8, 8, char, type[1]);\ 114a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 16, 8, char, type[2]);\ 115a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 24, 8, char, type[3]);\ 116a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 32, 8, char, type[4]);\ 117a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 40, 8, char, type[5]);\ 118a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 48, 8, char, type[6]);\ 119a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 56, 8, char, type[7]);\ 120a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 0, 8, char, type[8]);\ 121a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 8, 8, char, type[9]);\ 122a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 16, 8, char, type[10]);\ 123a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 24, 8, char, type[11]);\ 124a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 32, 8, char, type[12]);\ 125a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 40, 8, char, type[13]);\ 126a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 48, 8, char, type[14]);\ 127a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 56, 8, char, type[15]);\ 128a2a55e51SPrabhakar Kushwaha } while (0) 129a2a55e51SPrabhakar Kushwaha 130a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 131a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_RES_COUNT(cmd, res_count) \ 132a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 0, 32, int, res_count) 133a2a55e51SPrabhakar Kushwaha 134a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 135a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_RES_IDS(cmd, range_desc, type) \ 136a2a55e51SPrabhakar Kushwaha do { \ 137a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 42, 7, enum dprc_iter_status, \ 138a2a55e51SPrabhakar Kushwaha range_desc->iter_status); \ 139a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 0, 32, int, range_desc->base_id); \ 140a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 32, 32, int, range_desc->last_id);\ 141a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 0, 8, char, type[0]);\ 142a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 8, 8, char, type[1]);\ 143a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 16, 8, char, type[2]);\ 144a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 24, 8, char, type[3]);\ 145a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 32, 8, char, type[4]);\ 146a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 40, 8, char, type[5]);\ 147a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 48, 8, char, type[6]);\ 148a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 56, 8, char, type[7]);\ 149a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 0, 8, char, type[8]);\ 150a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 8, 8, char, type[9]);\ 151a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 16, 8, char, type[10]);\ 152a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 24, 8, char, type[11]);\ 153a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 32, 8, char, type[12]);\ 154a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 40, 8, char, type[13]);\ 155a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 48, 8, char, type[14]);\ 156a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 56, 8, char, type[15]);\ 157a2a55e51SPrabhakar Kushwaha } while (0) 158a2a55e51SPrabhakar Kushwaha 159a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 160a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_RES_IDS(cmd, range_desc) \ 161a2a55e51SPrabhakar Kushwaha do { \ 162a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 42, 7, enum dprc_iter_status, \ 163a2a55e51SPrabhakar Kushwaha range_desc->iter_status);\ 164a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 0, 32, int, range_desc->base_id); \ 165a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 32, 32, int, range_desc->last_id);\ 166a2a55e51SPrabhakar Kushwaha } while (0) 167a2a55e51SPrabhakar Kushwaha 168a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 169a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_OBJ_REGION(cmd, obj_type, obj_id, region_index) \ 170a2a55e51SPrabhakar Kushwaha do { \ 171a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, obj_id); \ 172a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 48, 8, uint8_t, region_index);\ 173a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 0, 8, char, obj_type[0]);\ 174a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 8, 8, char, obj_type[1]);\ 175a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 16, 8, char, obj_type[2]);\ 176a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 24, 8, char, obj_type[3]);\ 177a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 32, 8, char, obj_type[4]);\ 178a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 40, 8, char, obj_type[5]);\ 179a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 48, 8, char, obj_type[6]);\ 180a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 56, 8, char, obj_type[7]);\ 181a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 0, 8, char, obj_type[8]);\ 182a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 8, 8, char, obj_type[9]);\ 183a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 16, 8, char, obj_type[10]);\ 184a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 24, 8, char, obj_type[11]);\ 185a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 32, 8, char, obj_type[12]);\ 186a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 40, 8, char, obj_type[13]);\ 187a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 48, 8, char, obj_type[14]);\ 188a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 56, 8, char, obj_type[15]);\ 189a2a55e51SPrabhakar Kushwaha } while (0) 190a2a55e51SPrabhakar Kushwaha 191a2a55e51SPrabhakar Kushwaha /* param, offset, width, type, arg_name */ 192a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_OBJ_REGION(cmd, region_desc) \ 193a2a55e51SPrabhakar Kushwaha do { \ 194*87457d11SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 0, 32, uint32_t, region_desc->base_offset);\ 195a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 2, 0, 32, uint32_t, region_desc->size); \ 196*87457d11SPrabhakar Kushwaha MC_RSP_OP(cmd, 2, 32, 4, enum dprc_region_type, region_desc->type);\ 197*87457d11SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 0, 32, uint32_t, region_desc->flags);\ 198a2a55e51SPrabhakar Kushwaha } while (0) 199a2a55e51SPrabhakar Kushwaha 200a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 201*87457d11SPrabhakar Kushwaha #define DPRC_CMD_SET_OBJ_LABEL(cmd, obj_type, obj_id, label) \ 2021f1c25c7SPrabhakar Kushwaha do { \ 203*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, obj_id); \ 2041f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 0, 8, char, label[0]);\ 2051f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 8, 8, char, label[1]);\ 2061f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 16, 8, char, label[2]);\ 2071f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 24, 8, char, label[3]);\ 2081f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 32, 8, char, label[4]);\ 2091f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 40, 8, char, label[5]);\ 2101f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 48, 8, char, label[6]);\ 2111f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 56, 8, char, label[7]);\ 2121f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 0, 8, char, label[8]);\ 2131f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 8, 8, char, label[9]);\ 2141f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 16, 8, char, label[10]);\ 2151f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 24, 8, char, label[11]);\ 2161f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 32, 8, char, label[12]);\ 2171f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 40, 8, char, label[13]);\ 2181f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 48, 8, char, label[14]);\ 2191f1c25c7SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 56, 8, char, label[15]);\ 220*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 0, 8, char, obj_type[0]);\ 221*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 8, 8, char, obj_type[1]);\ 222*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 16, 8, char, obj_type[2]);\ 223*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 24, 8, char, obj_type[3]);\ 224*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 32, 8, char, obj_type[4]);\ 225*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 40, 8, char, obj_type[5]);\ 226*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 48, 8, char, obj_type[6]);\ 227*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 56, 8, char, obj_type[7]);\ 228*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 0, 8, char, obj_type[8]);\ 229*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 8, 8, char, obj_type[9]);\ 230*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 16, 8, char, obj_type[10]);\ 231*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 24, 8, char, obj_type[11]);\ 232*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 32, 8, char, obj_type[12]);\ 233*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 40, 8, char, obj_type[13]);\ 234*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 48, 8, char, obj_type[14]);\ 235*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 56, 8, char, obj_type[15]);\ 2361f1c25c7SPrabhakar Kushwaha } while (0) 2371f1c25c7SPrabhakar Kushwaha 2381f1c25c7SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 239*87457d11SPrabhakar Kushwaha #define DPRC_CMD_CONNECT(cmd, endpoint1, endpoint2, cfg) \ 240a2a55e51SPrabhakar Kushwaha do { \ 241a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, endpoint1->id); \ 242*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 32, 16, uint16_t, endpoint1->if_id); \ 243a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 0, 32, int, endpoint2->id); \ 244*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 32, 16, uint16_t, endpoint2->if_id); \ 245a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 0, 8, char, endpoint1->type[0]); \ 246a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 8, 8, char, endpoint1->type[1]); \ 247a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 16, 8, char, endpoint1->type[2]); \ 248a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 24, 8, char, endpoint1->type[3]); \ 249a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 32, 8, char, endpoint1->type[4]); \ 250a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 40, 8, char, endpoint1->type[5]); \ 251a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 48, 8, char, endpoint1->type[6]); \ 252a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 56, 8, char, endpoint1->type[7]); \ 253a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 0, 8, char, endpoint1->type[8]); \ 254a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 8, 8, char, endpoint1->type[9]); \ 255a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 16, 8, char, endpoint1->type[10]); \ 256a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 24, 8, char, endpoint1->type[11]); \ 257a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 32, 8, char, endpoint1->type[12]); \ 258a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 40, 8, char, endpoint1->type[13]); \ 259a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 48, 8, char, endpoint1->type[14]); \ 260a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 3, 56, 8, char, endpoint1->type[15]); \ 261*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 0, 32, uint32_t, cfg->max_rate); \ 262*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 4, 32, 32, uint32_t, cfg->committed_rate); \ 263a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 0, 8, char, endpoint2->type[0]); \ 264a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 8, 8, char, endpoint2->type[1]); \ 265a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 16, 8, char, endpoint2->type[2]); \ 266a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 24, 8, char, endpoint2->type[3]); \ 267a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 32, 8, char, endpoint2->type[4]); \ 268a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 40, 8, char, endpoint2->type[5]); \ 269a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 48, 8, char, endpoint2->type[6]); \ 270a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 5, 56, 8, char, endpoint2->type[7]); \ 271a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 0, 8, char, endpoint2->type[8]); \ 272a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 8, 8, char, endpoint2->type[9]); \ 273a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 16, 8, char, endpoint2->type[10]); \ 274a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 24, 8, char, endpoint2->type[11]); \ 275a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 32, 8, char, endpoint2->type[12]); \ 276a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 40, 8, char, endpoint2->type[13]); \ 277a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 48, 8, char, endpoint2->type[14]); \ 278a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 6, 56, 8, char, endpoint2->type[15]); \ 279a2a55e51SPrabhakar Kushwaha } while (0) 280a2a55e51SPrabhakar Kushwaha 281a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 282a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_DISCONNECT(cmd, endpoint) \ 283a2a55e51SPrabhakar Kushwaha do { \ 284a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, endpoint->id); \ 285*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 32, 16, uint16_t, endpoint->if_id); \ 286a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 0, 8, char, endpoint->type[0]); \ 287a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 8, 8, char, endpoint->type[1]); \ 288a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 16, 8, char, endpoint->type[2]); \ 289a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 24, 8, char, endpoint->type[3]); \ 290a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 32, 8, char, endpoint->type[4]); \ 291a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 40, 8, char, endpoint->type[5]); \ 292a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 48, 8, char, endpoint->type[6]); \ 293a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 56, 8, char, endpoint->type[7]); \ 294a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 0, 8, char, endpoint->type[8]); \ 295a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 8, 8, char, endpoint->type[9]); \ 296a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 16, 8, char, endpoint->type[10]); \ 297a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 24, 8, char, endpoint->type[11]); \ 298a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 32, 8, char, endpoint->type[12]); \ 299a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 40, 8, char, endpoint->type[13]); \ 300a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 48, 8, char, endpoint->type[14]); \ 301a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 56, 8, char, endpoint->type[15]); \ 302a2a55e51SPrabhakar Kushwaha } while (0) 303a2a55e51SPrabhakar Kushwaha 304a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 305a2a55e51SPrabhakar Kushwaha #define DPRC_CMD_GET_CONNECTION(cmd, endpoint1) \ 306a2a55e51SPrabhakar Kushwaha do { \ 307a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, endpoint1->id); \ 308*87457d11SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 32, 16, uint16_t, endpoint1->if_id); \ 309a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 0, 8, char, endpoint1->type[0]); \ 310a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 8, 8, char, endpoint1->type[1]); \ 311a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 16, 8, char, endpoint1->type[2]); \ 312a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 24, 8, char, endpoint1->type[3]); \ 313a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 32, 8, char, endpoint1->type[4]); \ 314a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 40, 8, char, endpoint1->type[5]); \ 315a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 48, 8, char, endpoint1->type[6]); \ 316a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 1, 56, 8, char, endpoint1->type[7]); \ 317a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 0, 8, char, endpoint1->type[8]); \ 318a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 8, 8, char, endpoint1->type[9]); \ 319a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 16, 8, char, endpoint1->type[10]); \ 320a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 24, 8, char, endpoint1->type[11]); \ 321a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 32, 8, char, endpoint1->type[12]); \ 322a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 40, 8, char, endpoint1->type[13]); \ 323a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 48, 8, char, endpoint1->type[14]); \ 324a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 2, 56, 8, char, endpoint1->type[15]); \ 325a2a55e51SPrabhakar Kushwaha } while (0) 326a2a55e51SPrabhakar Kushwaha 327a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 328a2a55e51SPrabhakar Kushwaha #define DPRC_RSP_GET_CONNECTION(cmd, endpoint2, state) \ 329a2a55e51SPrabhakar Kushwaha do { \ 330a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 0, 32, int, endpoint2->id); \ 331*87457d11SPrabhakar Kushwaha MC_RSP_OP(cmd, 3, 32, 16, uint16_t, endpoint2->if_id); \ 332a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 0, 8, char, endpoint2->type[0]); \ 333a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 8, 8, char, endpoint2->type[1]); \ 334a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 16, 8, char, endpoint2->type[2]); \ 335a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 24, 8, char, endpoint2->type[3]); \ 336a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 32, 8, char, endpoint2->type[4]); \ 337a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 40, 8, char, endpoint2->type[5]); \ 338a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 48, 8, char, endpoint2->type[6]); \ 339a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 4, 56, 8, char, endpoint2->type[7]); \ 340a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 0, 8, char, endpoint2->type[8]); \ 341a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 8, 8, char, endpoint2->type[9]); \ 342a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 16, 8, char, endpoint2->type[10]); \ 343a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 24, 8, char, endpoint2->type[11]); \ 344a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 32, 8, char, endpoint2->type[12]); \ 345a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 40, 8, char, endpoint2->type[13]); \ 346a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 48, 8, char, endpoint2->type[14]); \ 347a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 5, 56, 8, char, endpoint2->type[15]); \ 348a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 6, 0, 32, int, state); \ 349a2a55e51SPrabhakar Kushwaha } while (0) 350a2a55e51SPrabhakar Kushwaha 351a2a55e51SPrabhakar Kushwaha /* Data Path Resource Container API 352a2a55e51SPrabhakar Kushwaha * Contains DPRC API for managing and querying DPAA resources 353a2a55e51SPrabhakar Kushwaha */ 3541f1c25c7SPrabhakar Kushwaha 355a2a55e51SPrabhakar Kushwaha struct fsl_mc_io; 356a2a55e51SPrabhakar Kushwaha 357a2a55e51SPrabhakar Kushwaha /** 358a2a55e51SPrabhakar Kushwaha * Set this value as the icid value in dprc_cfg structure when creating a 359a2a55e51SPrabhakar Kushwaha * container, in case the ICID is not selected by the user and should be 360a2a55e51SPrabhakar Kushwaha * allocated by the DPRC from the pool of ICIDs. 361a2a55e51SPrabhakar Kushwaha */ 362a2a55e51SPrabhakar Kushwaha #define DPRC_GET_ICID_FROM_POOL (uint16_t)(~(0)) 363a2a55e51SPrabhakar Kushwaha 364a2a55e51SPrabhakar Kushwaha /** 365a2a55e51SPrabhakar Kushwaha * Set this value as the portal_id value in dprc_cfg structure when creating a 366a2a55e51SPrabhakar Kushwaha * container, in case the portal ID is not specifically selected by the 367a2a55e51SPrabhakar Kushwaha * user and should be allocated by the DPRC from the pool of portal ids. 368a2a55e51SPrabhakar Kushwaha */ 369a2a55e51SPrabhakar Kushwaha #define DPRC_GET_PORTAL_ID_FROM_POOL (int)(~(0)) 370a2a55e51SPrabhakar Kushwaha 371a2a55e51SPrabhakar Kushwaha /** 372a2a55e51SPrabhakar Kushwaha * dprc_get_container_id() - Get container ID associated with a given portal. 373a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 374*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 375a2a55e51SPrabhakar Kushwaha * @container_id: Requested container ID 376a2a55e51SPrabhakar Kushwaha * 377a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 378a2a55e51SPrabhakar Kushwaha */ 379*87457d11SPrabhakar Kushwaha int dprc_get_container_id(struct fsl_mc_io *mc_io, 380*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 381*87457d11SPrabhakar Kushwaha int *container_id); 382a2a55e51SPrabhakar Kushwaha 383a2a55e51SPrabhakar Kushwaha /** 384a2a55e51SPrabhakar Kushwaha * dprc_open() - Open DPRC object for use 385a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 386*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 387a2a55e51SPrabhakar Kushwaha * @container_id: Container ID to open 388a2a55e51SPrabhakar Kushwaha * @token: Returned token of DPRC object 389a2a55e51SPrabhakar Kushwaha * 390a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 391a2a55e51SPrabhakar Kushwaha * 392a2a55e51SPrabhakar Kushwaha * @warning Required before any operation on the object. 393a2a55e51SPrabhakar Kushwaha */ 394*87457d11SPrabhakar Kushwaha int dprc_open(struct fsl_mc_io *mc_io, 395*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 396*87457d11SPrabhakar Kushwaha int container_id, 397*87457d11SPrabhakar Kushwaha uint16_t *token); 398a2a55e51SPrabhakar Kushwaha 399a2a55e51SPrabhakar Kushwaha /** 400a2a55e51SPrabhakar Kushwaha * dprc_close() - Close the control session of the object 401a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 402*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 403a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 404a2a55e51SPrabhakar Kushwaha * 405a2a55e51SPrabhakar Kushwaha * After this function is called, no further operations are 406a2a55e51SPrabhakar Kushwaha * allowed on the object without opening a new control session. 407a2a55e51SPrabhakar Kushwaha * 408a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 409a2a55e51SPrabhakar Kushwaha */ 410*87457d11SPrabhakar Kushwaha int dprc_close(struct fsl_mc_io *mc_io, 411*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 412*87457d11SPrabhakar Kushwaha uint16_t token); 413a2a55e51SPrabhakar Kushwaha 414a2a55e51SPrabhakar Kushwaha /** 415a2a55e51SPrabhakar Kushwaha * Container general options 416a2a55e51SPrabhakar Kushwaha * 417a2a55e51SPrabhakar Kushwaha * These options may be selected at container creation by the container creator 418a2a55e51SPrabhakar Kushwaha * and can be retrieved using dprc_get_attributes() 419a2a55e51SPrabhakar Kushwaha */ 420a2a55e51SPrabhakar Kushwaha 421a2a55e51SPrabhakar Kushwaha /* Spawn Policy Option allowed - Indicates that the new container is allowed 422a2a55e51SPrabhakar Kushwaha * to spawn and have its own child containers. 423a2a55e51SPrabhakar Kushwaha */ 424a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_SPAWN_ALLOWED 0x00000001 425a2a55e51SPrabhakar Kushwaha 426a2a55e51SPrabhakar Kushwaha /* General Container allocation policy - Indicates that the new container is 427a2a55e51SPrabhakar Kushwaha * allowed to allocate requested resources from its parent container; if not 428a2a55e51SPrabhakar Kushwaha * set, the container is only allowed to use resources in its own pools; Note 429a2a55e51SPrabhakar Kushwaha * that this is a container's global policy, but the parent container may 430a2a55e51SPrabhakar Kushwaha * override it and set specific quota per resource type. 431a2a55e51SPrabhakar Kushwaha */ 432a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_ALLOC_ALLOWED 0x00000002 433a2a55e51SPrabhakar Kushwaha 434a2a55e51SPrabhakar Kushwaha /* Object initialization allowed - software context associated with this 435a2a55e51SPrabhakar Kushwaha * container is allowed to invoke object initialization operations. 436a2a55e51SPrabhakar Kushwaha */ 437a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_OBJ_CREATE_ALLOWED 0x00000004 438a2a55e51SPrabhakar Kushwaha 439a2a55e51SPrabhakar Kushwaha /* Topology change allowed - software context associated with this 440a2a55e51SPrabhakar Kushwaha * container is allowed to invoke topology operations, such as attach/detach 441a2a55e51SPrabhakar Kushwaha * of network objects. 442a2a55e51SPrabhakar Kushwaha */ 443a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_TOPOLOGY_CHANGES_ALLOWED 0x00000008 444a2a55e51SPrabhakar Kushwaha 445a2a55e51SPrabhakar Kushwaha /* IOMMU bypass - indicates whether objects of this container are permitted 446a2a55e51SPrabhakar Kushwaha * to bypass the IOMMU. 447a2a55e51SPrabhakar Kushwaha */ 448a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_IOMMU_BYPASS 0x00000010 449a2a55e51SPrabhakar Kushwaha 450a2a55e51SPrabhakar Kushwaha /* AIOP - Indicates that container belongs to AIOP. */ 451a2a55e51SPrabhakar Kushwaha #define DPRC_CFG_OPT_AIOP 0x00000020 452a2a55e51SPrabhakar Kushwaha 453a2a55e51SPrabhakar Kushwaha /** 454a2a55e51SPrabhakar Kushwaha * struct dprc_cfg - Container configuration options 455a2a55e51SPrabhakar Kushwaha * @icid: Container's ICID; if set to 'DPRC_GET_ICID_FROM_POOL', a free 456a2a55e51SPrabhakar Kushwaha * ICID value is allocated by the DPRC 457a2a55e51SPrabhakar Kushwaha * @portal_id: Portal ID; if set to 'DPRC_GET_PORTAL_ID_FROM_POOL', a free 458a2a55e51SPrabhakar Kushwaha * portal ID is allocated by the DPRC 459a2a55e51SPrabhakar Kushwaha * @options: Combination of 'DPRC_CFG_OPT_<X>' options 4601f1c25c7SPrabhakar Kushwaha * @label: Object's label 461a2a55e51SPrabhakar Kushwaha */ 462a2a55e51SPrabhakar Kushwaha struct dprc_cfg { 463a2a55e51SPrabhakar Kushwaha uint16_t icid; 464a2a55e51SPrabhakar Kushwaha int portal_id; 465a2a55e51SPrabhakar Kushwaha uint64_t options; 4661f1c25c7SPrabhakar Kushwaha char label[16]; 467a2a55e51SPrabhakar Kushwaha }; 468a2a55e51SPrabhakar Kushwaha 469a2a55e51SPrabhakar Kushwaha /** 470a2a55e51SPrabhakar Kushwaha * dprc_reset_container - Reset child container. 471a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 472*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 473a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 474a2a55e51SPrabhakar Kushwaha * @child_container_id: ID of the container to reset 475a2a55e51SPrabhakar Kushwaha * 476a2a55e51SPrabhakar Kushwaha * In case a software context crashes or becomes non-responsive, the parent 477a2a55e51SPrabhakar Kushwaha * may wish to reset its resources container before the software context is 478a2a55e51SPrabhakar Kushwaha * restarted. 479a2a55e51SPrabhakar Kushwaha * 480a2a55e51SPrabhakar Kushwaha * This routine informs all objects assigned to the child container that the 481a2a55e51SPrabhakar Kushwaha * container is being reset, so they may perform any cleanup operations that are 482a2a55e51SPrabhakar Kushwaha * needed. All objects handles that were owned by the child container shall be 483a2a55e51SPrabhakar Kushwaha * closed. 484a2a55e51SPrabhakar Kushwaha * 485a2a55e51SPrabhakar Kushwaha * Note that such request may be submitted even if the child software context 486a2a55e51SPrabhakar Kushwaha * has not crashed, but the resulting object cleanup operations will not be 487a2a55e51SPrabhakar Kushwaha * aware of that. 488a2a55e51SPrabhakar Kushwaha * 489a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 490a2a55e51SPrabhakar Kushwaha */ 491a2a55e51SPrabhakar Kushwaha int dprc_reset_container(struct fsl_mc_io *mc_io, 492*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 493a2a55e51SPrabhakar Kushwaha uint16_t token, 494a2a55e51SPrabhakar Kushwaha int child_container_id); 495a2a55e51SPrabhakar Kushwaha 496a2a55e51SPrabhakar Kushwaha /** 497a2a55e51SPrabhakar Kushwaha * struct dprc_attributes - Container attributes 498a2a55e51SPrabhakar Kushwaha * @container_id: Container's ID 499a2a55e51SPrabhakar Kushwaha * @icid: Container's ICID 500a2a55e51SPrabhakar Kushwaha * @portal_id: Container's portal ID 501a2a55e51SPrabhakar Kushwaha * @options: Container's options as set at container's creation 502a2a55e51SPrabhakar Kushwaha * @version: DPRC version 503a2a55e51SPrabhakar Kushwaha */ 504a2a55e51SPrabhakar Kushwaha struct dprc_attributes { 505a2a55e51SPrabhakar Kushwaha int container_id; 506a2a55e51SPrabhakar Kushwaha uint16_t icid; 507a2a55e51SPrabhakar Kushwaha int portal_id; 508a2a55e51SPrabhakar Kushwaha uint64_t options; 509a2a55e51SPrabhakar Kushwaha /** 510a2a55e51SPrabhakar Kushwaha * struct version - DPRC version 511a2a55e51SPrabhakar Kushwaha * @major: DPRC major version 512a2a55e51SPrabhakar Kushwaha * @minor: DPRC minor version 513a2a55e51SPrabhakar Kushwaha */ 514a2a55e51SPrabhakar Kushwaha struct { 515a2a55e51SPrabhakar Kushwaha uint16_t major; 516a2a55e51SPrabhakar Kushwaha uint16_t minor; 517a2a55e51SPrabhakar Kushwaha } version; 518a2a55e51SPrabhakar Kushwaha }; 519a2a55e51SPrabhakar Kushwaha 520a2a55e51SPrabhakar Kushwaha /** 521a2a55e51SPrabhakar Kushwaha * dprc_get_attributes() - Obtains container attributes 522a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 523*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 524a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 525*87457d11SPrabhakar Kushwaha * @attributes: Returned container attributes 526a2a55e51SPrabhakar Kushwaha * 527a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 528a2a55e51SPrabhakar Kushwaha */ 529a2a55e51SPrabhakar Kushwaha int dprc_get_attributes(struct fsl_mc_io *mc_io, 530*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 531a2a55e51SPrabhakar Kushwaha uint16_t token, 532a2a55e51SPrabhakar Kushwaha struct dprc_attributes *attributes); 533a2a55e51SPrabhakar Kushwaha 534a2a55e51SPrabhakar Kushwaha /** 535a2a55e51SPrabhakar Kushwaha * dprc_get_obj_count() - Obtains the number of objects in the DPRC 536a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 537*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 538a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 539a2a55e51SPrabhakar Kushwaha * @obj_count: Number of objects assigned to the DPRC 540a2a55e51SPrabhakar Kushwaha * 541a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 542a2a55e51SPrabhakar Kushwaha */ 543*87457d11SPrabhakar Kushwaha int dprc_get_obj_count(struct fsl_mc_io *mc_io, 544*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 545*87457d11SPrabhakar Kushwaha uint16_t token, 546*87457d11SPrabhakar Kushwaha int *obj_count); 547a2a55e51SPrabhakar Kushwaha 548a2a55e51SPrabhakar Kushwaha /* Objects Attributes Flags */ 549a2a55e51SPrabhakar Kushwaha 550a2a55e51SPrabhakar Kushwaha /* Opened state - Indicates that an object is open by at least one owner */ 551a2a55e51SPrabhakar Kushwaha #define DPRC_OBJ_STATE_OPEN 0x00000001 552a2a55e51SPrabhakar Kushwaha /* Plugged state - Indicates that the object is plugged */ 553a2a55e51SPrabhakar Kushwaha #define DPRC_OBJ_STATE_PLUGGED 0x00000002 554a2a55e51SPrabhakar Kushwaha 555a2a55e51SPrabhakar Kushwaha /** 556a2a55e51SPrabhakar Kushwaha * struct dprc_obj_desc - Object descriptor, returned from dprc_get_obj() 557a2a55e51SPrabhakar Kushwaha * @type: Type of object: NULL terminated string 558a2a55e51SPrabhakar Kushwaha * @id: ID of logical object resource 559a2a55e51SPrabhakar Kushwaha * @vendor: Object vendor identifier 560a2a55e51SPrabhakar Kushwaha * @ver_major: Major version number 561a2a55e51SPrabhakar Kushwaha * @ver_minor: Minor version number 562a2a55e51SPrabhakar Kushwaha * @irq_count: Number of interrupts supported by the object 563a2a55e51SPrabhakar Kushwaha * @region_count: Number of mappable regions supported by the object 564a2a55e51SPrabhakar Kushwaha * @state: Object state: combination of DPRC_OBJ_STATE_ states 5651f1c25c7SPrabhakar Kushwaha * @label: Object label 566a2a55e51SPrabhakar Kushwaha */ 567a2a55e51SPrabhakar Kushwaha struct dprc_obj_desc { 568a2a55e51SPrabhakar Kushwaha char type[16]; 569a2a55e51SPrabhakar Kushwaha int id; 570a2a55e51SPrabhakar Kushwaha uint16_t vendor; 571a2a55e51SPrabhakar Kushwaha uint16_t ver_major; 572a2a55e51SPrabhakar Kushwaha uint16_t ver_minor; 573a2a55e51SPrabhakar Kushwaha uint8_t irq_count; 574a2a55e51SPrabhakar Kushwaha uint8_t region_count; 575a2a55e51SPrabhakar Kushwaha uint32_t state; 5761f1c25c7SPrabhakar Kushwaha char label[16]; 577a2a55e51SPrabhakar Kushwaha }; 578a2a55e51SPrabhakar Kushwaha 579a2a55e51SPrabhakar Kushwaha /** 580a2a55e51SPrabhakar Kushwaha * dprc_get_obj() - Get general information on an object 581a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 582*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 583a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 584a2a55e51SPrabhakar Kushwaha * @obj_index: Index of the object to be queried (< obj_count) 585a2a55e51SPrabhakar Kushwaha * @obj_desc: Returns the requested object descriptor 586a2a55e51SPrabhakar Kushwaha * 587a2a55e51SPrabhakar Kushwaha * The object descriptors are retrieved one by one by incrementing 588a2a55e51SPrabhakar Kushwaha * obj_index up to (not including) the value of obj_count returned 589a2a55e51SPrabhakar Kushwaha * from dprc_get_obj_count(). dprc_get_obj_count() must 590a2a55e51SPrabhakar Kushwaha * be called prior to dprc_get_obj(). 591a2a55e51SPrabhakar Kushwaha * 592a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 593a2a55e51SPrabhakar Kushwaha */ 594a2a55e51SPrabhakar Kushwaha int dprc_get_obj(struct fsl_mc_io *mc_io, 595*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 596a2a55e51SPrabhakar Kushwaha uint16_t token, 597a2a55e51SPrabhakar Kushwaha int obj_index, 598a2a55e51SPrabhakar Kushwaha struct dprc_obj_desc *obj_desc); 599a2a55e51SPrabhakar Kushwaha 600a2a55e51SPrabhakar Kushwaha /** 6011f1c25c7SPrabhakar Kushwaha * dprc_get_res_count() - Obtains the number of free resources that are 6021f1c25c7SPrabhakar Kushwaha * assigned to this container, by pool type 603a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 604*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 605a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 606a2a55e51SPrabhakar Kushwaha * @type: pool type 607a2a55e51SPrabhakar Kushwaha * @res_count: Returned number of free resources of the given 608a2a55e51SPrabhakar Kushwaha * resource type that are assigned to this DPRC 609a2a55e51SPrabhakar Kushwaha * 610a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 611a2a55e51SPrabhakar Kushwaha */ 612a2a55e51SPrabhakar Kushwaha int dprc_get_res_count(struct fsl_mc_io *mc_io, 613*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 614a2a55e51SPrabhakar Kushwaha uint16_t token, 615a2a55e51SPrabhakar Kushwaha char *type, 616a2a55e51SPrabhakar Kushwaha int *res_count); 617a2a55e51SPrabhakar Kushwaha 618a2a55e51SPrabhakar Kushwaha /** 619a2a55e51SPrabhakar Kushwaha * enum dprc_iter_status - Iteration status 620a2a55e51SPrabhakar Kushwaha * @DPRC_ITER_STATUS_FIRST: Perform first iteration 621a2a55e51SPrabhakar Kushwaha * @DPRC_ITER_STATUS_MORE: Indicates more/next iteration is needed 622a2a55e51SPrabhakar Kushwaha * @DPRC_ITER_STATUS_LAST: Indicates last iteration 623a2a55e51SPrabhakar Kushwaha */ 624a2a55e51SPrabhakar Kushwaha enum dprc_iter_status { 625a2a55e51SPrabhakar Kushwaha DPRC_ITER_STATUS_FIRST = 0, 626a2a55e51SPrabhakar Kushwaha DPRC_ITER_STATUS_MORE = 1, 627a2a55e51SPrabhakar Kushwaha DPRC_ITER_STATUS_LAST = 2 628a2a55e51SPrabhakar Kushwaha }; 629a2a55e51SPrabhakar Kushwaha 630a2a55e51SPrabhakar Kushwaha /** 631a2a55e51SPrabhakar Kushwaha * struct dprc_res_ids_range_desc - Resource ID range descriptor 632a2a55e51SPrabhakar Kushwaha * @base_id: Base resource ID of this range 633a2a55e51SPrabhakar Kushwaha * @last_id: Last resource ID of this range 634a2a55e51SPrabhakar Kushwaha * @iter_status: Iteration status - should be set to DPRC_ITER_STATUS_FIRST at 635a2a55e51SPrabhakar Kushwaha * first iteration; while the returned marker is DPRC_ITER_STATUS_MORE, 636a2a55e51SPrabhakar Kushwaha * additional iterations are needed, until the returned marker is 637a2a55e51SPrabhakar Kushwaha * DPRC_ITER_STATUS_LAST 638a2a55e51SPrabhakar Kushwaha */ 639a2a55e51SPrabhakar Kushwaha struct dprc_res_ids_range_desc { 640a2a55e51SPrabhakar Kushwaha int base_id; 641a2a55e51SPrabhakar Kushwaha int last_id; 642a2a55e51SPrabhakar Kushwaha enum dprc_iter_status iter_status; 643a2a55e51SPrabhakar Kushwaha }; 644a2a55e51SPrabhakar Kushwaha 645a2a55e51SPrabhakar Kushwaha /** 646a2a55e51SPrabhakar Kushwaha * dprc_get_res_ids() - Obtains IDs of free resources in the container 647a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 648*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 649a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 650a2a55e51SPrabhakar Kushwaha * @type: pool type 651a2a55e51SPrabhakar Kushwaha * @range_desc: range descriptor 652a2a55e51SPrabhakar Kushwaha * 653a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 654a2a55e51SPrabhakar Kushwaha */ 655a2a55e51SPrabhakar Kushwaha int dprc_get_res_ids(struct fsl_mc_io *mc_io, 656*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 657a2a55e51SPrabhakar Kushwaha uint16_t token, 658a2a55e51SPrabhakar Kushwaha char *type, 659a2a55e51SPrabhakar Kushwaha struct dprc_res_ids_range_desc *range_desc); 660a2a55e51SPrabhakar Kushwaha 661*87457d11SPrabhakar Kushwaha /* Region flags */ 662*87457d11SPrabhakar Kushwaha /* Cacheable - Indicates that region should be mapped as cacheable */ 663*87457d11SPrabhakar Kushwaha #define DPRC_REGION_CACHEABLE 0x00000001 664*87457d11SPrabhakar Kushwaha 665*87457d11SPrabhakar Kushwaha /** 666*87457d11SPrabhakar Kushwaha * enum dprc_region_type - Region type 667*87457d11SPrabhakar Kushwaha * @DPRC_REGION_TYPE_MC_PORTAL: MC portal region 668*87457d11SPrabhakar Kushwaha * @DPRC_REGION_TYPE_QBMAN_PORTAL: Qbman portal region 669*87457d11SPrabhakar Kushwaha */ 670*87457d11SPrabhakar Kushwaha enum dprc_region_type { 671*87457d11SPrabhakar Kushwaha DPRC_REGION_TYPE_MC_PORTAL, 672*87457d11SPrabhakar Kushwaha DPRC_REGION_TYPE_QBMAN_PORTAL 673*87457d11SPrabhakar Kushwaha }; 674*87457d11SPrabhakar Kushwaha 675a2a55e51SPrabhakar Kushwaha /** 676a2a55e51SPrabhakar Kushwaha * struct dprc_region_desc - Mappable region descriptor 6771f1c25c7SPrabhakar Kushwaha * @base_offset: Region offset from region's base address. 6781f1c25c7SPrabhakar Kushwaha * For DPMCP and DPRC objects, region base is offset from SoC MC portals 6791f1c25c7SPrabhakar Kushwaha * base address; For DPIO, region base is offset from SoC QMan portals 6801f1c25c7SPrabhakar Kushwaha * base address 681a2a55e51SPrabhakar Kushwaha * @size: Region size (in bytes) 682*87457d11SPrabhakar Kushwaha * @flags: Region attributes 683*87457d11SPrabhakar Kushwaha * @type: Portal region type 684a2a55e51SPrabhakar Kushwaha */ 685a2a55e51SPrabhakar Kushwaha struct dprc_region_desc { 686*87457d11SPrabhakar Kushwaha uint32_t base_offset; 687a2a55e51SPrabhakar Kushwaha uint32_t size; 688*87457d11SPrabhakar Kushwaha uint32_t flags; 689*87457d11SPrabhakar Kushwaha enum dprc_region_type type; 690a2a55e51SPrabhakar Kushwaha }; 691a2a55e51SPrabhakar Kushwaha 692a2a55e51SPrabhakar Kushwaha /** 693a2a55e51SPrabhakar Kushwaha * dprc_get_obj_region() - Get region information for a specified object. 694a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 695*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 696a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 697*87457d11SPrabhakar Kushwaha * @obj_type: Object type as returned in dprc_get_obj() 698a2a55e51SPrabhakar Kushwaha * @obj_id: Unique object instance as returned in dprc_get_obj() 699a2a55e51SPrabhakar Kushwaha * @region_index: The specific region to query 700a2a55e51SPrabhakar Kushwaha * @region_desc: Returns the requested region descriptor 701a2a55e51SPrabhakar Kushwaha * 702a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 703a2a55e51SPrabhakar Kushwaha */ 704a2a55e51SPrabhakar Kushwaha int dprc_get_obj_region(struct fsl_mc_io *mc_io, 705*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 706a2a55e51SPrabhakar Kushwaha uint16_t token, 707a2a55e51SPrabhakar Kushwaha char *obj_type, 708a2a55e51SPrabhakar Kushwaha int obj_id, 709a2a55e51SPrabhakar Kushwaha uint8_t region_index, 710a2a55e51SPrabhakar Kushwaha struct dprc_region_desc *region_desc); 711a2a55e51SPrabhakar Kushwaha /** 712a2a55e51SPrabhakar Kushwaha * struct dprc_endpoint - Endpoint description for link connect/disconnect 713a2a55e51SPrabhakar Kushwaha * operations 714a2a55e51SPrabhakar Kushwaha * @type: Endpoint object type: NULL terminated string 715a2a55e51SPrabhakar Kushwaha * @id: Endpoint object ID 716*87457d11SPrabhakar Kushwaha * @if_id: Interface ID; should be set for endpoints with multiple 717a2a55e51SPrabhakar Kushwaha * interfaces ("dpsw", "dpdmux"); for others, always set to 0 718a2a55e51SPrabhakar Kushwaha */ 719a2a55e51SPrabhakar Kushwaha struct dprc_endpoint { 720a2a55e51SPrabhakar Kushwaha char type[16]; 721a2a55e51SPrabhakar Kushwaha int id; 722*87457d11SPrabhakar Kushwaha uint16_t if_id; 723*87457d11SPrabhakar Kushwaha }; 724*87457d11SPrabhakar Kushwaha 725*87457d11SPrabhakar Kushwaha /** 726*87457d11SPrabhakar Kushwaha * struct dprc_connection_cfg - Connection configuration. 727*87457d11SPrabhakar Kushwaha * Used for virtual connections only 728*87457d11SPrabhakar Kushwaha * @committed_rate: Committed rate (Mbits/s) 729*87457d11SPrabhakar Kushwaha * @max_rate: Maximum rate (Mbits/s) 730*87457d11SPrabhakar Kushwaha */ 731*87457d11SPrabhakar Kushwaha struct dprc_connection_cfg { 732*87457d11SPrabhakar Kushwaha uint32_t committed_rate; 733*87457d11SPrabhakar Kushwaha uint32_t max_rate; 734a2a55e51SPrabhakar Kushwaha }; 735a2a55e51SPrabhakar Kushwaha 736a2a55e51SPrabhakar Kushwaha /** 737a2a55e51SPrabhakar Kushwaha * dprc_connect() - Connect two endpoints to create a network link between them 738a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 739*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 740a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 741a2a55e51SPrabhakar Kushwaha * @endpoint1: Endpoint 1 configuration parameters 742a2a55e51SPrabhakar Kushwaha * @endpoint2: Endpoint 2 configuration parameters 743*87457d11SPrabhakar Kushwaha * @cfg: Connection configuration. The connection configuration is ignored for 744*87457d11SPrabhakar Kushwaha * connections made to DPMAC objects, where rate is retrieved from the 745*87457d11SPrabhakar Kushwaha * MAC configuration. 746a2a55e51SPrabhakar Kushwaha * 747a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 748a2a55e51SPrabhakar Kushwaha */ 749a2a55e51SPrabhakar Kushwaha int dprc_connect(struct fsl_mc_io *mc_io, 750*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 751a2a55e51SPrabhakar Kushwaha uint16_t token, 752a2a55e51SPrabhakar Kushwaha const struct dprc_endpoint *endpoint1, 753*87457d11SPrabhakar Kushwaha const struct dprc_endpoint *endpoint2, 754*87457d11SPrabhakar Kushwaha const struct dprc_connection_cfg *cfg); 755a2a55e51SPrabhakar Kushwaha 756a2a55e51SPrabhakar Kushwaha /** 757a2a55e51SPrabhakar Kushwaha * dprc_disconnect() - Disconnect one endpoint to remove its network connection 758a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 759*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 760a2a55e51SPrabhakar Kushwaha * @token: Token of DPRC object 761a2a55e51SPrabhakar Kushwaha * @endpoint: Endpoint configuration parameters 762a2a55e51SPrabhakar Kushwaha * 763a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 764a2a55e51SPrabhakar Kushwaha */ 765a2a55e51SPrabhakar Kushwaha int dprc_disconnect(struct fsl_mc_io *mc_io, 766*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 767a2a55e51SPrabhakar Kushwaha uint16_t token, 768a2a55e51SPrabhakar Kushwaha const struct dprc_endpoint *endpoint); 769a2a55e51SPrabhakar Kushwaha 770a2a55e51SPrabhakar Kushwaha /** 771a2a55e51SPrabhakar Kushwaha * dprc_get_connection() - Get connected endpoint and link status if connection 772a2a55e51SPrabhakar Kushwaha * exists. 773*87457d11SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 774*87457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 775*87457d11SPrabhakar Kushwaha * @token: Token of DPRC object 776*87457d11SPrabhakar Kushwaha * @endpoint1: Endpoint 1 configuration parameters 777*87457d11SPrabhakar Kushwaha * @endpoint2: Returned endpoint 2 configuration parameters 778a2a55e51SPrabhakar Kushwaha * @state: Returned link state: 1 - link is up, 0 - link is down 779a2a55e51SPrabhakar Kushwaha * 780a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; -ENAVAIL if connection does not exist. 781a2a55e51SPrabhakar Kushwaha */ 782a2a55e51SPrabhakar Kushwaha int dprc_get_connection(struct fsl_mc_io *mc_io, 783*87457d11SPrabhakar Kushwaha uint32_t cmd_flags, 784a2a55e51SPrabhakar Kushwaha uint16_t token, 785a2a55e51SPrabhakar Kushwaha const struct dprc_endpoint *endpoint1, 786a2a55e51SPrabhakar Kushwaha struct dprc_endpoint *endpoint2, 787a2a55e51SPrabhakar Kushwaha int *state); 788a2a55e51SPrabhakar Kushwaha 789a2a55e51SPrabhakar Kushwaha #endif /* _FSL_DPRC_H */ 790