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 * @file fsl_dpbp.h 11a2a55e51SPrabhakar Kushwaha * @brief Data Path Buffer Pool API 12a2a55e51SPrabhakar Kushwaha */ 13a2a55e51SPrabhakar Kushwaha #ifndef __FSL_DPBP_H 14a2a55e51SPrabhakar Kushwaha #define __FSL_DPBP_H 15a2a55e51SPrabhakar Kushwaha 16a2a55e51SPrabhakar Kushwaha /* DPBP Version */ 17a2a55e51SPrabhakar Kushwaha #define DPBP_VER_MAJOR 2 18*53e353fcSPrabhakar Kushwaha #define DPBP_VER_MINOR 2 19a2a55e51SPrabhakar Kushwaha 20a2a55e51SPrabhakar Kushwaha /* Command IDs */ 21a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_CLOSE 0x800 22a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_OPEN 0x804 231ebbe4fcSPrabhakar Kushwaha #define DPBP_CMDID_CREATE 0x904 241ebbe4fcSPrabhakar Kushwaha #define DPBP_CMDID_DESTROY 0x900 25a2a55e51SPrabhakar Kushwaha 26a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_ENABLE 0x002 27a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_DISABLE 0x003 28a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_GET_ATTR 0x004 29a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_RESET 0x005 30a2a55e51SPrabhakar Kushwaha 31a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 32a2a55e51SPrabhakar Kushwaha #define DPBP_CMD_OPEN(cmd, dpbp_id) \ 33a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, dpbp_id) 34a2a55e51SPrabhakar Kushwaha 35a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 36a2a55e51SPrabhakar Kushwaha #define DPBP_RSP_GET_ATTRIBUTES(cmd, attr) \ 37a2a55e51SPrabhakar Kushwaha do { \ 38a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 16, 16, uint16_t, attr->bpid); \ 39a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 32, 32, int, attr->id);\ 40a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 0, 16, uint16_t, attr->version.major);\ 41a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 16, 16, uint16_t, attr->version.minor);\ 42a2a55e51SPrabhakar Kushwaha } while (0) 43a2a55e51SPrabhakar Kushwaha 44a2a55e51SPrabhakar Kushwaha /* Data Path Buffer Pool API 45a2a55e51SPrabhakar Kushwaha * Contains initialization APIs and runtime control APIs for DPBP 46a2a55e51SPrabhakar Kushwaha */ 47a2a55e51SPrabhakar Kushwaha 48a2a55e51SPrabhakar Kushwaha struct fsl_mc_io; 49a2a55e51SPrabhakar Kushwaha 50a2a55e51SPrabhakar Kushwaha /** 51a2a55e51SPrabhakar Kushwaha * dpbp_open() - Open a control session for the specified object. 52a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 5387457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 54a2a55e51SPrabhakar Kushwaha * @dpbp_id: DPBP unique ID 55a2a55e51SPrabhakar Kushwaha * @token: Returned token; use in subsequent API calls 56a2a55e51SPrabhakar Kushwaha * 57a2a55e51SPrabhakar Kushwaha * This function can be used to open a control session for an 58a2a55e51SPrabhakar Kushwaha * already created object; an object may have been declared in 59a2a55e51SPrabhakar Kushwaha * the DPL or by calling the dpbp_create function. 60a2a55e51SPrabhakar Kushwaha * This function returns a unique authentication token, 61a2a55e51SPrabhakar Kushwaha * associated with the specific object ID and the specific MC 62a2a55e51SPrabhakar Kushwaha * portal; this token must be used in all subsequent commands for 63a2a55e51SPrabhakar Kushwaha * this specific object 64a2a55e51SPrabhakar Kushwaha * 65a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 66a2a55e51SPrabhakar Kushwaha */ 6787457d11SPrabhakar Kushwaha int dpbp_open(struct fsl_mc_io *mc_io, 6887457d11SPrabhakar Kushwaha uint32_t cmd_flags, 6987457d11SPrabhakar Kushwaha int dpbp_id, 7087457d11SPrabhakar Kushwaha uint16_t *token); 71a2a55e51SPrabhakar Kushwaha 72a2a55e51SPrabhakar Kushwaha /** 73a2a55e51SPrabhakar Kushwaha * dpbp_close() - Close the control session of the object 74a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 7587457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 76a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 77a2a55e51SPrabhakar Kushwaha * 78a2a55e51SPrabhakar Kushwaha * After this function is called, no further operations are 79a2a55e51SPrabhakar Kushwaha * allowed on the object without opening a new control session. 80a2a55e51SPrabhakar Kushwaha * 81a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 82a2a55e51SPrabhakar Kushwaha */ 8387457d11SPrabhakar Kushwaha int dpbp_close(struct fsl_mc_io *mc_io, 8487457d11SPrabhakar Kushwaha uint32_t cmd_flags, 8587457d11SPrabhakar Kushwaha uint16_t token); 86a2a55e51SPrabhakar Kushwaha 87a2a55e51SPrabhakar Kushwaha /** 881ebbe4fcSPrabhakar Kushwaha * struct dpbp_cfg - Structure representing DPBP configuration 891ebbe4fcSPrabhakar Kushwaha * @options: place holder 901ebbe4fcSPrabhakar Kushwaha */ 911ebbe4fcSPrabhakar Kushwaha struct dpbp_cfg { 921ebbe4fcSPrabhakar Kushwaha uint32_t options; 931ebbe4fcSPrabhakar Kushwaha }; 941ebbe4fcSPrabhakar Kushwaha 951ebbe4fcSPrabhakar Kushwaha /** 961ebbe4fcSPrabhakar Kushwaha * dpbp_create() - Create the DPBP object. 971ebbe4fcSPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 981ebbe4fcSPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 991ebbe4fcSPrabhakar Kushwaha * @cfg: Configuration structure 1001ebbe4fcSPrabhakar Kushwaha * @token: Returned token; use in subsequent API calls 1011ebbe4fcSPrabhakar Kushwaha * 1021ebbe4fcSPrabhakar Kushwaha * Create the DPBP object, allocate required resources and 1031ebbe4fcSPrabhakar Kushwaha * perform required initialization. 1041ebbe4fcSPrabhakar Kushwaha * 1051ebbe4fcSPrabhakar Kushwaha * The object can be created either by declaring it in the 1061ebbe4fcSPrabhakar Kushwaha * DPL file, or by calling this function. 1071ebbe4fcSPrabhakar Kushwaha * This function returns a unique authentication token, 1081ebbe4fcSPrabhakar Kushwaha * associated with the specific object ID and the specific MC 1091ebbe4fcSPrabhakar Kushwaha * portal; this token must be used in all subsequent calls to 1101ebbe4fcSPrabhakar Kushwaha * this specific object. For objects that are created using the 1111ebbe4fcSPrabhakar Kushwaha * DPL file, call dpbp_open function to get an authentication 1121ebbe4fcSPrabhakar Kushwaha * token first. 1131ebbe4fcSPrabhakar Kushwaha * 1141ebbe4fcSPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 1151ebbe4fcSPrabhakar Kushwaha */ 1161ebbe4fcSPrabhakar Kushwaha int dpbp_create(struct fsl_mc_io *mc_io, 1171ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags, 1181ebbe4fcSPrabhakar Kushwaha const struct dpbp_cfg *cfg, 1191ebbe4fcSPrabhakar Kushwaha uint16_t *token); 1201ebbe4fcSPrabhakar Kushwaha 1211ebbe4fcSPrabhakar Kushwaha /** 1221ebbe4fcSPrabhakar Kushwaha * dpbp_destroy() - Destroy the DPBP object and release all its resources. 1231ebbe4fcSPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 1241ebbe4fcSPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 1251ebbe4fcSPrabhakar Kushwaha * @token: Token of DPBP object 1261ebbe4fcSPrabhakar Kushwaha * 1271ebbe4fcSPrabhakar Kushwaha * Return: '0' on Success; error code otherwise. 1281ebbe4fcSPrabhakar Kushwaha */ 1291ebbe4fcSPrabhakar Kushwaha int dpbp_destroy(struct fsl_mc_io *mc_io, 1301ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags, 1311ebbe4fcSPrabhakar Kushwaha uint16_t token); 1321ebbe4fcSPrabhakar Kushwaha 1331ebbe4fcSPrabhakar Kushwaha /** 134a2a55e51SPrabhakar Kushwaha * dpbp_enable() - Enable the DPBP. 135a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 13687457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 137a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 138a2a55e51SPrabhakar Kushwaha * 139a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 140a2a55e51SPrabhakar Kushwaha */ 14187457d11SPrabhakar Kushwaha int dpbp_enable(struct fsl_mc_io *mc_io, 14287457d11SPrabhakar Kushwaha uint32_t cmd_flags, 14387457d11SPrabhakar Kushwaha uint16_t token); 144a2a55e51SPrabhakar Kushwaha 145a2a55e51SPrabhakar Kushwaha /** 146a2a55e51SPrabhakar Kushwaha * dpbp_disable() - Disable the DPBP. 147a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 14887457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 149a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 150a2a55e51SPrabhakar Kushwaha * 151a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 152a2a55e51SPrabhakar Kushwaha */ 15387457d11SPrabhakar Kushwaha int dpbp_disable(struct fsl_mc_io *mc_io, 15487457d11SPrabhakar Kushwaha uint32_t cmd_flags, 15587457d11SPrabhakar Kushwaha uint16_t token); 15687457d11SPrabhakar Kushwaha 15787457d11SPrabhakar Kushwaha /** 15887457d11SPrabhakar Kushwaha * dpbp_is_enabled() - Check if the DPBP is enabled. 15987457d11SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 16087457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 16187457d11SPrabhakar Kushwaha * @token: Token of DPBP object 16287457d11SPrabhakar Kushwaha * @en: Returns '1' if object is enabled; '0' otherwise 16387457d11SPrabhakar Kushwaha * 16487457d11SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 16587457d11SPrabhakar Kushwaha */ 16687457d11SPrabhakar Kushwaha int dpbp_is_enabled(struct fsl_mc_io *mc_io, 16787457d11SPrabhakar Kushwaha uint32_t cmd_flags, 16887457d11SPrabhakar Kushwaha uint16_t token, 16987457d11SPrabhakar Kushwaha int *en); 170a2a55e51SPrabhakar Kushwaha 171a2a55e51SPrabhakar Kushwaha /** 172a2a55e51SPrabhakar Kushwaha * dpbp_reset() - Reset the DPBP, returns the object to initial state. 173a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 17487457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 175a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 176a2a55e51SPrabhakar Kushwaha * 177a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 178a2a55e51SPrabhakar Kushwaha */ 17987457d11SPrabhakar Kushwaha int dpbp_reset(struct fsl_mc_io *mc_io, 18087457d11SPrabhakar Kushwaha uint32_t cmd_flags, 18187457d11SPrabhakar Kushwaha uint16_t token); 18287457d11SPrabhakar Kushwaha 183a2a55e51SPrabhakar Kushwaha 184a2a55e51SPrabhakar Kushwaha /** 185a2a55e51SPrabhakar Kushwaha * struct dpbp_attr - Structure representing DPBP attributes 186a2a55e51SPrabhakar Kushwaha * @id: DPBP object ID 187a2a55e51SPrabhakar Kushwaha * @version: DPBP version 188a2a55e51SPrabhakar Kushwaha * @bpid: Hardware buffer pool ID; should be used as an argument in 189a2a55e51SPrabhakar Kushwaha * acquire/release operations on buffers 190a2a55e51SPrabhakar Kushwaha */ 191a2a55e51SPrabhakar Kushwaha struct dpbp_attr { 192a2a55e51SPrabhakar Kushwaha int id; 193a2a55e51SPrabhakar Kushwaha /** 194a2a55e51SPrabhakar Kushwaha * struct version - Structure representing DPBP version 195a2a55e51SPrabhakar Kushwaha * @major: DPBP major version 196a2a55e51SPrabhakar Kushwaha * @minor: DPBP minor version 197a2a55e51SPrabhakar Kushwaha */ 198a2a55e51SPrabhakar Kushwaha struct { 199a2a55e51SPrabhakar Kushwaha uint16_t major; 200a2a55e51SPrabhakar Kushwaha uint16_t minor; 201a2a55e51SPrabhakar Kushwaha } version; 202a2a55e51SPrabhakar Kushwaha uint16_t bpid; 203a2a55e51SPrabhakar Kushwaha }; 204a2a55e51SPrabhakar Kushwaha 205a2a55e51SPrabhakar Kushwaha /** 206a2a55e51SPrabhakar Kushwaha * dpbp_get_attributes - Retrieve DPBP attributes. 207a2a55e51SPrabhakar Kushwaha * 208a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 20987457d11SPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 210a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 211a2a55e51SPrabhakar Kushwaha * @attr: Returned object's attributes 212a2a55e51SPrabhakar Kushwaha * 213a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 214a2a55e51SPrabhakar Kushwaha */ 215a2a55e51SPrabhakar Kushwaha int dpbp_get_attributes(struct fsl_mc_io *mc_io, 21687457d11SPrabhakar Kushwaha uint32_t cmd_flags, 217a2a55e51SPrabhakar Kushwaha uint16_t token, 218a2a55e51SPrabhakar Kushwaha struct dpbp_attr *attr); 219a2a55e51SPrabhakar Kushwaha 220a2a55e51SPrabhakar Kushwaha /** @} */ 221a2a55e51SPrabhakar Kushwaha 222a2a55e51SPrabhakar Kushwaha #endif /* __FSL_DPBP_H */ 223