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 1887457d11SPrabhakar Kushwaha #define DPBP_VER_MINOR 1 19a2a55e51SPrabhakar Kushwaha 20a2a55e51SPrabhakar Kushwaha /* Command IDs */ 21a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_CLOSE 0x800 22a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_OPEN 0x804 23*1ebbe4fcSPrabhakar Kushwaha #define DPBP_CMDID_CREATE 0x904 24*1ebbe4fcSPrabhakar 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 /** 88*1ebbe4fcSPrabhakar Kushwaha * struct dpbp_cfg - Structure representing DPBP configuration 89*1ebbe4fcSPrabhakar Kushwaha * @options: place holder 90*1ebbe4fcSPrabhakar Kushwaha */ 91*1ebbe4fcSPrabhakar Kushwaha struct dpbp_cfg { 92*1ebbe4fcSPrabhakar Kushwaha uint32_t options; 93*1ebbe4fcSPrabhakar Kushwaha }; 94*1ebbe4fcSPrabhakar Kushwaha 95*1ebbe4fcSPrabhakar Kushwaha /** 96*1ebbe4fcSPrabhakar Kushwaha * dpbp_create() - Create the DPBP object. 97*1ebbe4fcSPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 98*1ebbe4fcSPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 99*1ebbe4fcSPrabhakar Kushwaha * @cfg: Configuration structure 100*1ebbe4fcSPrabhakar Kushwaha * @token: Returned token; use in subsequent API calls 101*1ebbe4fcSPrabhakar Kushwaha * 102*1ebbe4fcSPrabhakar Kushwaha * Create the DPBP object, allocate required resources and 103*1ebbe4fcSPrabhakar Kushwaha * perform required initialization. 104*1ebbe4fcSPrabhakar Kushwaha * 105*1ebbe4fcSPrabhakar Kushwaha * The object can be created either by declaring it in the 106*1ebbe4fcSPrabhakar Kushwaha * DPL file, or by calling this function. 107*1ebbe4fcSPrabhakar Kushwaha * This function returns a unique authentication token, 108*1ebbe4fcSPrabhakar Kushwaha * associated with the specific object ID and the specific MC 109*1ebbe4fcSPrabhakar Kushwaha * portal; this token must be used in all subsequent calls to 110*1ebbe4fcSPrabhakar Kushwaha * this specific object. For objects that are created using the 111*1ebbe4fcSPrabhakar Kushwaha * DPL file, call dpbp_open function to get an authentication 112*1ebbe4fcSPrabhakar Kushwaha * token first. 113*1ebbe4fcSPrabhakar Kushwaha * 114*1ebbe4fcSPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 115*1ebbe4fcSPrabhakar Kushwaha */ 116*1ebbe4fcSPrabhakar Kushwaha int dpbp_create(struct fsl_mc_io *mc_io, 117*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags, 118*1ebbe4fcSPrabhakar Kushwaha const struct dpbp_cfg *cfg, 119*1ebbe4fcSPrabhakar Kushwaha uint16_t *token); 120*1ebbe4fcSPrabhakar Kushwaha 121*1ebbe4fcSPrabhakar Kushwaha /** 122*1ebbe4fcSPrabhakar Kushwaha * dpbp_destroy() - Destroy the DPBP object and release all its resources. 123*1ebbe4fcSPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 124*1ebbe4fcSPrabhakar Kushwaha * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 125*1ebbe4fcSPrabhakar Kushwaha * @token: Token of DPBP object 126*1ebbe4fcSPrabhakar Kushwaha * 127*1ebbe4fcSPrabhakar Kushwaha * Return: '0' on Success; error code otherwise. 128*1ebbe4fcSPrabhakar Kushwaha */ 129*1ebbe4fcSPrabhakar Kushwaha int dpbp_destroy(struct fsl_mc_io *mc_io, 130*1ebbe4fcSPrabhakar Kushwaha uint32_t cmd_flags, 131*1ebbe4fcSPrabhakar Kushwaha uint16_t token); 132*1ebbe4fcSPrabhakar Kushwaha 133*1ebbe4fcSPrabhakar 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