The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/ncsw/inc/Peripherals/fm_ext.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* Copyright (c) 2008-2012 Freescale Semiconductor, Inc
    2  * All rights reserved.
    3  *
    4  * Redistribution and use in source and binary forms, with or without
    5  * modification, are permitted provided that the following conditions are met:
    6  *     * Redistributions of source code must retain the above copyright
    7  *       notice, this list of conditions and the following disclaimer.
    8  *     * Redistributions in binary form must reproduce the above copyright
    9  *       notice, this list of conditions and the following disclaimer in the
   10  *       documentation and/or other materials provided with the distribution.
   11  *     * Neither the name of Freescale Semiconductor nor the
   12  *       names of its contributors may be used to endorse or promote products
   13  *       derived from this software without specific prior written permission.
   14  *
   15  *
   16  * ALTERNATIVELY, this software may be distributed under the terms of the
   17  * GNU General Public License ("GPL") as published by the Free Software
   18  * Foundation, either version 2 of that License or (at your option) any
   19  * later version.
   20  *
   21  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
   22  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   23  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   24  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
   25  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
   26  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   27  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   28  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   31  */
   32 
   33 
   34 /**************************************************************************//**
   35  @File          fm_ext.h
   36 
   37  @Description   FM Application Programming Interface.
   38 *//***************************************************************************/
   39 #ifndef __FM_EXT
   40 #define __FM_EXT
   41 
   42 #include "error_ext.h"
   43 #include "std_ext.h"
   44 #include "dpaa_ext.h"
   45 #include "fsl_fman_sp.h"
   46 
   47 /**************************************************************************//**
   48  @Group         FM_grp Frame Manager API
   49 
   50  @Description   FM API functions, definitions and enums.
   51 
   52  @{
   53 *//***************************************************************************/
   54 
   55 /**************************************************************************//**
   56  @Group         FM_lib_grp FM library
   57 
   58  @Description   FM API functions, definitions and enums.
   59 
   60                 The FM module is the main driver module and is a mandatory module
   61                 for FM driver users. This module must be initialized first prior
   62                 to any other drivers modules.
   63                 The FM is a "singleton" module. It is responsible of the common
   64                 HW modules: FPM, DMA, common QMI and common BMI initializations and
   65                 run-time control routines. This module must be initialized always
   66                 when working with any of the FM modules.
   67                 NOTE - We assume that the FM library will be initialized only by core No. 0!
   68 
   69  @{
   70 *//***************************************************************************/
   71 
   72 /**************************************************************************//**
   73  @Description   Enum for defining port types
   74 *//***************************************************************************/
   75 typedef enum e_FmPortType {
   76     e_FM_PORT_TYPE_OH_OFFLINE_PARSING = 0,  /**< Offline parsing port */
   77     e_FM_PORT_TYPE_RX,                      /**< 1G Rx port */
   78     e_FM_PORT_TYPE_RX_10G,                  /**< 10G Rx port */
   79     e_FM_PORT_TYPE_TX,                      /**< 1G Tx port */
   80     e_FM_PORT_TYPE_TX_10G,                  /**< 10G Tx port */
   81     e_FM_PORT_TYPE_DUMMY
   82 } e_FmPortType;
   83 
   84 /**************************************************************************//**
   85  @Collection    General FM defines
   86 *//***************************************************************************/
   87 #define FM_MAX_NUM_OF_PARTITIONS    64      /**< Maximum number of partitions */
   88 #define FM_PHYS_ADDRESS_SIZE        6       /**< FM Physical address size */
   89 /* @} */
   90 
   91 
   92 #if defined(__MWERKS__) && !defined(__GNUC__)
   93 #pragma pack(push,1)
   94 #endif /* defined(__MWERKS__) && ... */
   95 
   96 /**************************************************************************//**
   97  @Description   FM physical Address
   98 *//***************************************************************************/
   99 typedef _Packed struct t_FmPhysAddr {
  100     volatile uint8_t    high;         /**< High part of the physical address */
  101     volatile uint32_t   low;          /**< Low part of the physical address */
  102 } _PackedType t_FmPhysAddr;
  103 
  104 /**************************************************************************//**
  105  @Description   Parse results memory layout
  106 *//***************************************************************************/
  107 typedef _Packed struct t_FmPrsResult {
  108     volatile uint8_t     lpid;               /**< Logical port id */
  109     volatile uint8_t     shimr;              /**< Shim header result  */
  110     volatile uint16_t    l2r;                /**< Layer 2 result */
  111     volatile uint16_t    l3r;                /**< Layer 3 result */
  112     volatile uint8_t     l4r;                /**< Layer 4 result */
  113     volatile uint8_t     cplan;              /**< Classification plan id */
  114     volatile uint16_t    nxthdr;             /**< Next Header  */
  115     volatile uint16_t    cksum;              /**< Running-sum */
  116     volatile uint16_t    flags_frag_off;     /**< Flags & fragment-offset field of the last IP-header */
  117     volatile uint8_t     route_type;         /**< Routing type field of a IPv6 routing extension header */
  118     volatile uint8_t     rhp_ip_valid;       /**< Routing Extension Header Present; last bit is IP valid */
  119     volatile uint8_t     shim_off[2];        /**< Shim offset */
  120     volatile uint8_t     ip_pid_off;         /**< IP PID (last IP-proto) offset */
  121     volatile uint8_t     eth_off;            /**< ETH offset */
  122     volatile uint8_t     llc_snap_off;       /**< LLC_SNAP offset */
  123     volatile uint8_t     vlan_off[2];        /**< VLAN offset */
  124     volatile uint8_t     etype_off;          /**< ETYPE offset */
  125     volatile uint8_t     pppoe_off;          /**< PPP offset */
  126     volatile uint8_t     mpls_off[2];        /**< MPLS offset */
  127     volatile uint8_t     ip_off[2];          /**< IP offset */
  128     volatile uint8_t     gre_off;            /**< GRE offset */
  129     volatile uint8_t     l4_off;             /**< Layer 4 offset */
  130     volatile uint8_t     nxthdr_off;         /**< Parser end point */
  131 } _PackedType t_FmPrsResult;
  132 
  133 /**************************************************************************//**
  134  @Collection   FM Parser results
  135 *//***************************************************************************/
  136 #define FM_PR_L2_VLAN_STACK         0x00000100  /**< Parse Result: VLAN stack */
  137 #define FM_PR_L2_ETHERNET           0x00008000  /**< Parse Result: Ethernet*/
  138 #define FM_PR_L2_VLAN               0x00004000  /**< Parse Result: VLAN */
  139 #define FM_PR_L2_LLC_SNAP           0x00002000  /**< Parse Result: LLC_SNAP */
  140 #define FM_PR_L2_MPLS               0x00001000  /**< Parse Result: MPLS */
  141 #define FM_PR_L2_PPPoE              0x00000800  /**< Parse Result: PPPoE */
  142 /* @} */
  143 
  144 /**************************************************************************//**
  145  @Collection   FM Frame descriptor macros
  146 *//***************************************************************************/
  147 #define FM_FD_CMD_FCO                   0x80000000  /**< Frame queue Context Override */
  148 #define FM_FD_CMD_RPD                   0x40000000  /**< Read Prepended Data */
  149 #define FM_FD_CMD_UPD                   0x20000000  /**< Update Prepended Data */
  150 #define FM_FD_CMD_DTC                   0x10000000  /**< Do L4 Checksum */
  151 #define FM_FD_CMD_DCL4C                 0x10000000  /**< Didn't calculate L4 Checksum */
  152 #define FM_FD_CMD_CFQ                   0x00ffffff  /**< Confirmation Frame Queue */
  153 
  154 #define FM_FD_ERR_UNSUPPORTED_FORMAT    0x04000000  /**< Not for Rx-Port! Unsupported Format */
  155 #define FM_FD_ERR_LENGTH                0x02000000  /**< Not for Rx-Port! Length Error */
  156 #define FM_FD_ERR_DMA                   0x01000000  /**< DMA Data error */
  157 
  158 #define FM_FD_IPR                       0x00000001  /**< IPR frame (not error) */
  159 
  160 #define FM_FD_ERR_IPR_NCSP              (0x00100000 | FM_FD_IPR)    /**< IPR non-consistent-sp */
  161 #define FM_FD_ERR_IPR                   (0x00200000 | FM_FD_IPR)    /**< IPR error */
  162 #define FM_FD_ERR_IPR_TO                (0x00300000 | FM_FD_IPR)    /**< IPR timeout */
  163 
  164 #ifdef FM_CAPWAP_SUPPORT
  165 #define FM_FD_ERR_CRE                   0x00200000
  166 #define FM_FD_ERR_CHE                   0x00100000
  167 #endif /* FM_CAPWAP_SUPPORT */
  168 
  169 #define FM_FD_ERR_PHYSICAL              0x00080000  /**< Rx FIFO overflow, FCS error, code error, running disparity
  170                                                          error (SGMII and TBI modes), FIFO parity error. PHY
  171                                                          Sequence error, PHY error control character detected. */
  172 #define FM_FD_ERR_SIZE                  0x00040000  /**< Frame too long OR Frame size exceeds max_length_frame  */
  173 #define FM_FD_ERR_CLS_DISCARD           0x00020000  /**< classification discard */
  174 #define FM_FD_ERR_EXTRACTION            0x00008000  /**< Extract Out of Frame */
  175 #define FM_FD_ERR_NO_SCHEME             0x00004000  /**< No Scheme Selected */
  176 #define FM_FD_ERR_KEYSIZE_OVERFLOW      0x00002000  /**< Keysize Overflow */
  177 #define FM_FD_ERR_COLOR_RED             0x00000800  /**< Frame color is red */
  178 #define FM_FD_ERR_COLOR_YELLOW          0x00000400  /**< Frame color is yellow */
  179 #define FM_FD_ERR_ILL_PLCR              0x00000200  /**< Illegal Policer Profile selected */
  180 #define FM_FD_ERR_PLCR_FRAME_LEN        0x00000100  /**< Policer frame length error */
  181 #define FM_FD_ERR_PRS_TIMEOUT           0x00000080  /**< Parser Time out Exceed */
  182 #define FM_FD_ERR_PRS_ILL_INSTRUCT      0x00000040  /**< Invalid Soft Parser instruction */
  183 #define FM_FD_ERR_PRS_HDR_ERR           0x00000020  /**< Header error was identified during parsing */
  184 #define FM_FD_ERR_BLOCK_LIMIT_EXCEEDED  0x00000008  /**< Frame parsed beyind 256 first bytes */
  185 
  186 #define FM_FD_TX_STATUS_ERR_MASK        (FM_FD_ERR_UNSUPPORTED_FORMAT   | \
  187                                          FM_FD_ERR_LENGTH               | \
  188                                          FM_FD_ERR_DMA) /**< TX Error FD bits */
  189 
  190 #define FM_FD_RX_STATUS_ERR_MASK        (FM_FD_ERR_UNSUPPORTED_FORMAT   | \
  191                                          FM_FD_ERR_LENGTH               | \
  192                                          FM_FD_ERR_DMA                  | \
  193                                          FM_FD_ERR_IPR                  | \
  194                                          FM_FD_ERR_IPR_TO               | \
  195                                          FM_FD_ERR_IPR_NCSP             | \
  196                                          FM_FD_ERR_PHYSICAL             | \
  197                                          FM_FD_ERR_SIZE                 | \
  198                                          FM_FD_ERR_CLS_DISCARD          | \
  199                                          FM_FD_ERR_COLOR_RED            | \
  200                                          FM_FD_ERR_COLOR_YELLOW         | \
  201                                          FM_FD_ERR_ILL_PLCR             | \
  202                                          FM_FD_ERR_PLCR_FRAME_LEN       | \
  203                                          FM_FD_ERR_EXTRACTION           | \
  204                                          FM_FD_ERR_NO_SCHEME            | \
  205                                          FM_FD_ERR_KEYSIZE_OVERFLOW     | \
  206                                          FM_FD_ERR_PRS_TIMEOUT          | \
  207                                          FM_FD_ERR_PRS_ILL_INSTRUCT     | \
  208                                          FM_FD_ERR_PRS_HDR_ERR          | \
  209                                          FM_FD_ERR_BLOCK_LIMIT_EXCEEDED) /**< RX Error FD bits */
  210 
  211 #define FM_FD_RX_STATUS_ERR_NON_FM      0x00400000  /**< non Frame-Manager error */
  212 /* @} */
  213 
  214 /**************************************************************************//**
  215  @Description   Context A
  216 *//***************************************************************************/
  217 typedef _Packed struct t_FmContextA {
  218     volatile uint32_t    command;   /**< ContextA Command */
  219     volatile uint8_t     res0[4];   /**< ContextA Reserved bits */
  220 } _PackedType t_FmContextA;
  221 
  222 /**************************************************************************//**
  223  @Description   Context B
  224 *//***************************************************************************/
  225 typedef uint32_t t_FmContextB;
  226 
  227 /**************************************************************************//**
  228  @Collection   Special Operation options
  229 *//***************************************************************************/
  230 typedef uint32_t fmSpecialOperations_t;                 /**< typedef for defining Special Operation options */
  231 
  232 #define  FM_SP_OP_IPSEC                     0x80000000  /**< activate features that related to IPSec (e.g fix Eth-type) */
  233 #define  FM_SP_OP_IPSEC_UPDATE_UDP_LEN      0x40000000  /**< update the UDP-Len after Encryption */
  234 #define  FM_SP_OP_IPSEC_MANIP               0x20000000  /**< handle the IPSec-manip options */
  235 #define  FM_SP_OP_RPD                       0x10000000  /**< Set the RPD bit */
  236 #define  FM_SP_OP_DCL4C                     0x08000000  /**< Set the DCL4C bit */
  237 #define  FM_SP_OP_CHECK_SEC_ERRORS          0x04000000  /**< Check SEC errors */
  238 #define  FM_SP_OP_CLEAR_RPD                 0x02000000  /**< Clear the RPD bit */
  239 #define  FM_SP_OP_CAPWAP_DTLS_ENC           0x01000000  /**< activate features that related to CAPWAP-DTLS post Encryption */
  240 #define  FM_SP_OP_CAPWAP_DTLS_DEC           0x00800000  /**< activate features that related to CAPWAP-DTLS post Decryption */
  241 #define  FM_SP_OP_IPSEC_NO_ETH_HDR          0x00400000  /**< activate features that related to IPSec without Eth hdr */
  242 /* @} */
  243 
  244 /**************************************************************************//**
  245  @Collection   Context A macros
  246 *//***************************************************************************/
  247 #define FM_CONTEXTA_OVERRIDE_MASK       0x80000000
  248 #define FM_CONTEXTA_ICMD_MASK           0x40000000
  249 #define FM_CONTEXTA_A1_VALID_MASK       0x20000000
  250 #define FM_CONTEXTA_MACCMD_MASK         0x00ff0000
  251 #define FM_CONTEXTA_MACCMD_VALID_MASK   0x00800000
  252 #define FM_CONTEXTA_MACCMD_SECURED_MASK 0x00100000
  253 #define FM_CONTEXTA_MACCMD_SC_MASK      0x000f0000
  254 #define FM_CONTEXTA_A1_MASK             0x0000ffff
  255 
  256 #define FM_CONTEXTA_GET_OVERRIDE(contextA)                 ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_OVERRIDE_MASK) >> (31-0))
  257 #define FM_CONTEXTA_GET_ICMD(contextA)                     ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_ICMD_MASK) >> (31-1))
  258 #define FM_CONTEXTA_GET_A1_VALID(contextA)                 ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_VALID_MASK) >> (31-2))
  259 #define FM_CONTEXTA_GET_A1(contextA)                       ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_MASK) >> (31-31))
  260 #define FM_CONTEXTA_GET_MACCMD(contextA)                   ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_MASK) >> (31-15))
  261 #define FM_CONTEXTA_GET_MACCMD_VALID(contextA)             ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_VALID_MASK) >> (31-8))
  262 #define FM_CONTEXTA_GET_MACCMD_SECURED(contextA)           ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SECURED_MASK) >> (31-11))
  263 #define FM_CONTEXTA_GET_MACCMD_SECURE_CHANNEL(contextA)    ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SC_MASK) >> (31-15))
  264 
  265 #define FM_CONTEXTA_SET_OVERRIDE(contextA,val)              (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_OVERRIDE_MASK) | (((uint32_t)(val) << (31-0)) & FM_CONTEXTA_OVERRIDE_MASK) ))
  266 #define FM_CONTEXTA_SET_ICMD(contextA,val)                  (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_ICMD_MASK) | (((val) << (31-1)) & FM_CONTEXTA_ICMD_MASK) ))
  267 #define FM_CONTEXTA_SET_A1_VALID(contextA,val)              (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_A1_VALID_MASK) | (((val) << (31-2)) & FM_CONTEXTA_A1_VALID_MASK) ))
  268 #define FM_CONTEXTA_SET_A1(contextA,val)                    (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_A1_MASK) | (((val) << (31-31)) & FM_CONTEXTA_A1_MASK) ))
  269 #define FM_CONTEXTA_SET_MACCMD(contextA,val)                (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_MASK) | (((val) << (31-15)) & FM_CONTEXTA_MACCMD_MASK) ))
  270 #define FM_CONTEXTA_SET_MACCMD_VALID(contextA,val)          (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_VALID_MASK) | (((val) << (31-8)) & FM_CONTEXTA_MACCMD_VALID_MASK) ))
  271 #define FM_CONTEXTA_SET_MACCMD_SECURED(contextA,val)        (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_SECURED_MASK) | (((val) << (31-11)) & FM_CONTEXTA_MACCMD_SECURED_MASK) ))
  272 #define FM_CONTEXTA_SET_MACCMD_SECURE_CHANNEL(contextA,val) (((t_FmContextA *)contextA)->command = (uint32_t)((((t_FmContextA *)contextA)->command & ~FM_CONTEXTA_MACCMD_SC_MASK) | (((val) << (31-15)) & FM_CONTEXTA_MACCMD_SC_MASK) ))
  273 /* @} */
  274 
  275 /**************************************************************************//**
  276  @Collection   Context B macros
  277 *//***************************************************************************/
  278 #define FM_CONTEXTB_FQID_MASK               0x00ffffff
  279 
  280 #define FM_CONTEXTB_GET_FQID(contextB)      (*((t_FmContextB *)contextB) & FM_CONTEXTB_FQID_MASK)
  281 #define FM_CONTEXTB_SET_FQID(contextB,val)  (*((t_FmContextB *)contextB) = ((*((t_FmContextB *)contextB) & ~FM_CONTEXTB_FQID_MASK) | ((val) & FM_CONTEXTB_FQID_MASK)))
  282 /* @} */
  283 
  284 #if defined(__MWERKS__) && !defined(__GNUC__)
  285 #pragma pack(pop)
  286 #endif /* defined(__MWERKS__) && ... */
  287 
  288 
  289 /**************************************************************************//**
  290  @Description   FM Exceptions
  291 *//***************************************************************************/
  292 typedef enum e_FmExceptions {
  293     e_FM_EX_DMA_BUS_ERROR = 0,          /**< DMA bus error. */
  294     e_FM_EX_DMA_READ_ECC,               /**< Read Buffer ECC error (Valid for FM rev < 6)*/
  295     e_FM_EX_DMA_SYSTEM_WRITE_ECC,       /**< Write Buffer ECC error on system side (Valid for FM rev < 6)*/
  296     e_FM_EX_DMA_FM_WRITE_ECC,           /**< Write Buffer ECC error on FM side (Valid for FM rev < 6)*/
  297     e_FM_EX_DMA_SINGLE_PORT_ECC,        /**< Single Port ECC error on FM side (Valid for FM rev > 6)*/
  298     e_FM_EX_FPM_STALL_ON_TASKS,         /**< Stall of tasks on FPM */
  299     e_FM_EX_FPM_SINGLE_ECC,             /**< Single ECC on FPM. */
  300     e_FM_EX_FPM_DOUBLE_ECC,             /**< Double ECC error on FPM ram access */
  301     e_FM_EX_QMI_SINGLE_ECC,             /**< Single ECC on QMI. */
  302     e_FM_EX_QMI_DOUBLE_ECC,             /**< Double bit ECC occurred on QMI */
  303     e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,/**< Dequeue from unknown port id */
  304     e_FM_EX_BMI_LIST_RAM_ECC,           /**< Linked List RAM ECC error */
  305     e_FM_EX_BMI_STORAGE_PROFILE_ECC,    /**< Storage Profile ECC Error */
  306     e_FM_EX_BMI_STATISTICS_RAM_ECC,     /**< Statistics Count RAM ECC Error Enable */
  307     e_FM_EX_BMI_DISPATCH_RAM_ECC,       /**< Dispatch RAM ECC Error Enable */
  308     e_FM_EX_IRAM_ECC,                   /**< Double bit ECC occurred on IRAM*/
  309     e_FM_EX_MURAM_ECC                   /**< Double bit ECC occurred on MURAM*/
  310 } e_FmExceptions;
  311 
  312 /**************************************************************************//**
  313  @Description   Enum for defining port DMA swap mode
  314 *//***************************************************************************/
  315 typedef enum e_FmDmaSwapOption {
  316     e_FM_DMA_NO_SWP = FMAN_DMA_NO_SWP,          /**< No swap, transfer data as is.*/
  317     e_FM_DMA_SWP_PPC_LE = FMAN_DMA_SWP_PPC_LE,  /**< The transferred data should be swapped
  318                                                 in PowerPc Little Endian mode. */
  319     e_FM_DMA_SWP_BE = FMAN_DMA_SWP_BE           /**< The transferred data should be swapped
  320                                                 in Big Endian mode */
  321 } e_FmDmaSwapOption;
  322 
  323 /**************************************************************************//**
  324  @Description   Enum for defining port DMA cache attributes
  325 *//***************************************************************************/
  326 typedef enum e_FmDmaCacheOption {
  327     e_FM_DMA_NO_STASH = FMAN_DMA_NO_STASH,      /**< Cacheable, no Allocate (No Stashing) */
  328     e_FM_DMA_STASH = FMAN_DMA_STASH             /**< Cacheable and Allocate (Stashing on) */
  329 } e_FmDmaCacheOption;
  330 
  331 
  332 /**************************************************************************//**
  333  @Group         FM_init_grp FM Initialization Unit
  334 
  335  @Description   FM Initialization Unit
  336 
  337                 Initialization Flow
  338                 Initialization of the FM Module will be carried out by the application
  339                 according to the following sequence:
  340                 -  Calling the configuration routine with basic parameters.
  341                 -  Calling the advance initialization routines to change driver's defaults.
  342                 -  Calling the initialization routine.
  343 
  344  @{
  345 *//***************************************************************************/
  346 
  347 /**************************************************************************//**
  348  @Function      t_FmExceptionsCallback
  349 
  350  @Description   Exceptions user callback routine, will be called upon an
  351                 exception passing the exception identification.
  352 
  353  @Param[in]     h_App      - User's application descriptor.
  354  @Param[in]     exception  - The exception.
  355 *//***************************************************************************/
  356 typedef void (t_FmExceptionsCallback)(t_Handle          h_App,
  357                                       e_FmExceptions    exception);
  358 
  359 
  360 /**************************************************************************//**
  361  @Function      t_FmBusErrorCallback
  362 
  363  @Description   Bus error user callback routine, will be called upon a
  364                 bus error, passing parameters describing the errors and the owner.
  365 
  366  @Param[in]     h_App       - User's application descriptor.
  367  @Param[in]     portType    - Port type (e_FmPortType)
  368  @Param[in]     portId      - Port id - relative to type.
  369  @Param[in]     addr        - Address that caused the error
  370  @Param[in]     tnum        - Owner of error
  371  @Param[in]     liodn       - Logical IO device number
  372 *//***************************************************************************/
  373 typedef void (t_FmBusErrorCallback) (t_Handle        h_App,
  374                                      e_FmPortType    portType,
  375                                      uint8_t         portId,
  376                                      uint64_t        addr,
  377                                      uint8_t         tnum,
  378                                      uint16_t        liodn);
  379 
  380 /**************************************************************************//**
  381  @Description   A structure for defining buffer prefix area content.
  382 *//***************************************************************************/
  383 typedef struct t_FmBufferPrefixContent {
  384     uint16_t    privDataSize;       /**< Number of bytes to be left at the beginning
  385                                          of the external buffer; Note that the private-area will
  386                                          start from the base of the buffer address. */
  387     bool        passPrsResult;      /**< TRUE to pass the parse result to/from the FM;
  388                                          User may use FM_PORT_GetBufferPrsResult() in order to
  389                                          get the parser-result from a buffer. */
  390     bool        passTimeStamp;      /**< TRUE to pass the timeStamp to/from the FM
  391                                          User may use FM_PORT_GetBufferTimeStamp() in order to
  392                                          get the parser-result from a buffer. */
  393     bool        passHashResult;     /**< TRUE to pass the KG hash result to/from the FM
  394                                          User may use FM_PORT_GetBufferHashResult() in order to
  395                                          get the parser-result from a buffer. */
  396     bool        passAllOtherPCDInfo;/**< Add all other Internal-Context information:
  397                                          AD, hash-result, key, etc. */
  398     uint16_t    dataAlign;          /**< 0 to use driver's default alignment [DEFAULT_FM_SP_bufferPrefixContent_dataAlign],
  399                                          other value for selecting a data alignment (must be a power of 2);
  400                                          if write optimization is used, must be >= 16. */
  401     uint8_t     manipExtraSpace;    /**< Maximum extra size needed (insertion-size minus removal-size);
  402                                          Note that this field impacts the size of the buffer-prefix
  403                                          (i.e. it pushes the data offset);
  404                                          This field is irrelevant if DPAA_VERSION==10 */
  405 } t_FmBufferPrefixContent;
  406 
  407 /**************************************************************************//**
  408  @Description   A structure of information about each of the external
  409                 buffer pools used by a port or storage-profile.
  410 *//***************************************************************************/
  411 typedef struct t_FmExtPoolParams {
  412     uint8_t                 id;     /**< External buffer pool id */
  413     uint16_t                size;   /**< External buffer pool buffer size */
  414 } t_FmExtPoolParams;
  415 
  416 /**************************************************************************//**
  417  @Description   A structure for informing the driver about the external
  418                 buffer pools allocated in the BM and used by a port or a
  419                 storage-profile.
  420 *//***************************************************************************/
  421 typedef struct t_FmExtPools {
  422     uint8_t                 numOfPoolsUsed;     /**< Number of pools use by this port */
  423     t_FmExtPoolParams       extBufPool[FM_PORT_MAX_NUM_OF_EXT_POOLS];
  424                                                 /**< Parameters for each port */
  425 } t_FmExtPools;
  426 
  427 /**************************************************************************//**
  428  @Description   A structure for defining backup BM Pools.
  429 *//***************************************************************************/
  430 typedef struct t_FmBackupBmPools {
  431     uint8_t     numOfBackupPools;       /**< Number of BM backup pools -
  432                                              must be smaller than the total number of
  433                                              pools defined for the specified port.*/
  434     uint8_t     poolIds[FM_PORT_MAX_NUM_OF_EXT_POOLS];
  435                                         /**< numOfBackupPools pool id's, specifying which
  436                                              pools should be used only as backup. Pool
  437                                              id's specified here must be a subset of the
  438                                              pools used by the specified port.*/
  439 } t_FmBackupBmPools;
  440 
  441 /**************************************************************************//**
  442  @Description   A structure for defining BM pool depletion criteria
  443 *//***************************************************************************/
  444 typedef struct t_FmBufPoolDepletion {
  445     bool        poolsGrpModeEnable;                 /**< select mode in which pause frames will be sent after
  446                                                          a number of pools (all together!) are depleted */
  447     uint8_t     numOfPools;                         /**< the number of depleted pools that will invoke
  448                                                          pause frames transmission. */
  449     bool        poolsToConsider[BM_MAX_NUM_OF_POOLS];
  450                                                     /**< For each pool, TRUE if it should be considered for
  451                                                          depletion (Note - this pool must be used by this port!). */
  452     bool        singlePoolModeEnable;               /**< select mode in which pause frames will be sent after
  453                                                          a single-pool is depleted; */
  454     bool        poolsToConsiderForSingleMode[BM_MAX_NUM_OF_POOLS];
  455                                                     /**< For each pool, TRUE if it should be considered for
  456                                                          depletion (Note - this pool must be used by this port!) */
  457 #if (DPAA_VERSION >= 11)
  458     bool        pfcPrioritiesEn[FM_MAX_NUM_OF_PFC_PRIORITIES];
  459                                                     /**< This field is used by the MAC as the Priority Enable Vector in the PFC frame which is transmitted */
  460 #endif /* (DPAA_VERSION >= 11) */
  461 } t_FmBufPoolDepletion;
  462 
  463 /**************************************************************************//**
  464  @Description   A Structure for defining Ucode patch for loading.
  465 *//***************************************************************************/
  466 typedef struct t_FmFirmwareParams {
  467     uint32_t                size;                   /**< Size of uCode */
  468     uint32_t                *p_Code;                /**< A pointer to the uCode */
  469 } t_FmFirmwareParams;
  470 
  471 /**************************************************************************//**
  472  @Description   A Structure for defining FM initialization parameters
  473 *//***************************************************************************/
  474 typedef struct t_FmParams {
  475     uint8_t                 fmId;                   /**< Index of the FM */
  476     uint8_t                 guestId;                /**< FM Partition Id */
  477     uintptr_t               baseAddr;               /**< A pointer to base of memory mapped FM registers (virtual);
  478                                                          this field is optional when the FM runs in "guest-mode"
  479                                                          (i.e. guestId != NCSW_MASTER_ID); in that case, the driver will
  480                                                          use the memory-map instead of calling the IPC where possible;
  481                                                          NOTE that this should include ALL common registers of the FM including
  482                                                          the PCD registers area (i.e. until the VSP pages - 880KB). */
  483     t_Handle                h_FmMuram;              /**< A handle of an initialized MURAM object,
  484                                                          to be used by the FM. */
  485     uint16_t                fmClkFreq;              /**< In Mhz;
  486                                                          Relevant when FM not runs in "guest-mode". */
  487     uint16_t                fmMacClkRatio;          /**< FM MAC Clock ratio, for backward comparability:
  488                                                                      when fmMacClkRatio = 0, ratio is 2:1
  489                                                                      when fmMacClkRatio = 1, ratio is 1:1  */
  490     t_FmExceptionsCallback  *f_Exception;           /**< An application callback routine to handle exceptions;
  491                                                          Relevant when FM not runs in "guest-mode". */
  492     t_FmBusErrorCallback    *f_BusError;            /**< An application callback routine to handle exceptions;
  493                                                          Relevant when FM not runs in "guest-mode". */
  494     t_Handle                h_App;                  /**< A handle to an application layer object; This handle will
  495                                                          be passed by the driver upon calling the above callbacks;
  496                                                          Relevant when FM not runs in "guest-mode". */
  497     uintptr_t               irq;                    /**< FM interrupt source for normal events;
  498                                                          Relevant when FM not runs in "guest-mode". */
  499     uintptr_t               errIrq;                 /**< FM interrupt source for errors;
  500                                                          Relevant when FM not runs in "guest-mode". */
  501     t_FmFirmwareParams      firmware;               /**< The firmware parameters structure;
  502                                                          Relevant when FM not runs in "guest-mode". */
  503 
  504 #if (DPAA_VERSION >= 11)
  505     uintptr_t               vspBaseAddr;            /**< A pointer to base of memory mapped FM VSP registers (virtual);
  506                                                          i.e. up to 24KB, depending on the specific chip. */
  507     uint8_t                 partVSPBase;            /**< The first Virtual-Storage-Profile-id dedicated to this partition.
  508                                                          NOTE: this parameter relevant only when working with multiple partitions. */
  509     uint8_t                 partNumOfVSPs;          /**< Number of VSPs dedicated to this partition.
  510                                                          NOTE: this parameter relevant only when working with multiple partitions. */
  511 #endif /* (DPAA_VERSION >= 11) */
  512 } t_FmParams;
  513 
  514 
  515 /**************************************************************************//**
  516  @Function      FM_Config
  517 
  518  @Description   Creates the FM module and returns its handle (descriptor).
  519                 This descriptor must be passed as first parameter to all other
  520                 FM function calls.
  521 
  522                 No actual initialization or configuration of FM hardware is
  523                 done by this routine. All FM parameters get default values that
  524                 may be changed by calling one or more of the advance config routines.
  525 
  526  @Param[in]     p_FmParams  - A pointer to a data structure of mandatory FM parameters
  527 
  528  @Return        A handle to the FM object, or NULL for Failure.
  529 *//***************************************************************************/
  530 t_Handle FM_Config(t_FmParams *p_FmParams);
  531 
  532 /**************************************************************************//**
  533  @Function      FM_Init
  534 
  535  @Description   Initializes the FM module by defining the software structure
  536                 and configuring the hardware registers.
  537 
  538  @Param[in]     h_Fm - FM module descriptor
  539 
  540  @Return        E_OK on success; Error code otherwise.
  541 *//***************************************************************************/
  542 t_Error FM_Init(t_Handle h_Fm);
  543 
  544 /**************************************************************************//**
  545  @Function      FM_Free
  546 
  547  @Description   Frees all resources that were assigned to FM module.
  548 
  549                 Calling this routine invalidates the descriptor.
  550 
  551  @Param[in]     h_Fm - FM module descriptor
  552 
  553  @Return        E_OK on success; Error code otherwise.
  554 *//***************************************************************************/
  555 t_Error FM_Free(t_Handle h_Fm);
  556 
  557 
  558 /**************************************************************************//**
  559  @Group         FM_advanced_init_grp    FM Advanced Configuration Unit
  560 
  561  @Description   Advanced configuration routines are optional routines that may
  562                 be called in order to change the default driver settings.
  563 
  564                 Note: Advanced configuration routines are not available for guest partition.
  565  @{
  566 *//***************************************************************************/
  567 
  568 /**************************************************************************//**
  569  @Description   Enum for selecting DMA debug mode
  570 *//***************************************************************************/
  571 typedef enum e_FmDmaDbgCntMode {
  572     e_FM_DMA_DBG_NO_CNT             = 0,    /**< No counting */
  573     e_FM_DMA_DBG_CNT_DONE,                  /**< Count DONE commands */
  574     e_FM_DMA_DBG_CNT_COMM_Q_EM,             /**< count command queue emergency signals */
  575     e_FM_DMA_DBG_CNT_INT_READ_EM,           /**< Count Internal Read buffer emergency signal */
  576     e_FM_DMA_DBG_CNT_INT_WRITE_EM,          /**< Count Internal Write buffer emergency signal */
  577     e_FM_DMA_DBG_CNT_FPM_WAIT,              /**< Count FPM WAIT signal */
  578     e_FM_DMA_DBG_CNT_SIGLE_BIT_ECC,         /**< Single bit ECC errors. */
  579     e_FM_DMA_DBG_CNT_RAW_WAR_PROT           /**< Number of times there was a need for RAW & WAR protection. */
  580 } e_FmDmaDbgCntMode;
  581 
  582 /**************************************************************************//**
  583  @Description   Enum for selecting DMA Cache Override
  584 *//***************************************************************************/
  585 typedef enum e_FmDmaCacheOverride {
  586     e_FM_DMA_NO_CACHE_OR = 0,               /**< No override of the Cache field */
  587     e_FM_DMA_NO_STASH_DATA,                 /**< Data should not be stashed in system level cache */
  588     e_FM_DMA_MAY_STASH_DATA,                /**< Data may be stashed in system level cache */
  589     e_FM_DMA_STASH_DATA                     /**< Data should be stashed in system level cache */
  590 } e_FmDmaCacheOverride;
  591 
  592 /**************************************************************************//**
  593  @Description   Enum for selecting DMA External Bus Priority
  594 *//***************************************************************************/
  595 typedef enum e_FmDmaExtBusPri {
  596     e_FM_DMA_EXT_BUS_NORMAL = 0,            /**< Normal priority */
  597     e_FM_DMA_EXT_BUS_EBS,                   /**< AXI extended bus service priority */
  598     e_FM_DMA_EXT_BUS_SOS,                   /**< AXI sos priority */
  599     e_FM_DMA_EXT_BUS_EBS_AND_SOS            /**< AXI ebs + sos priority */
  600 } e_FmDmaExtBusPri;
  601 
  602 /**************************************************************************//**
  603  @Description   Enum for choosing the field that will be output on AID
  604 *//***************************************************************************/
  605 typedef enum e_FmDmaAidMode {
  606     e_FM_DMA_AID_OUT_PORT_ID = 0,           /**< 4 LSB of PORT_ID */
  607     e_FM_DMA_AID_OUT_TNUM                   /**< 4 LSB of TNUM */
  608 } e_FmDmaAidMode;
  609 
  610 /**************************************************************************//**
  611  @Description   Enum for selecting FPM Catastrophic error behavior
  612 *//***************************************************************************/
  613 typedef enum e_FmCatastrophicErr {
  614     e_FM_CATASTROPHIC_ERR_STALL_PORT = 0,   /**< Port_ID is stalled (only reset can release it) */
  615     e_FM_CATASTROPHIC_ERR_STALL_TASK        /**< Only erroneous task is stalled */
  616 } e_FmCatastrophicErr;
  617 
  618 /**************************************************************************//**
  619  @Description   Enum for selecting FPM DMA Error behavior
  620 *//***************************************************************************/
  621 typedef enum e_FmDmaErr {
  622     e_FM_DMA_ERR_CATASTROPHIC = 0,          /**< Dma error is treated as a catastrophic
  623                                                  error (e_FmCatastrophicErr)*/
  624     e_FM_DMA_ERR_REPORT                     /**< Dma error is just reported */
  625 } e_FmDmaErr;
  626 
  627 /**************************************************************************//**
  628  @Description   Enum for selecting DMA Emergency level by BMI emergency signal
  629 *//***************************************************************************/
  630 typedef enum e_FmDmaEmergencyLevel {
  631     e_FM_DMA_EM_EBS = 0,                    /**< EBS emergency */
  632     e_FM_DMA_EM_SOS                         /**< SOS emergency */
  633 } e_FmDmaEmergencyLevel;
  634 
  635 /**************************************************************************//**
  636  @Collection   Enum for selecting DMA Emergency options
  637 *//***************************************************************************/
  638 typedef uint32_t fmEmergencyBus_t;          /**< DMA emergency options */
  639 
  640 #define  FM_DMA_MURAM_READ_EMERGENCY        0x00800000    /**< Enable emergency for MURAM1 */
  641 #define  FM_DMA_MURAM_WRITE_EMERGENCY       0x00400000    /**< Enable emergency for MURAM2 */
  642 #define  FM_DMA_EXT_BUS_EMERGENCY           0x00100000    /**< Enable emergency for external bus */
  643 /* @} */
  644 
  645 /**************************************************************************//**
  646  @Description   A structure for defining DMA emergency level
  647 *//***************************************************************************/
  648 typedef struct t_FmDmaEmergency {
  649     fmEmergencyBus_t        emergencyBusSelect;             /**< An OR of the busses where emergency
  650                                                                  should be enabled */
  651     e_FmDmaEmergencyLevel   emergencyLevel;                 /**< EBS/SOS */
  652 } t_FmDmaEmergency;
  653 
  654 /**************************************************************************//*
  655  @Description   structure for defining FM threshold
  656 *//***************************************************************************/
  657 typedef struct t_FmThresholds {
  658     uint8_t                 dispLimit;                      /**< The number of times a frames may
  659                                                                  be passed in the FM before assumed to
  660                                                                  be looping. */
  661     uint8_t                 prsDispTh;                      /**< This is the number pf packets that may be
  662                                                                  queued in the parser dispatch queue*/
  663     uint8_t                 plcrDispTh;                     /**< This is the number pf packets that may be
  664                                                                  queued in the policer dispatch queue*/
  665     uint8_t                 kgDispTh;                       /**< This is the number pf packets that may be
  666                                                                  queued in the keygen dispatch queue*/
  667     uint8_t                 bmiDispTh;                      /**< This is the number pf packets that may be
  668                                                                  queued in the BMI dispatch queue*/
  669     uint8_t                 qmiEnqDispTh;                   /**< This is the number pf packets that may be
  670                                                                  queued in the QMI enqueue dispatch queue*/
  671     uint8_t                 qmiDeqDispTh;                   /**< This is the number pf packets that may be
  672                                                                  queued in the QMI dequeue dispatch queue*/
  673     uint8_t                 fmCtl1DispTh;                   /**< This is the number pf packets that may be
  674                                                                  queued in fmCtl1 dispatch queue*/
  675     uint8_t                 fmCtl2DispTh;                   /**< This is the number pf packets that may be
  676                                                                  queued in fmCtl2 dispatch queue*/
  677 } t_FmThresholds;
  678 
  679 /**************************************************************************//*
  680  @Description   structure for defining DMA thresholds
  681 *//***************************************************************************/
  682 typedef struct t_FmDmaThresholds {
  683     uint8_t                     assertEmergency;            /**< When this value is reached,
  684                                                                  assert emergency (Threshold)*/
  685     uint8_t                     clearEmergency;             /**< After emergency is asserted, it is held
  686                                                                  until this value is reached (Hystheresis) */
  687 } t_FmDmaThresholds;
  688 
  689 /**************************************************************************//**
  690  @Function      t_FmResetOnInitOverrideCallback
  691 
  692  @Description   FMan specific reset on init user callback routine,
  693                 will be used to override the standard FMan reset on init procedure
  694 
  695  @Param[in]     h_Fm  - FMan handler
  696 *//***************************************************************************/
  697 typedef void (t_FmResetOnInitOverrideCallback)(t_Handle h_Fm);
  698 
  699 /**************************************************************************//**
  700  @Function      FM_ConfigResetOnInit
  701 
  702  @Description   Define whether to reset the FM before initialization.
  703                 Change the default configuration [DEFAULT_resetOnInit].
  704 
  705  @Param[in]     h_Fm                A handle to an FM Module.
  706  @Param[in]     enable              When TRUE, FM will be reset before any initialization.
  707 
  708  @Return        E_OK on success; Error code otherwise.
  709 
  710  @Cautions      Allowed only following FM_Config() and before FM_Init().
  711                 This routine should NOT be called from guest-partition
  712                 (i.e. guestId != NCSW_MASTER_ID)
  713 *//***************************************************************************/
  714 t_Error FM_ConfigResetOnInit(t_Handle h_Fm, bool enable);
  715 
  716 /**************************************************************************//**
  717  @Function      FM_ConfigResetOnInitOverrideCallback
  718 
  719  @Description   Define a special reset of FM before initialization.
  720                 Change the default configuration [DEFAULT_resetOnInitOverrideCallback].
  721 
  722  @Param[in]     h_Fm                    A handle to an FM Module.
  723  @Param[in]     f_ResetOnInitOverride   FM specific reset on init user callback routine.
  724 
  725  @Return        E_OK on success; Error code otherwise.
  726 
  727  @Cautions      Allowed only following FM_Config() and before FM_Init().
  728                 This routine should NOT be called from guest-partition
  729                 (i.e. guestId != NCSW_MASTER_ID)
  730 *//***************************************************************************/
  731 t_Error FM_ConfigResetOnInitOverrideCallback(t_Handle h_Fm, t_FmResetOnInitOverrideCallback *f_ResetOnInitOverride);
  732 
  733 /**************************************************************************//**
  734  @Function      FM_ConfigTotalFifoSize
  735 
  736  @Description   Define Total FIFO size for the whole FM.
  737                 Calling this routine changes the total Fifo size in the internal driver
  738                 data base from its default configuration [DEFAULT_totalFifoSize]
  739 
  740  @Param[in]     h_Fm                A handle to an FM Module.
  741  @Param[in]     totalFifoSize       The selected new value.
  742 
  743  @Return        E_OK on success; Error code otherwise.
  744 
  745  @Cautions      Allowed only following FM_Config() and before FM_Init().
  746                 This routine should NOT be called from guest-partition
  747                 (i.e. guestId != NCSW_MASTER_ID)
  748 *//***************************************************************************/
  749 t_Error FM_ConfigTotalFifoSize(t_Handle h_Fm, uint32_t totalFifoSize);
  750 
  751  /**************************************************************************//**
  752  @Function      FM_ConfigDmaCacheOverride
  753 
  754  @Description   Define cache override mode.
  755                 Calling this routine changes the cache override mode
  756                 in the internal driver data base from its default configuration [DEFAULT_cacheOverride]
  757 
  758  @Param[in]     h_Fm            A handle to an FM Module.
  759  @Param[in]     cacheOverride   The selected new value.
  760 
  761  @Return        E_OK on success; Error code otherwise.
  762 
  763  @Cautions      Allowed only following FM_Config() and before FM_Init().
  764                 This routine should NOT be called from guest-partition
  765                 (i.e. guestId != NCSW_MASTER_ID)
  766 *//***************************************************************************/
  767 t_Error FM_ConfigDmaCacheOverride(t_Handle h_Fm, e_FmDmaCacheOverride cacheOverride);
  768 
  769 /**************************************************************************//**
  770  @Function      FM_ConfigDmaAidOverride
  771 
  772  @Description   Define DMA AID override mode.
  773                 Calling this routine changes the AID override mode
  774                 in the internal driver data base from its default configuration  [DEFAULT_aidOverride]
  775 
  776  @Param[in]     h_Fm            A handle to an FM Module.
  777  @Param[in]     aidOverride     The selected new value.
  778 
  779  @Return        E_OK on success; Error code otherwise.
  780 
  781  @Cautions      Allowed only following FM_Config() and before FM_Init().
  782                 This routine should NOT be called from guest-partition
  783                 (i.e. guestId != NCSW_MASTER_ID)
  784 *//***************************************************************************/
  785 t_Error FM_ConfigDmaAidOverride(t_Handle h_Fm, bool aidOverride);
  786 
  787 /**************************************************************************//**
  788  @Function      FM_ConfigDmaAidMode
  789 
  790  @Description   Define DMA AID  mode.
  791                 Calling this routine changes the AID  mode in the internal
  792                 driver data base from its default configuration [DEFAULT_aidMode]
  793 
  794  @Param[in]     h_Fm            A handle to an FM Module.
  795  @Param[in]     aidMode         The selected new value.
  796 
  797  @Return        E_OK on success; Error code otherwise.
  798 
  799  @Cautions      Allowed only following FM_Config() and before FM_Init().
  800                 This routine should NOT be called from guest-partition
  801                 (i.e. guestId != NCSW_MASTER_ID)
  802 *//***************************************************************************/
  803 t_Error FM_ConfigDmaAidMode(t_Handle h_Fm, e_FmDmaAidMode aidMode);
  804 
  805 /**************************************************************************//**
  806  @Function      FM_ConfigDmaAxiDbgNumOfBeats
  807 
  808  @Description   Define DMA AXI number of beats.
  809                 Calling this routine changes the AXI number of beats in the internal
  810                 driver data base from its default configuration [DEFAULT_axiDbgNumOfBeats]
  811 
  812  @Param[in]     h_Fm                A handle to an FM Module.
  813  @Param[in]     axiDbgNumOfBeats    The selected new value.
  814 
  815  @Return        E_OK on success; Error code otherwise.
  816 
  817  @Cautions      Allowed only following FM_Config() and before FM_Init().
  818                 This routine should NOT be called from guest-partition
  819                 (i.e. guestId != NCSW_MASTER_ID)
  820 *//***************************************************************************/
  821 t_Error FM_ConfigDmaAxiDbgNumOfBeats(t_Handle h_Fm, uint8_t axiDbgNumOfBeats);
  822 
  823 /**************************************************************************//**
  824  @Function      FM_ConfigDmaCamNumOfEntries
  825 
  826  @Description   Define number of CAM entries.
  827                 Calling this routine changes the number of CAM entries in the internal
  828                 driver data base from its default configuration [DEFAULT_dmaCamNumOfEntries].
  829 
  830  @Param[in]     h_Fm            A handle to an FM Module.
  831  @Param[in]     numOfEntries    The selected new value.
  832 
  833  @Return        E_OK on success; Error code otherwise.
  834 
  835  @Cautions      Allowed only following FM_Config() and before FM_Init().
  836                 This routine should NOT be called from guest-partition
  837                 (i.e. guestId != NCSW_MASTER_ID)
  838 *//***************************************************************************/
  839 t_Error FM_ConfigDmaCamNumOfEntries(t_Handle h_Fm, uint8_t numOfEntries);
  840 
  841 /**************************************************************************//**
  842  @Function      FM_ConfigEnableCounters
  843 
  844  @Description   Obsolete, always return E_OK.
  845 
  846  @Param[in]     h_Fm    A handle to an FM Module.
  847 
  848  @Return        E_OK on success; Error code otherwise.
  849 *//***************************************************************************/
  850 t_Error FM_ConfigEnableCounters(t_Handle h_Fm);
  851 
  852 /**************************************************************************//**
  853  @Function      FM_ConfigDmaDbgCounter
  854 
  855  @Description   Define DMA debug counter.
  856                 Calling this routine changes the number of the DMA debug counter in the internal
  857                 driver data base from its default configuration [DEFAULT_dmaDbgCntMode].
  858 
  859  @Param[in]     h_Fm                A handle to an FM Module.
  860  @Param[in]     fmDmaDbgCntMode     An enum selecting the debug counter mode.
  861 
  862  @Return        E_OK on success; Error code otherwise.
  863 
  864  @Cautions      Allowed only following FM_Config() and before FM_Init().
  865                 This routine should NOT be called from guest-partition
  866                 (i.e. guestId != NCSW_MASTER_ID)
  867 *//***************************************************************************/
  868 t_Error FM_ConfigDmaDbgCounter(t_Handle h_Fm, e_FmDmaDbgCntMode fmDmaDbgCntMode);
  869 
  870 /**************************************************************************//**
  871  @Function      FM_ConfigDmaStopOnBusErr
  872 
  873  @Description   Define bus error behavior.
  874                 Calling this routine changes the bus error behavior definition
  875                 in the internal driver data base from its default
  876                 configuration [DEFAULT_dmaStopOnBusError].
  877 
  878  @Param[in]     h_Fm    A handle to an FM Module.
  879  @Param[in]     stop    TRUE to stop on bus error, FALSE to continue.
  880 
  881  @Return        E_OK on success; Error code otherwise.
  882 
  883  @Cautions      Allowed only following FM_Config() and before FM_Init().
  884                 Only if bus error is enabled.
  885                 This routine should NOT be called from guest-partition
  886                 (i.e. guestId != NCSW_MASTER_ID)
  887 *//***************************************************************************/
  888 t_Error FM_ConfigDmaStopOnBusErr(t_Handle h_Fm, bool stop);
  889 
  890 /**************************************************************************//**
  891  @Function      FM_ConfigDmaEmergency
  892 
  893  @Description   Define DMA emergency.
  894                 Calling this routine changes the DMA emergency definition
  895                 in the internal driver data base from its default
  896                 configuration where's it's disabled.
  897 
  898  @Param[in]     h_Fm        A handle to an FM Module.
  899  @Param[in]     p_Emergency An OR mask of all required options.
  900 
  901  @Return        E_OK on success; Error code otherwise.
  902 
  903  @Cautions      Allowed only following FM_Config() and before FM_Init().
  904                 This routine should NOT be called from guest-partition
  905                 (i.e. guestId != NCSW_MASTER_ID)
  906 *//***************************************************************************/
  907 t_Error FM_ConfigDmaEmergency(t_Handle h_Fm, t_FmDmaEmergency *p_Emergency);
  908 
  909 /**************************************************************************//**
  910  @Function      FM_ConfigDmaErr
  911 
  912  @Description   DMA error treatment.
  913                 Calling this routine changes the DMA error treatment
  914                 in the internal driver data base from its default
  915                 configuration [DEFAULT_dmaErr].
  916 
  917  @Param[in]     h_Fm    A handle to an FM Module.
  918  @Param[in]     dmaErr  The selected new choice.
  919 
  920  @Return        E_OK on success; Error code otherwise.
  921 
  922  @Cautions      Allowed only following FM_Config() and before FM_Init().
  923                 This routine should NOT be called from guest-partition
  924                 (i.e. guestId != NCSW_MASTER_ID)
  925 *//***************************************************************************/
  926 t_Error FM_ConfigDmaErr(t_Handle h_Fm, e_FmDmaErr dmaErr);
  927 
  928 /**************************************************************************//**
  929  @Function      FM_ConfigCatastrophicErr
  930 
  931  @Description   Define FM behavior on catastrophic error.
  932                 Calling this routine changes the FM behavior on catastrophic
  933                 error in the internal driver data base from its default
  934                 [DEFAULT_catastrophicErr].
  935 
  936  @Param[in]     h_Fm                A handle to an FM Module.
  937  @Param[in]     catastrophicErr     The selected new choice.
  938 
  939  @Return        E_OK on success; Error code otherwise.
  940 
  941  @Cautions      Allowed only following FM_Config() and before FM_Init().
  942                 This routine should NOT be called from guest-partition
  943                 (i.e. guestId != NCSW_MASTER_ID)
  944 *//***************************************************************************/
  945 t_Error FM_ConfigCatastrophicErr(t_Handle h_Fm, e_FmCatastrophicErr catastrophicErr);
  946 
  947 /**************************************************************************//**
  948  @Function      FM_ConfigEnableMuramTestMode
  949 
  950  @Description   Enable MURAM test mode.
  951                 Calling this routine changes the internal driver data base
  952                 from its default selection of test mode where it's disabled.
  953                 This routine is only avaiable on old FM revisions (FMan v2).
  954 
  955  @Param[in]     h_Fm    A handle to an FM Module.
  956 
  957  @Return        E_OK on success; Error code otherwise.
  958 
  959  @Cautions      Allowed only following FM_Config() and before FM_Init().
  960                 This routine should NOT be called from guest-partition
  961                 (i.e. guestId != NCSW_MASTER_ID)
  962 *//***************************************************************************/
  963 t_Error FM_ConfigEnableMuramTestMode(t_Handle h_Fm);
  964 
  965 /**************************************************************************//**
  966  @Function      FM_ConfigEnableIramTestMode
  967 
  968  @Description   Enable IRAM test mode.
  969                 Calling this routine changes the internal driver data base
  970                 from its default selection of test mode where it's disabled.
  971                 This routine is only avaiable on old FM revisions (FMan v2).
  972 
  973  @Param[in]     h_Fm    A handle to an FM Module.
  974 
  975  @Return        E_OK on success; Error code otherwise.
  976 
  977  @Cautions      Allowed only following FM_Config() and before FM_Init().
  978                 This routine should NOT be called from guest-partition
  979                 (i.e. guestId != NCSW_MASTER_ID)
  980 *//***************************************************************************/
  981 t_Error FM_ConfigEnableIramTestMode(t_Handle h_Fm);
  982 
  983 /**************************************************************************//**
  984  @Function      FM_ConfigHaltOnExternalActivation
  985 
  986  @Description   Define FM behavior on external halt activation.
  987                 Calling this routine changes the FM behavior on external halt
  988                 activation in the internal driver data base from its default
  989                 [DEFAULT_haltOnExternalActivation].
  990 
  991  @Param[in]     h_Fm            A handle to an FM Module.
  992  @Param[in]     enable          TRUE to enable halt on external halt
  993                                 activation.
  994 
  995  @Return        E_OK on success; Error code otherwise.
  996 
  997  @Cautions      Allowed only following FM_Config() and before FM_Init().
  998                 This routine should NOT be called from guest-partition
  999                 (i.e. guestId != NCSW_MASTER_ID)
 1000 *//***************************************************************************/
 1001 t_Error FM_ConfigHaltOnExternalActivation(t_Handle h_Fm, bool enable);
 1002 
 1003 /**************************************************************************//**
 1004  @Function      FM_ConfigHaltOnUnrecoverableEccError
 1005 
 1006  @Description   Define FM behavior on external halt activation.
 1007                 Calling this routine changes the FM behavior on unrecoverable
 1008                 ECC error in the internal driver data base from its default
 1009                 [DEFAULT_haltOnUnrecoverableEccError].
 1010                 This routine is only avaiable on old FM revisions (FMan v2).
 1011 
 1012  @Param[in]     h_Fm            A handle to an FM Module.
 1013  @Param[in]     enable          TRUE to enable halt on unrecoverable Ecc error
 1014 
 1015  @Return        E_OK on success; Error code otherwise.
 1016 
 1017  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1018                 This routine should NOT be called from guest-partition
 1019                 (i.e. guestId != NCSW_MASTER_ID)
 1020 *//***************************************************************************/
 1021 t_Error FM_ConfigHaltOnUnrecoverableEccError(t_Handle h_Fm, bool enable);
 1022 
 1023 /**************************************************************************//**
 1024  @Function      FM_ConfigException
 1025 
 1026  @Description   Define FM exceptions.
 1027                 Calling this routine changes the exceptions defaults in the
 1028                 internal driver data base where all exceptions are enabled.
 1029 
 1030  @Param[in]     h_Fm            A handle to an FM Module.
 1031  @Param[in]     exception       The exception to be selected.
 1032  @Param[in]     enable          TRUE to enable interrupt, FALSE to mask it.
 1033 
 1034  @Return        E_OK on success; Error code otherwise.
 1035 
 1036  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1037                 This routine should NOT be called from guest-partition
 1038                 (i.e. guestId != NCSW_MASTER_ID)
 1039 *//***************************************************************************/
 1040 t_Error FM_ConfigException(t_Handle h_Fm, e_FmExceptions exception, bool enable);
 1041 
 1042 /**************************************************************************//**
 1043  @Function      FM_ConfigExternalEccRamsEnable
 1044 
 1045  @Description   Select external ECC enabling.
 1046                 Calling this routine changes the ECC enabling control in the internal
 1047                 driver data base from its default [DEFAULT_externalEccRamsEnable].
 1048                 When this option is enabled Rams ECC enabling is not effected
 1049                 by FM_EnableRamsEcc/FM_DisableRamsEcc, but by a JTAG.
 1050 
 1051  @Param[in]     h_Fm            A handle to an FM Module.
 1052  @Param[in]     enable          TRUE to enable this option.
 1053 
 1054  @Return        E_OK on success; Error code otherwise.
 1055 
 1056  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1057                 This routine should NOT be called from guest-partition
 1058                 (i.e. guestId != NCSW_MASTER_ID)
 1059 *//***************************************************************************/
 1060 t_Error FM_ConfigExternalEccRamsEnable(t_Handle h_Fm, bool enable);
 1061 
 1062 /**************************************************************************//**
 1063  @Function      FM_ConfigTnumAgingPeriod
 1064 
 1065  @Description   Define Tnum aging period.
 1066                 Calling this routine changes the Tnum aging of dequeue TNUMs
 1067                 in the QMI in the internal driver data base from its default
 1068                 [DEFAULT_tnumAgingPeriod].
 1069 
 1070  @Param[in]     h_Fm                A handle to an FM Module.
 1071  @Param[in]     tnumAgingPeriod     Tnum Aging Period in microseconds.
 1072                                     Note that period is recalculated in units of
 1073                                     64 FM clocks. Driver will pick the closest
 1074                                     possible period.
 1075 
 1076  @Return        E_OK on success; Error code otherwise.
 1077 
 1078  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1079                 This routine should NOT be called from guest-partition
 1080                 (i.e. guestId != NCSW_MASTER_ID)
 1081                 NOTE that if some MAC is configured for PFC, '' value is NOT
 1082                 allowed.
 1083 *//***************************************************************************/
 1084 t_Error FM_ConfigTnumAgingPeriod(t_Handle h_Fm, uint16_t tnumAgingPeriod);
 1085 
 1086 /**************************************************************************//*
 1087  @Function      FM_ConfigDmaEmergencySmoother
 1088 
 1089  @Description   Define DMA emergency smoother.
 1090                 Calling this routine changes the definition of the minimum
 1091                 amount of DATA beats transferred on the AXI READ and WRITE
 1092                 ports before lowering the emergency level.
 1093                 By default smoother is disabled.
 1094 
 1095  @Param[in]     h_Fm            A handle to an FM Module.
 1096  @Param[in]     emergencyCnt    emergency switching counter.
 1097 
 1098  @Return        E_OK on success; Error code otherwise.
 1099 
 1100  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1101                 This routine should NOT be called from guest-partition
 1102                 (i.e. guestId != NCSW_MASTER_ID)
 1103 *//***************************************************************************/
 1104 t_Error FM_ConfigDmaEmergencySmoother(t_Handle h_Fm, uint32_t emergencyCnt);
 1105 
 1106 /**************************************************************************//*
 1107  @Function      FM_ConfigThresholds
 1108 
 1109  @Description   Calling this routine changes the internal driver data base
 1110                 from its default FM threshold configuration:
 1111                     dispLimit:    [DEFAULT_dispLimit]
 1112                     prsDispTh:    [DEFAULT_prsDispTh]
 1113                     plcrDispTh:   [DEFAULT_plcrDispTh]
 1114                     kgDispTh:     [DEFAULT_kgDispTh]
 1115                     bmiDispTh:    [DEFAULT_bmiDispTh]
 1116                     qmiEnqDispTh: [DEFAULT_qmiEnqDispTh]
 1117                     qmiDeqDispTh: [DEFAULT_qmiDeqDispTh]
 1118                     fmCtl1DispTh: [DEFAULT_fmCtl1DispTh]
 1119                     fmCtl2DispTh: [DEFAULT_fmCtl2DispTh]
 1120 
 1121 
 1122  @Param[in]     h_Fm            A handle to an FM Module.
 1123  @Param[in]     p_FmThresholds  A structure of threshold parameters.
 1124 
 1125  @Return        E_OK on success; Error code otherwise.
 1126 
 1127  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1128                 This routine should NOT be called from guest-partition
 1129                 (i.e. guestId != NCSW_MASTER_ID)
 1130 *//***************************************************************************/
 1131 t_Error FM_ConfigThresholds(t_Handle h_Fm, t_FmThresholds *p_FmThresholds);
 1132 
 1133 /**************************************************************************//*
 1134  @Function      FM_ConfigDmaSosEmergencyThreshold
 1135 
 1136  @Description   Calling this routine changes the internal driver data base
 1137                 from its default dma SOS emergency configuration [DEFAULT_dmaSosEmergency]
 1138 
 1139  @Param[in]     h_Fm                A handle to an FM Module.
 1140  @Param[in]     dmaSosEmergency     The selected new value.
 1141 
 1142  @Return        E_OK on success; Error code otherwise.
 1143 
 1144  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1145                 This routine should NOT be called from guest-partition
 1146                 (i.e. guestId != NCSW_MASTER_ID)
 1147 *//***************************************************************************/
 1148 t_Error FM_ConfigDmaSosEmergencyThreshold(t_Handle h_Fm, uint32_t dmaSosEmergency);
 1149 
 1150 /**************************************************************************//*
 1151  @Function      FM_ConfigDmaWriteBufThresholds
 1152 
 1153  @Description   Calling this routine changes the internal driver data base
 1154                 from its default configuration of DMA write buffer threshold
 1155                 assertEmergency: [DEFAULT_dmaWriteIntBufLow]
 1156                 clearEmergency:  [DEFAULT_dmaWriteIntBufHigh]
 1157                 This routine is only avaiable on old FM revisions (FMan v2).
 1158 
 1159  @Param[in]     h_Fm                A handle to an FM Module.
 1160  @Param[in]     p_FmDmaThresholds   A structure of thresholds to define emergency behavior -
 1161                                     When 'assertEmergency' value is reached, emergency is asserted,
 1162                                     then it is held until 'clearEmergency' value is reached.
 1163 
 1164  @Return        E_OK on success; Error code otherwise.
 1165 
 1166  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1167                 This routine should NOT be called from guest-partition
 1168                 (i.e. guestId != NCSW_MASTER_ID)
 1169 *//***************************************************************************/
 1170 t_Error FM_ConfigDmaWriteBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds);
 1171 
 1172  /**************************************************************************//*
 1173  @Function      FM_ConfigDmaCommQThresholds
 1174 
 1175  @Description   Calling this routine changes the internal driver data base
 1176                 from its default configuration of DMA command queue threshold
 1177                 assertEmergency: [DEFAULT_dmaCommQLow]
 1178                 clearEmergency:  [DEFAULT_dmaCommQHigh]
 1179 
 1180  @Param[in]     h_Fm                A handle to an FM Module.
 1181  @Param[in]     p_FmDmaThresholds   A structure of thresholds to define emergency behavior -
 1182                                     When 'assertEmergency' value is reached, emergency is asserted,
 1183                                     then it is held until 'clearEmergency' value is reached..
 1184 
 1185  @Return        E_OK on success; Error code otherwise.
 1186 
 1187  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1188                 This routine should NOT be called from guest-partition
 1189                 (i.e. guestId != NCSW_MASTER_ID)
 1190 *//***************************************************************************/
 1191 t_Error FM_ConfigDmaCommQThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds);
 1192 
 1193 /**************************************************************************//*
 1194  @Function      FM_ConfigDmaReadBufThresholds
 1195 
 1196  @Description   Calling this routine changes the internal driver data base
 1197                 from its default configuration of DMA read buffer threshold
 1198                 assertEmergency: [DEFAULT_dmaReadIntBufLow]
 1199                 clearEmergency:  [DEFAULT_dmaReadIntBufHigh]
 1200                 This routine is only avaiable on old FM revisions (FMan v2).
 1201 
 1202  @Param[in]     h_Fm                A handle to an FM Module.
 1203  @Param[in]     p_FmDmaThresholds   A structure of thresholds to define emergency behavior -
 1204                                     When 'assertEmergency' value is reached, emergency is asserted,
 1205                                     then it is held until 'clearEmergency' value is reached..
 1206 
 1207  @Return        E_OK on success; Error code otherwise.
 1208 
 1209  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1210                 This routine should NOT be called from guest-partition
 1211                 (i.e. guestId != NCSW_MASTER_ID)
 1212 *//***************************************************************************/
 1213 t_Error FM_ConfigDmaReadBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds);
 1214 
 1215 /**************************************************************************//*
 1216  @Function      FM_ConfigDmaWatchdog
 1217 
 1218  @Description   Calling this routine changes the internal driver data base
 1219                 from its default watchdog configuration, which is disabled
 1220                 [DEFAULT_dmaWatchdog].
 1221 
 1222  @Param[in]     h_Fm            A handle to an FM Module.
 1223  @Param[in]     watchDogValue   The selected new value - in microseconds.
 1224 
 1225  @Return        E_OK on success; Error code otherwise.
 1226 
 1227  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1228                 This routine should NOT be called from guest-partition
 1229                 (i.e. guestId != NCSW_MASTER_ID)
 1230 *//***************************************************************************/
 1231 t_Error FM_ConfigDmaWatchdog(t_Handle h_Fm, uint32_t watchDogValue);
 1232 
 1233 /** @} */ /* end of FM_advanced_init_grp group */
 1234 /** @} */ /* end of FM_init_grp group */
 1235 
 1236 
 1237 /**************************************************************************//**
 1238  @Group         FM_runtime_control_grp FM Runtime Control Unit
 1239 
 1240  @Description   FM Runtime control unit API functions, definitions and enums.
 1241                 The FM driver provides a set of control routines.
 1242                 These routines may only be called after the module was fully
 1243                 initialized (both configuration and initialization routines were
 1244                 called). They are typically used to get information from hardware
 1245                 (status, counters/statistics, revision etc.), to modify a current
 1246                 state or to force/enable a required action. Run-time control may
 1247                 be called whenever necessary and as many times as needed.
 1248  @{
 1249 *//***************************************************************************/
 1250 
 1251 /**************************************************************************//**
 1252  @Collection   General FM defines.
 1253 *//***************************************************************************/
 1254 #define FM_MAX_NUM_OF_VALID_PORTS   (FM_MAX_NUM_OF_OH_PORTS +       \
 1255                                      FM_MAX_NUM_OF_1G_RX_PORTS +    \
 1256                                      FM_MAX_NUM_OF_10G_RX_PORTS +   \
 1257                                      FM_MAX_NUM_OF_1G_TX_PORTS +    \
 1258                                      FM_MAX_NUM_OF_10G_TX_PORTS)      /**< Number of available FM ports */
 1259 /* @} */
 1260 
 1261 /**************************************************************************//*
 1262  @Description   A Structure for Port bandwidth requirement. Port is identified
 1263                 by type and relative id.
 1264 *//***************************************************************************/
 1265 typedef struct t_FmPortBandwidth {
 1266     e_FmPortType        type;           /**< FM port type */
 1267     uint8_t             relativePortId; /**< Type relative port id */
 1268     uint8_t             bandwidth;      /**< bandwidth - (in term of percents) */
 1269 } t_FmPortBandwidth;
 1270 
 1271 /**************************************************************************//*
 1272  @Description   A Structure containing an array of Port bandwidth requirements.
 1273                 The user should state the ports requiring bandwidth in terms of
 1274                 percentage - i.e. all port's bandwidths in the array must add
 1275                 up to 100.
 1276 *//***************************************************************************/
 1277 typedef struct t_FmPortsBandwidthParams {
 1278     uint8_t             numOfPorts;         /**< The number of relevant ports, which is the
 1279                                                  number of valid entries in the array below */
 1280     t_FmPortBandwidth   portsBandwidths[FM_MAX_NUM_OF_VALID_PORTS];
 1281                                             /**< for each port, it's bandwidth (all port's
 1282                                                  bandwidths must add up to 100.*/
 1283 } t_FmPortsBandwidthParams;
 1284 
 1285 /**************************************************************************//**
 1286  @Description   DMA Emergency control on MURAM
 1287 *//***************************************************************************/
 1288 typedef enum e_FmDmaMuramPort {
 1289     e_FM_DMA_MURAM_PORT_WRITE,              /**< MURAM write port */
 1290     e_FM_DMA_MURAM_PORT_READ                /**< MURAM read port */
 1291 } e_FmDmaMuramPort;
 1292 
 1293 /**************************************************************************//**
 1294  @Description   Enum for defining FM counters
 1295 *//***************************************************************************/
 1296 typedef enum e_FmCounters {
 1297     e_FM_COUNTERS_ENQ_TOTAL_FRAME = 0,              /**< QMI total enqueued frames counter */
 1298     e_FM_COUNTERS_DEQ_TOTAL_FRAME,                  /**< QMI total dequeued frames counter */
 1299     e_FM_COUNTERS_DEQ_0,                            /**< QMI 0 frames from QMan counter */
 1300     e_FM_COUNTERS_DEQ_1,                            /**< QMI 1 frames from QMan counter */
 1301     e_FM_COUNTERS_DEQ_2,                            /**< QMI 2 frames from QMan counter */
 1302     e_FM_COUNTERS_DEQ_3,                            /**< QMI 3 frames from QMan counter */
 1303     e_FM_COUNTERS_DEQ_FROM_DEFAULT,                 /**< QMI dequeue from default queue counter */
 1304     e_FM_COUNTERS_DEQ_FROM_CONTEXT,                 /**< QMI dequeue from FQ context counter */
 1305     e_FM_COUNTERS_DEQ_FROM_FD,                      /**< QMI dequeue from FD command field counter */
 1306     e_FM_COUNTERS_DEQ_CONFIRM                       /**< QMI dequeue confirm counter */
 1307 } e_FmCounters;
 1308 
 1309 /**************************************************************************//**
 1310  @Description   A Structure for returning FM revision information
 1311 *//***************************************************************************/
 1312 typedef struct t_FmRevisionInfo {
 1313     uint8_t         majorRev;               /**< Major revision */
 1314     uint8_t         minorRev;               /**< Minor revision */
 1315 } t_FmRevisionInfo;
 1316 
 1317 /**************************************************************************//**
 1318  @Description   A Structure for returning FM ctrl code revision information
 1319 *//***************************************************************************/
 1320 typedef struct t_FmCtrlCodeRevisionInfo {
 1321     uint16_t        packageRev;             /**< Package revision */
 1322     uint8_t         majorRev;               /**< Major revision */
 1323     uint8_t         minorRev;               /**< Minor revision */
 1324 } t_FmCtrlCodeRevisionInfo;
 1325 
 1326 /**************************************************************************//**
 1327  @Description   A Structure for defining DMA status
 1328 *//***************************************************************************/
 1329 typedef struct t_FmDmaStatus {
 1330     bool    cmqNotEmpty;            /**< Command queue is not empty */
 1331     bool    busError;               /**< Bus error occurred */
 1332     bool    readBufEccError;        /**< Double ECC error on buffer Read (Valid for FM rev < 6)*/
 1333     bool    writeBufEccSysError;    /**< Double ECC error on buffer write from system side (Valid for FM rev < 6)*/
 1334     bool    writeBufEccFmError;     /**< Double ECC error on buffer write from FM side (Valid for FM rev < 6) */
 1335     bool    singlePortEccError;     /**< Single Port ECC error from FM side (Valid for FM rev >= 6)*/
 1336 } t_FmDmaStatus;
 1337 
 1338 /**************************************************************************//**
 1339  @Description   A Structure for obtaining FM controller monitor values
 1340 *//***************************************************************************/
 1341 typedef struct t_FmCtrlMon {
 1342     uint8_t percentCnt[2];          /**< Percentage value */
 1343 } t_FmCtrlMon;
 1344 
 1345 
 1346 #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
 1347 /**************************************************************************//**
 1348  @Function      FM_DumpRegs
 1349 
 1350  @Description   Dumps all FM registers
 1351 
 1352  @Param[in]     h_Fm      A handle to an FM Module.
 1353 
 1354  @Return        E_OK on success;
 1355 
 1356  @Cautions      Allowed only following FM_Init().
 1357 *//***************************************************************************/
 1358 t_Error FM_DumpRegs(t_Handle h_Fm);
 1359 #endif /* (defined(DEBUG_ERRORS) && ... */
 1360 
 1361 /**************************************************************************//**
 1362  @Function      FM_SetException
 1363 
 1364  @Description   Calling this routine enables/disables the specified exception.
 1365 
 1366  @Param[in]     h_Fm            A handle to an FM Module.
 1367  @Param[in]     exception       The exception to be selected.
 1368  @Param[in]     enable          TRUE to enable interrupt, FALSE to mask it.
 1369 
 1370  @Return        E_OK on success; Error code otherwise.
 1371 
 1372  @Cautions      Allowed only following FM_Init().
 1373                 This routine should NOT be called from guest-partition
 1374                 (i.e. guestId != NCSW_MASTER_ID)
 1375 *//***************************************************************************/
 1376 t_Error FM_SetException(t_Handle h_Fm, e_FmExceptions exception, bool enable);
 1377 
 1378 /**************************************************************************//**
 1379  @Function      FM_EnableRamsEcc
 1380 
 1381  @Description   Enables ECC mechanism for all the different FM RAM's; E.g. IRAM,
 1382                 MURAM, Parser, Keygen, Policer, etc.
 1383                 Note:
 1384                 If FM_ConfigExternalEccRamsEnable was called to enable external
 1385                 setting of ECC, this routine effects IRAM ECC only.
 1386                 This routine is also called by the driver if an ECC exception is
 1387                 enabled.
 1388 
 1389  @Param[in]     h_Fm            A handle to an FM Module.
 1390 
 1391  @Return        E_OK on success; Error code otherwise.
 1392 
 1393  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1394                 This routine should NOT be called from guest-partition
 1395                 (i.e. guestId != NCSW_MASTER_ID)
 1396 *//***************************************************************************/
 1397 t_Error FM_EnableRamsEcc(t_Handle h_Fm);
 1398 
 1399 /**************************************************************************//**
 1400  @Function      FM_DisableRamsEcc
 1401 
 1402  @Description   Disables ECC mechanism for all the different FM RAM's; E.g. IRAM,
 1403                 MURAM, Parser, Keygen, Policer, etc.
 1404                 Note:
 1405                 If FM_ConfigExternalEccRamsEnable was called to enable external
 1406                 setting of ECC, this routine effects IRAM ECC only.
 1407                 In opposed to FM_EnableRamsEcc, this routine must be called
 1408                 explicitly to disable all Rams ECC.
 1409 
 1410  @Param[in]     h_Fm            A handle to an FM Module.
 1411 
 1412  @Return        E_OK on success; Error code otherwise.
 1413 
 1414  @Cautions      Allowed only following FM_Config() and before FM_Init().
 1415                 This routine should NOT be called from guest-partition
 1416                 (i.e. guestId != NCSW_MASTER_ID)
 1417 *//***************************************************************************/
 1418 t_Error FM_DisableRamsEcc(t_Handle h_Fm);
 1419 
 1420 /**************************************************************************//**
 1421  @Function      FM_GetRevision
 1422 
 1423  @Description   Returns the FM revision
 1424 
 1425  @Param[in]     h_Fm                A handle to an FM Module.
 1426  @Param[out]    p_FmRevisionInfo    A structure of revision information parameters.
 1427 
 1428  @Return        E_OK on success; Error code otherwise.
 1429 
 1430  @Cautions      Allowed only following FM_Init().
 1431 *//***************************************************************************/
 1432 t_Error  FM_GetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo);
 1433 
 1434 /**************************************************************************//**
 1435  @Function      FM_GetFmanCtrlCodeRevision
 1436 
 1437  @Description   Returns the Fman controller code revision
 1438 
 1439  @Param[in]     h_Fm                A handle to an FM Module.
 1440  @Param[out]    p_RevisionInfo      A structure of revision information parameters.
 1441 
 1442  @Return        E_OK on success; Error code otherwise.
 1443 
 1444  @Cautions      Allowed only following FM_Init().
 1445 *//***************************************************************************/
 1446 t_Error FM_GetFmanCtrlCodeRevision(t_Handle h_Fm, t_FmCtrlCodeRevisionInfo *p_RevisionInfo);
 1447 
 1448 /**************************************************************************//**
 1449  @Function      FM_GetCounter
 1450 
 1451  @Description   Reads one of the FM counters.
 1452 
 1453  @Param[in]     h_Fm        A handle to an FM Module.
 1454  @Param[in]     counter     The requested counter.
 1455 
 1456  @Return        Counter's current value.
 1457 
 1458  @Cautions      Allowed only following FM_Init().
 1459                 Note that it is user's responsibility to call this routine only
 1460                 for enabled counters, and there will be no indication if a
 1461                 disabled counter is accessed.
 1462 *//***************************************************************************/
 1463 uint32_t  FM_GetCounter(t_Handle h_Fm, e_FmCounters counter);
 1464 
 1465 /**************************************************************************//**
 1466  @Function      FM_ModifyCounter
 1467 
 1468  @Description   Sets a value to an enabled counter. Use "" to reset the counter.
 1469 
 1470  @Param[in]     h_Fm        A handle to an FM Module.
 1471  @Param[in]     counter     The requested counter.
 1472  @Param[in]     val         The requested value to be written into the counter.
 1473 
 1474  @Return        E_OK on success; Error code otherwise.
 1475 
 1476  @Cautions      Allowed only following FM_Init().
 1477                 This routine should NOT be called from guest-partition
 1478                 (i.e. guestId != NCSW_MASTER_ID)
 1479 *//***************************************************************************/
 1480 t_Error  FM_ModifyCounter(t_Handle h_Fm, e_FmCounters counter, uint32_t val);
 1481 
 1482 /**************************************************************************//**
 1483  @Function      FM_Resume
 1484 
 1485  @Description   Release FM after halt FM command or after unrecoverable ECC error.
 1486 
 1487  @Param[in]     h_Fm        A handle to an FM Module.
 1488 
 1489  @Return        E_OK on success; Error code otherwise.
 1490 
 1491  @Cautions      Allowed only following FM_Init().
 1492                 This routine should NOT be called from guest-partition
 1493                 (i.e. guestId != NCSW_MASTER_ID)
 1494 *//***************************************************************************/
 1495 void FM_Resume(t_Handle h_Fm);
 1496 
 1497 /**************************************************************************//**
 1498  @Function      FM_SetDmaEmergency
 1499 
 1500  @Description   Manual emergency set
 1501 
 1502  @Param[in]     h_Fm        A handle to an FM Module.
 1503  @Param[in]     muramPort   MURAM direction select.
 1504  @Param[in]     enable      TRUE to manually enable emergency, FALSE to disable.
 1505 
 1506  @Return        None.
 1507 
 1508  @Cautions      Allowed only following FM_Init().
 1509                 This routine should NOT be called from guest-partition
 1510                 (i.e. guestId != NCSW_MASTER_ID)
 1511 *//***************************************************************************/
 1512 void FM_SetDmaEmergency(t_Handle h_Fm, e_FmDmaMuramPort muramPort, bool enable);
 1513 
 1514 /**************************************************************************//**
 1515  @Function      FM_SetDmaExtBusPri
 1516 
 1517  @Description   Set the DMA external bus priority
 1518 
 1519  @Param[in]     h_Fm    A handle to an FM Module.
 1520  @Param[in]     pri     External bus priority select
 1521 
 1522  @Return        None.
 1523 
 1524  @Cautions      Allowed only following FM_Init().
 1525                 This routine should NOT be called from guest-partition
 1526                 (i.e. guestId != NCSW_MASTER_ID)
 1527 *//***************************************************************************/
 1528 void FM_SetDmaExtBusPri(t_Handle h_Fm, e_FmDmaExtBusPri pri);
 1529 
 1530 /**************************************************************************//**
 1531  @Function      FM_GetDmaStatus
 1532 
 1533  @Description   Reads the DMA current status
 1534 
 1535  @Param[in]     h_Fm            A handle to an FM Module.
 1536  @Param[out]    p_FmDmaStatus   A structure of DMA status parameters.
 1537 
 1538  @Cautions      Allowed only following FM_Init().
 1539 *//***************************************************************************/
 1540 void FM_GetDmaStatus(t_Handle h_Fm, t_FmDmaStatus *p_FmDmaStatus);
 1541 
 1542 /**************************************************************************//**
 1543  @Function      FM_ErrorIsr
 1544 
 1545  @Description   FM interrupt-service-routine for errors.
 1546 
 1547  @Param[in]     h_Fm            A handle to an FM Module.
 1548 
 1549  @Return        E_OK on success; E_EMPTY if no errors found in register, other
 1550                 error code otherwise.
 1551 
 1552  @Cautions      Allowed only following FM_Init().
 1553                 This routine should NOT be called from guest-partition
 1554                 (i.e. guestId != NCSW_MASTER_ID)
 1555 *//***************************************************************************/
 1556 t_Error FM_ErrorIsr(t_Handle h_Fm);
 1557 
 1558 /**************************************************************************//**
 1559  @Function      FM_EventIsr
 1560 
 1561  @Description   FM interrupt-service-routine for normal events.
 1562 
 1563  @Param[in]     h_Fm            A handle to an FM Module.
 1564 
 1565  @Cautions      Allowed only following FM_Init().
 1566                 This routine should NOT be called from guest-partition
 1567                 (i.e. guestId != NCSW_MASTER_ID)
 1568 *//***************************************************************************/
 1569 void FM_EventIsr(t_Handle h_Fm);
 1570 
 1571 /**************************************************************************//**
 1572  @Function      FM_GetSpecialOperationCoding
 1573 
 1574  @Description   Return a specific coding according to the input mask.
 1575 
 1576  @Param[in]     h_Fm            A handle to an FM Module.
 1577  @Param[in]     spOper          special operation mask.
 1578  @Param[out]    p_SpOperCoding  special operation code.
 1579 
 1580  @Return        E_OK on success; Error code otherwise.
 1581 
 1582  @Cautions      Allowed only following FM_Init().
 1583 *//***************************************************************************/
 1584 t_Error FM_GetSpecialOperationCoding(t_Handle               h_Fm,
 1585                                      fmSpecialOperations_t  spOper,
 1586                                      uint8_t                *p_SpOperCoding);
 1587 
 1588 /**************************************************************************//**
 1589  @Function      FM_CtrlMonStart
 1590 
 1591  @Description   Start monitoring utilization of all available FM controllers.
 1592 
 1593                 In order to obtain FM controllers utilization the following sequence
 1594                 should be used:
 1595                 -# FM_CtrlMonStart()
 1596                 -# FM_CtrlMonStop()
 1597                 -# FM_CtrlMonGetCounters() - issued for each FM controller
 1598 
 1599  @Param[in]     h_Fm            A handle to an FM Module.
 1600 
 1601  @Return        E_OK on success; Error code otherwise.
 1602 
 1603  @Cautions      Allowed only following FM_Init().
 1604                 This routine should NOT be called from guest-partition
 1605                 (i.e. guestId != NCSW_MASTER_ID).
 1606 *//***************************************************************************/
 1607 t_Error FM_CtrlMonStart(t_Handle h_Fm);
 1608 
 1609 /**************************************************************************//**
 1610  @Function      FM_CtrlMonStop
 1611 
 1612  @Description   Stop monitoring utilization of all available FM controllers.
 1613 
 1614                 In order to obtain FM controllers utilization the following sequence
 1615                 should be used:
 1616                 -# FM_CtrlMonStart()
 1617                 -# FM_CtrlMonStop()
 1618                 -# FM_CtrlMonGetCounters() - issued for each FM controller
 1619 
 1620  @Param[in]     h_Fm            A handle to an FM Module.
 1621 
 1622  @Return        E_OK on success; Error code otherwise.
 1623 
 1624  @Cautions      Allowed only following FM_Init().
 1625                 This routine should NOT be called from guest-partition
 1626                 (i.e. guestId != NCSW_MASTER_ID).
 1627 *//***************************************************************************/
 1628 t_Error FM_CtrlMonStop(t_Handle h_Fm);
 1629 
 1630 /**************************************************************************//**
 1631  @Function      FM_CtrlMonGetCounters
 1632 
 1633  @Description   Obtain FM controller utilization parameters.
 1634 
 1635                 In order to obtain FM controllers utilization the following sequence
 1636                 should be used:
 1637                 -# FM_CtrlMonStart()
 1638                 -# FM_CtrlMonStop()
 1639                 -# FM_CtrlMonGetCounters() - issued for each FM controller
 1640 
 1641  @Param[in]     h_Fm            A handle to an FM Module.
 1642  @Param[in]     fmCtrlIndex     FM Controller index for that utilization results
 1643                                 are requested.
 1644  @Param[in]     p_Mon           Pointer to utilization results structure.
 1645 
 1646  @Return        E_OK on success; Error code otherwise.
 1647 
 1648  @Cautions      Allowed only following FM_Init().
 1649                 This routine should NOT be called from guest-partition
 1650                 (i.e. guestId != NCSW_MASTER_ID).
 1651 *//***************************************************************************/
 1652 t_Error FM_CtrlMonGetCounters(t_Handle h_Fm, uint8_t fmCtrlIndex, t_FmCtrlMon *p_Mon);
 1653 
 1654 
 1655 /**************************************************************************//*
 1656  @Function      FM_ForceIntr
 1657 
 1658  @Description   Causes an interrupt event on the requested source.
 1659 
 1660  @Param[in]     h_Fm            A handle to an FM Module.
 1661  @Param[in]     exception       An exception to be forced.
 1662 
 1663  @Return        E_OK on success; Error code if the exception is not enabled,
 1664                 or is not able to create interrupt.
 1665 
 1666  @Cautions      Allowed only following FM_Init().
 1667                 This routine should NOT be called from guest-partition
 1668                 (i.e. guestId != NCSW_MASTER_ID)
 1669 *//***************************************************************************/
 1670 t_Error FM_ForceIntr (t_Handle h_Fm, e_FmExceptions exception);
 1671 
 1672 /**************************************************************************//*
 1673  @Function      FM_SetPortsBandwidth
 1674 
 1675  @Description   Sets relative weights between ports when accessing common resources.
 1676 
 1677  @Param[in]     h_Fm                A handle to an FM Module.
 1678  @Param[in]     p_PortsBandwidth    A structure of ports bandwidths in percentage, i.e.
 1679                                     total must equal 100.
 1680 
 1681  @Return        E_OK on success; Error code otherwise.
 1682 
 1683  @Cautions      Allowed only following FM_Init().
 1684                 This routine should NOT be called from guest-partition
 1685                 (i.e. guestId != NCSW_MASTER_ID)
 1686 *//***************************************************************************/
 1687 t_Error FM_SetPortsBandwidth(t_Handle h_Fm, t_FmPortsBandwidthParams *p_PortsBandwidth);
 1688 
 1689 /**************************************************************************//*
 1690  @Function      FM_GetMuramHandle
 1691 
 1692  @Description   Gets the corresponding MURAM handle
 1693 
 1694  @Param[in]     h_Fm                A handle to an FM Module.
 1695 
 1696  @Return        MURAM handle; NULL otherwise.
 1697 
 1698  @Cautions      Allowed only following FM_Init().
 1699                 This routine should NOT be called from guest-partition
 1700                 (i.e. guestId != NCSW_MASTER_ID)
 1701 *//***************************************************************************/
 1702 t_Handle FM_GetMuramHandle(t_Handle h_Fm);
 1703 
 1704 /** @} */ /* end of FM_runtime_control_grp group */
 1705 /** @} */ /* end of FM_lib_grp group */
 1706 /** @} */ /* end of FM_grp group */
 1707 
 1708 
 1709 #ifdef NCSW_BACKWARD_COMPATIBLE_API
 1710 typedef t_FmFirmwareParams          t_FmPcdFirmwareParams;
 1711 typedef t_FmBufferPrefixContent     t_FmPortBufferPrefixContent;
 1712 typedef t_FmExtPoolParams           t_FmPortExtPoolParams;
 1713 typedef t_FmExtPools                t_FmPortExtPools;
 1714 typedef t_FmBackupBmPools           t_FmPortBackupBmPools;
 1715 typedef t_FmBufPoolDepletion        t_FmPortBufPoolDepletion;
 1716 typedef e_FmDmaSwapOption           e_FmPortDmaSwapOption;
 1717 typedef e_FmDmaCacheOption          e_FmPortDmaCacheOption;
 1718 
 1719 #define FM_CONTEXTA_GET_OVVERIDE    FM_CONTEXTA_GET_OVERRIDE
 1720 #define FM_CONTEXTA_SET_OVVERIDE    FM_CONTEXTA_SET_OVERRIDE
 1721 
 1722 #define e_FM_EX_BMI_PIPELINE_ECC    e_FM_EX_BMI_STORAGE_PROFILE_ECC
 1723 #define e_FM_PORT_DMA_NO_SWP        e_FM_DMA_NO_SWP
 1724 #define e_FM_PORT_DMA_SWP_PPC_LE    e_FM_DMA_SWP_PPC_LE
 1725 #define e_FM_PORT_DMA_SWP_BE        e_FM_DMA_SWP_BE
 1726 #define e_FM_PORT_DMA_NO_STASH      e_FM_DMA_NO_STASH
 1727 #define e_FM_PORT_DMA_STASH         e_FM_DMA_STASH
 1728 #endif /* NCSW_BACKWARD_COMPATIBLE_API */
 1729 
 1730 
 1731 #endif /* __FM_EXT */

Cache object: bff545b88e35d1a7cd2f3212a69bda3d


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.