uboot/include/fsl-mc/fsl_dpbp.h
<<
>>
Prefs
   1/*
   2 * Freescale Layerscape MC I/O wrapper
   3 *
   4 * Copyright (C) 2013-2015 Freescale Semiconductor, Inc.
   5 * Author: German Rivera <German.Rivera@freescale.com>
   6 *
   7 * SPDX-License-Identifier:     GPL-2.0+
   8 */
   9/*!
  10 *  @file    fsl_dpbp.h
  11 *  @brief   Data Path Buffer Pool API
  12 */
  13#ifndef __FSL_DPBP_H
  14#define __FSL_DPBP_H
  15
  16/* DPBP Version */
  17#define DPBP_VER_MAJOR                          2
  18#define DPBP_VER_MINOR                          1
  19
  20/* Command IDs */
  21#define DPBP_CMDID_CLOSE                                0x800
  22#define DPBP_CMDID_OPEN                                 0x804
  23#define DPBP_CMDID_CREATE                               0x904
  24#define DPBP_CMDID_DESTROY                              0x900
  25
  26#define DPBP_CMDID_ENABLE                               0x002
  27#define DPBP_CMDID_DISABLE                              0x003
  28#define DPBP_CMDID_GET_ATTR                             0x004
  29#define DPBP_CMDID_RESET                                0x005
  30
  31/*                cmd, param, offset, width, type, arg_name */
  32#define DPBP_CMD_OPEN(cmd, dpbp_id) \
  33        MC_CMD_OP(cmd, 0, 0,  32, int,      dpbp_id)
  34
  35/*                cmd, param, offset, width, type, arg_name */
  36#define DPBP_RSP_GET_ATTRIBUTES(cmd, attr) \
  37do { \
  38        MC_RSP_OP(cmd, 0, 16, 16, uint16_t, attr->bpid); \
  39        MC_RSP_OP(cmd, 0, 32, 32, int,      attr->id);\
  40        MC_RSP_OP(cmd, 1, 0,  16, uint16_t, attr->version.major);\
  41        MC_RSP_OP(cmd, 1, 16, 16, uint16_t, attr->version.minor);\
  42} while (0)
  43
  44/* Data Path Buffer Pool API
  45 * Contains initialization APIs and runtime control APIs for DPBP
  46 */
  47
  48struct fsl_mc_io;
  49
  50/**
  51 * dpbp_open() - Open a control session for the specified object.
  52 * @mc_io:      Pointer to MC portal's I/O object
  53 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
  54 * @dpbp_id:    DPBP unique ID
  55 * @token:      Returned token; use in subsequent API calls
  56 *
  57 * This function can be used to open a control session for an
  58 * already created object; an object may have been declared in
  59 * the DPL or by calling the dpbp_create function.
  60 * This function returns a unique authentication token,
  61 * associated with the specific object ID and the specific MC
  62 * portal; this token must be used in all subsequent commands for
  63 * this specific object
  64 *
  65 * Return:      '0' on Success; Error code otherwise.
  66 */
  67int dpbp_open(struct fsl_mc_io  *mc_io,
  68              uint32_t          cmd_flags,
  69              int               dpbp_id,
  70              uint16_t          *token);
  71
  72/**
  73 * dpbp_close() - Close the control session of the object
  74 * @mc_io:      Pointer to MC portal's I/O object
  75 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
  76 * @token:      Token of DPBP object
  77 *
  78 * After this function is called, no further operations are
  79 * allowed on the object without opening a new control session.
  80 *
  81 * Return:      '0' on Success; Error code otherwise.
  82 */
  83int dpbp_close(struct fsl_mc_io *mc_io,
  84               uint32_t         cmd_flags,
  85               uint16_t token);
  86
  87/**
  88 * struct dpbp_cfg - Structure representing DPBP configuration
  89 * @options:    place holder
  90 */
  91struct dpbp_cfg {
  92        uint32_t options;
  93};
  94
  95/**
  96 * dpbp_create() - Create the DPBP object.
  97 * @mc_io:      Pointer to MC portal's I/O object
  98 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
  99 * @cfg:        Configuration structure
 100 * @token:      Returned token; use in subsequent API calls
 101 *
 102 * Create the DPBP object, allocate required resources and
 103 * perform required initialization.
 104 *
 105 * The object can be created either by declaring it in the
 106 * DPL file, or by calling this function.
 107 * This function returns a unique authentication token,
 108 * associated with the specific object ID and the specific MC
 109 * portal; this token must be used in all subsequent calls to
 110 * this specific object. For objects that are created using the
 111 * DPL file, call dpbp_open function to get an authentication
 112 * token first.
 113 *
 114 * Return:      '0' on Success; Error code otherwise.
 115 */
 116int dpbp_create(struct fsl_mc_io        *mc_io,
 117                uint32_t                cmd_flags,
 118                const struct dpbp_cfg   *cfg,
 119                uint16_t                *token);
 120
 121/**
 122 * dpbp_destroy() - Destroy the DPBP object and release all its resources.
 123 * @mc_io:      Pointer to MC portal's I/O object
 124 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
 125 * @token:      Token of DPBP object
 126 *
 127 * Return:      '0' on Success; error code otherwise.
 128 */
 129int dpbp_destroy(struct fsl_mc_io       *mc_io,
 130                 uint32_t               cmd_flags,
 131                 uint16_t               token);
 132
 133/**
 134 * dpbp_enable() - Enable the DPBP.
 135 * @mc_io:      Pointer to MC portal's I/O object
 136 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
 137 * @token:      Token of DPBP object
 138 *
 139 * Return:      '0' on Success; Error code otherwise.
 140 */
 141int dpbp_enable(struct fsl_mc_io        *mc_io,
 142                uint32_t                cmd_flags,
 143                uint16_t                token);
 144
 145/**
 146 * dpbp_disable() - Disable the DPBP.
 147 * @mc_io:      Pointer to MC portal's I/O object
 148 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
 149 * @token:      Token of DPBP object
 150 *
 151 * Return:      '0' on Success; Error code otherwise.
 152 */
 153int dpbp_disable(struct fsl_mc_io       *mc_io,
 154                 uint32_t               cmd_flags,
 155                 uint16_t               token);
 156
 157/**
 158 * dpbp_is_enabled() - Check if the DPBP is enabled.
 159 * @mc_io:      Pointer to MC portal's I/O object
 160 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
 161 * @token:      Token of DPBP object
 162 * @en:         Returns '1' if object is enabled; '0' otherwise
 163 *
 164 * Return:      '0' on Success; Error code otherwise.
 165 */
 166int dpbp_is_enabled(struct fsl_mc_io    *mc_io,
 167                    uint32_t            cmd_flags,
 168                    uint16_t            token,
 169                    int         *en);
 170
 171/**
 172 * dpbp_reset() - Reset the DPBP, returns the object to initial state.
 173 * @mc_io:      Pointer to MC portal's I/O object
 174 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
 175 * @token:      Token of DPBP object
 176 *
 177 * Return:      '0' on Success; Error code otherwise.
 178 */
 179int dpbp_reset(struct fsl_mc_io *mc_io,
 180               uint32_t         cmd_flags,
 181               uint16_t token);
 182
 183
 184/**
 185 * struct dpbp_attr - Structure representing DPBP attributes
 186 * @id:         DPBP object ID
 187 * @version:    DPBP version
 188 * @bpid:       Hardware buffer pool ID; should be used as an argument in
 189 *              acquire/release operations on buffers
 190 */
 191struct dpbp_attr {
 192        int id;
 193        /**
 194         * struct version - Structure representing DPBP version
 195         * @major:      DPBP major version
 196         * @minor:      DPBP minor version
 197         */
 198        struct {
 199                uint16_t major;
 200                uint16_t minor;
 201        } version;
 202        uint16_t bpid;
 203};
 204
 205/**
 206 * dpbp_get_attributes - Retrieve DPBP attributes.
 207 *
 208 * @mc_io:      Pointer to MC portal's I/O object
 209 * @cmd_flags:  Command flags; one or more of 'MC_CMD_FLAG_'
 210 * @token:      Token of DPBP object
 211 * @attr:       Returned object's attributes
 212 *
 213 * Return:      '0' on Success; Error code otherwise.
 214 */
 215int dpbp_get_attributes(struct fsl_mc_io        *mc_io,
 216                        uint32_t        cmd_flags,
 217                        uint16_t                token,
 218                        struct dpbp_attr        *attr);
 219
 220/** @} */
 221
 222#endif /* __FSL_DPBP_H */
 223