1*a2a55e51SPrabhakar Kushwaha /* 2*a2a55e51SPrabhakar Kushwaha * Freescale Layerscape MC I/O wrapper 3*a2a55e51SPrabhakar Kushwaha * 4*a2a55e51SPrabhakar Kushwaha * Copyright (C) 2013-2015 Freescale Semiconductor, Inc. 5*a2a55e51SPrabhakar Kushwaha * Author: German Rivera <German.Rivera@freescale.com> 6*a2a55e51SPrabhakar Kushwaha * 7*a2a55e51SPrabhakar Kushwaha * SPDX-License-Identifier: GPL-2.0+ 8*a2a55e51SPrabhakar Kushwaha */ 9*a2a55e51SPrabhakar Kushwaha /*! 10*a2a55e51SPrabhakar Kushwaha * @file fsl_dpbp.h 11*a2a55e51SPrabhakar Kushwaha * @brief Data Path Buffer Pool API 12*a2a55e51SPrabhakar Kushwaha */ 13*a2a55e51SPrabhakar Kushwaha #ifndef __FSL_DPBP_H 14*a2a55e51SPrabhakar Kushwaha #define __FSL_DPBP_H 15*a2a55e51SPrabhakar Kushwaha 16*a2a55e51SPrabhakar Kushwaha /* DPBP Version */ 17*a2a55e51SPrabhakar Kushwaha #define DPBP_VER_MAJOR 2 18*a2a55e51SPrabhakar Kushwaha #define DPBP_VER_MINOR 0 19*a2a55e51SPrabhakar Kushwaha 20*a2a55e51SPrabhakar Kushwaha /* Command IDs */ 21*a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_CLOSE 0x800 22*a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_OPEN 0x804 23*a2a55e51SPrabhakar Kushwaha 24*a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_ENABLE 0x002 25*a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_DISABLE 0x003 26*a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_GET_ATTR 0x004 27*a2a55e51SPrabhakar Kushwaha #define DPBP_CMDID_RESET 0x005 28*a2a55e51SPrabhakar Kushwaha 29*a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 30*a2a55e51SPrabhakar Kushwaha #define DPBP_CMD_OPEN(cmd, dpbp_id) \ 31*a2a55e51SPrabhakar Kushwaha MC_CMD_OP(cmd, 0, 0, 32, int, dpbp_id) 32*a2a55e51SPrabhakar Kushwaha 33*a2a55e51SPrabhakar Kushwaha /* cmd, param, offset, width, type, arg_name */ 34*a2a55e51SPrabhakar Kushwaha #define DPBP_RSP_GET_ATTRIBUTES(cmd, attr) \ 35*a2a55e51SPrabhakar Kushwaha do { \ 36*a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 16, 16, uint16_t, attr->bpid); \ 37*a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 0, 32, 32, int, attr->id);\ 38*a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 0, 16, uint16_t, attr->version.major);\ 39*a2a55e51SPrabhakar Kushwaha MC_RSP_OP(cmd, 1, 16, 16, uint16_t, attr->version.minor);\ 40*a2a55e51SPrabhakar Kushwaha } while (0) 41*a2a55e51SPrabhakar Kushwaha 42*a2a55e51SPrabhakar Kushwaha /* Data Path Buffer Pool API 43*a2a55e51SPrabhakar Kushwaha * Contains initialization APIs and runtime control APIs for DPBP 44*a2a55e51SPrabhakar Kushwaha */ 45*a2a55e51SPrabhakar Kushwaha 46*a2a55e51SPrabhakar Kushwaha struct fsl_mc_io; 47*a2a55e51SPrabhakar Kushwaha 48*a2a55e51SPrabhakar Kushwaha /** 49*a2a55e51SPrabhakar Kushwaha * dpbp_open() - Open a control session for the specified object. 50*a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 51*a2a55e51SPrabhakar Kushwaha * @dpbp_id: DPBP unique ID 52*a2a55e51SPrabhakar Kushwaha * @token: Returned token; use in subsequent API calls 53*a2a55e51SPrabhakar Kushwaha * 54*a2a55e51SPrabhakar Kushwaha * This function can be used to open a control session for an 55*a2a55e51SPrabhakar Kushwaha * already created object; an object may have been declared in 56*a2a55e51SPrabhakar Kushwaha * the DPL or by calling the dpbp_create function. 57*a2a55e51SPrabhakar Kushwaha * This function returns a unique authentication token, 58*a2a55e51SPrabhakar Kushwaha * associated with the specific object ID and the specific MC 59*a2a55e51SPrabhakar Kushwaha * portal; this token must be used in all subsequent commands for 60*a2a55e51SPrabhakar Kushwaha * this specific object 61*a2a55e51SPrabhakar Kushwaha * 62*a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 63*a2a55e51SPrabhakar Kushwaha */ 64*a2a55e51SPrabhakar Kushwaha int dpbp_open(struct fsl_mc_io *mc_io, int dpbp_id, uint16_t *token); 65*a2a55e51SPrabhakar Kushwaha 66*a2a55e51SPrabhakar Kushwaha /** 67*a2a55e51SPrabhakar Kushwaha * dpbp_close() - Close the control session of the object 68*a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 69*a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 70*a2a55e51SPrabhakar Kushwaha * 71*a2a55e51SPrabhakar Kushwaha * After this function is called, no further operations are 72*a2a55e51SPrabhakar Kushwaha * allowed on the object without opening a new control session. 73*a2a55e51SPrabhakar Kushwaha * 74*a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 75*a2a55e51SPrabhakar Kushwaha */ 76*a2a55e51SPrabhakar Kushwaha int dpbp_close(struct fsl_mc_io *mc_io, uint16_t token); 77*a2a55e51SPrabhakar Kushwaha 78*a2a55e51SPrabhakar Kushwaha /** 79*a2a55e51SPrabhakar Kushwaha * dpbp_enable() - Enable the DPBP. 80*a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 81*a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 82*a2a55e51SPrabhakar Kushwaha * 83*a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 84*a2a55e51SPrabhakar Kushwaha */ 85*a2a55e51SPrabhakar Kushwaha 86*a2a55e51SPrabhakar Kushwaha int dpbp_enable(struct fsl_mc_io *mc_io, uint16_t token); 87*a2a55e51SPrabhakar Kushwaha 88*a2a55e51SPrabhakar Kushwaha /** 89*a2a55e51SPrabhakar Kushwaha * dpbp_disable() - Disable the DPBP. 90*a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 91*a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 92*a2a55e51SPrabhakar Kushwaha * 93*a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 94*a2a55e51SPrabhakar Kushwaha */ 95*a2a55e51SPrabhakar Kushwaha int dpbp_disable(struct fsl_mc_io *mc_io, uint16_t token); 96*a2a55e51SPrabhakar Kushwaha 97*a2a55e51SPrabhakar Kushwaha /** 98*a2a55e51SPrabhakar Kushwaha * dpbp_reset() - Reset the DPBP, returns the object to initial state. 99*a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 100*a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 101*a2a55e51SPrabhakar Kushwaha * 102*a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 103*a2a55e51SPrabhakar Kushwaha */ 104*a2a55e51SPrabhakar Kushwaha int dpbp_reset(struct fsl_mc_io *mc_io, uint16_t token); 105*a2a55e51SPrabhakar Kushwaha 106*a2a55e51SPrabhakar Kushwaha /** 107*a2a55e51SPrabhakar Kushwaha * struct dpbp_attr - Structure representing DPBP attributes 108*a2a55e51SPrabhakar Kushwaha * @id: DPBP object ID 109*a2a55e51SPrabhakar Kushwaha * @version: DPBP version 110*a2a55e51SPrabhakar Kushwaha * @bpid: Hardware buffer pool ID; should be used as an argument in 111*a2a55e51SPrabhakar Kushwaha * acquire/release operations on buffers 112*a2a55e51SPrabhakar Kushwaha */ 113*a2a55e51SPrabhakar Kushwaha struct dpbp_attr { 114*a2a55e51SPrabhakar Kushwaha int id; 115*a2a55e51SPrabhakar Kushwaha /** 116*a2a55e51SPrabhakar Kushwaha * struct version - Structure representing DPBP version 117*a2a55e51SPrabhakar Kushwaha * @major: DPBP major version 118*a2a55e51SPrabhakar Kushwaha * @minor: DPBP minor version 119*a2a55e51SPrabhakar Kushwaha */ 120*a2a55e51SPrabhakar Kushwaha struct { 121*a2a55e51SPrabhakar Kushwaha uint16_t major; 122*a2a55e51SPrabhakar Kushwaha uint16_t minor; 123*a2a55e51SPrabhakar Kushwaha } version; 124*a2a55e51SPrabhakar Kushwaha uint16_t bpid; 125*a2a55e51SPrabhakar Kushwaha }; 126*a2a55e51SPrabhakar Kushwaha 127*a2a55e51SPrabhakar Kushwaha 128*a2a55e51SPrabhakar Kushwaha /** 129*a2a55e51SPrabhakar Kushwaha * dpbp_get_attributes - Retrieve DPBP attributes. 130*a2a55e51SPrabhakar Kushwaha * 131*a2a55e51SPrabhakar Kushwaha * @mc_io: Pointer to MC portal's I/O object 132*a2a55e51SPrabhakar Kushwaha * @token: Token of DPBP object 133*a2a55e51SPrabhakar Kushwaha * @attr: Returned object's attributes 134*a2a55e51SPrabhakar Kushwaha * 135*a2a55e51SPrabhakar Kushwaha * Return: '0' on Success; Error code otherwise. 136*a2a55e51SPrabhakar Kushwaha */ 137*a2a55e51SPrabhakar Kushwaha int dpbp_get_attributes(struct fsl_mc_io *mc_io, 138*a2a55e51SPrabhakar Kushwaha uint16_t token, 139*a2a55e51SPrabhakar Kushwaha struct dpbp_attr *attr); 140*a2a55e51SPrabhakar Kushwaha 141*a2a55e51SPrabhakar Kushwaha /** @} */ 142*a2a55e51SPrabhakar Kushwaha 143*a2a55e51SPrabhakar Kushwaha #endif /* __FSL_DPBP_H */ 144