xref: /freebsd/sys/contrib/ncsw/inc/Peripherals/fm_ext.h (revision c2c014f24c10f90d85126ac5fbd4d8524de32b1c)
1*852ba100SJustin Hibbits /* Copyright (c) 2008-2012 Freescale Semiconductor, Inc
20aeed3e9SJustin Hibbits  * All rights reserved.
30aeed3e9SJustin Hibbits  *
40aeed3e9SJustin Hibbits  * Redistribution and use in source and binary forms, with or without
50aeed3e9SJustin Hibbits  * modification, are permitted provided that the following conditions are met:
60aeed3e9SJustin Hibbits  *     * Redistributions of source code must retain the above copyright
70aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer.
80aeed3e9SJustin Hibbits  *     * Redistributions in binary form must reproduce the above copyright
90aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer in the
100aeed3e9SJustin Hibbits  *       documentation and/or other materials provided with the distribution.
110aeed3e9SJustin Hibbits  *     * Neither the name of Freescale Semiconductor nor the
120aeed3e9SJustin Hibbits  *       names of its contributors may be used to endorse or promote products
130aeed3e9SJustin Hibbits  *       derived from this software without specific prior written permission.
140aeed3e9SJustin Hibbits  *
150aeed3e9SJustin Hibbits  *
160aeed3e9SJustin Hibbits  * ALTERNATIVELY, this software may be distributed under the terms of the
170aeed3e9SJustin Hibbits  * GNU General Public License ("GPL") as published by the Free Software
180aeed3e9SJustin Hibbits  * Foundation, either version 2 of that License or (at your option) any
190aeed3e9SJustin Hibbits  * later version.
200aeed3e9SJustin Hibbits  *
210aeed3e9SJustin Hibbits  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
220aeed3e9SJustin Hibbits  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
230aeed3e9SJustin Hibbits  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
240aeed3e9SJustin Hibbits  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
250aeed3e9SJustin Hibbits  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
260aeed3e9SJustin Hibbits  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
270aeed3e9SJustin Hibbits  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
280aeed3e9SJustin Hibbits  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
290aeed3e9SJustin Hibbits  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
300aeed3e9SJustin Hibbits  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
310aeed3e9SJustin Hibbits  */
320aeed3e9SJustin Hibbits 
33*852ba100SJustin Hibbits 
340aeed3e9SJustin Hibbits /**************************************************************************//**
350aeed3e9SJustin Hibbits  @File          fm_ext.h
360aeed3e9SJustin Hibbits 
370aeed3e9SJustin Hibbits  @Description   FM Application Programming Interface.
380aeed3e9SJustin Hibbits *//***************************************************************************/
390aeed3e9SJustin Hibbits #ifndef __FM_EXT
400aeed3e9SJustin Hibbits #define __FM_EXT
410aeed3e9SJustin Hibbits 
420aeed3e9SJustin Hibbits #include "error_ext.h"
430aeed3e9SJustin Hibbits #include "std_ext.h"
440aeed3e9SJustin Hibbits #include "dpaa_ext.h"
45*852ba100SJustin Hibbits #include "fsl_fman_sp.h"
460aeed3e9SJustin Hibbits 
470aeed3e9SJustin Hibbits /**************************************************************************//**
480aeed3e9SJustin Hibbits  @Group         FM_grp Frame Manager API
490aeed3e9SJustin Hibbits 
500aeed3e9SJustin Hibbits  @Description   FM API functions, definitions and enums.
510aeed3e9SJustin Hibbits 
520aeed3e9SJustin Hibbits  @{
530aeed3e9SJustin Hibbits *//***************************************************************************/
540aeed3e9SJustin Hibbits 
550aeed3e9SJustin Hibbits /**************************************************************************//**
560aeed3e9SJustin Hibbits  @Group         FM_lib_grp FM library
570aeed3e9SJustin Hibbits 
58*852ba100SJustin Hibbits  @Description   FM API functions, definitions and enums.
59*852ba100SJustin Hibbits 
600aeed3e9SJustin Hibbits                 The FM module is the main driver module and is a mandatory module
61*852ba100SJustin Hibbits                 for FM driver users. This module must be initialized first prior
62*852ba100SJustin Hibbits                 to any other drivers modules.
63*852ba100SJustin Hibbits                 The FM is a "singleton" module. It is responsible of the common
64*852ba100SJustin Hibbits                 HW modules: FPM, DMA, common QMI and common BMI initializations and
650aeed3e9SJustin Hibbits                 run-time control routines. This module must be initialized always
660aeed3e9SJustin Hibbits                 when working with any of the FM modules.
67*852ba100SJustin Hibbits                 NOTE - We assume that the FM library will be initialized only by core No. 0!
680aeed3e9SJustin Hibbits 
690aeed3e9SJustin Hibbits  @{
700aeed3e9SJustin Hibbits *//***************************************************************************/
710aeed3e9SJustin Hibbits 
720aeed3e9SJustin Hibbits /**************************************************************************//**
73*852ba100SJustin Hibbits  @Description   Enum for defining port types
740aeed3e9SJustin Hibbits *//***************************************************************************/
750aeed3e9SJustin Hibbits typedef enum e_FmPortType {
76*852ba100SJustin Hibbits     e_FM_PORT_TYPE_OH_OFFLINE_PARSING = 0,  /**< Offline parsing port */
77*852ba100SJustin Hibbits     e_FM_PORT_TYPE_RX,                      /**< 1G Rx port */
78*852ba100SJustin Hibbits     e_FM_PORT_TYPE_RX_10G,                  /**< 10G Rx port */
79*852ba100SJustin Hibbits     e_FM_PORT_TYPE_TX,                      /**< 1G Tx port */
80*852ba100SJustin Hibbits     e_FM_PORT_TYPE_TX_10G,                  /**< 10G Tx port */
810aeed3e9SJustin Hibbits     e_FM_PORT_TYPE_DUMMY
820aeed3e9SJustin Hibbits } e_FmPortType;
830aeed3e9SJustin Hibbits 
840aeed3e9SJustin Hibbits /**************************************************************************//**
850aeed3e9SJustin Hibbits  @Collection    General FM defines
860aeed3e9SJustin Hibbits *//***************************************************************************/
870aeed3e9SJustin Hibbits #define FM_MAX_NUM_OF_PARTITIONS    64      /**< Maximum number of partitions */
880aeed3e9SJustin Hibbits #define FM_PHYS_ADDRESS_SIZE        6       /**< FM Physical address size */
890aeed3e9SJustin Hibbits /* @} */
900aeed3e9SJustin Hibbits 
910aeed3e9SJustin Hibbits 
920aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
930aeed3e9SJustin Hibbits #pragma pack(push,1)
940aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
950aeed3e9SJustin Hibbits 
960aeed3e9SJustin Hibbits /**************************************************************************//**
970aeed3e9SJustin Hibbits  @Description   FM physical Address
980aeed3e9SJustin Hibbits *//***************************************************************************/
990aeed3e9SJustin Hibbits typedef _Packed struct t_FmPhysAddr {
1000aeed3e9SJustin Hibbits     volatile uint8_t    high;         /**< High part of the physical address */
1010aeed3e9SJustin Hibbits     volatile uint32_t   low;          /**< Low part of the physical address */
1020aeed3e9SJustin Hibbits } _PackedType t_FmPhysAddr;
1030aeed3e9SJustin Hibbits 
1040aeed3e9SJustin Hibbits /**************************************************************************//**
1050aeed3e9SJustin Hibbits  @Description   Parse results memory layout
1060aeed3e9SJustin Hibbits *//***************************************************************************/
1070aeed3e9SJustin Hibbits typedef _Packed struct t_FmPrsResult {
1080aeed3e9SJustin Hibbits     volatile uint8_t     lpid;               /**< Logical port id */
1090aeed3e9SJustin Hibbits     volatile uint8_t     shimr;              /**< Shim header result  */
1100aeed3e9SJustin Hibbits     volatile uint16_t    l2r;                /**< Layer 2 result */
1110aeed3e9SJustin Hibbits     volatile uint16_t    l3r;                /**< Layer 3 result */
1120aeed3e9SJustin Hibbits     volatile uint8_t     l4r;                /**< Layer 4 result */
1130aeed3e9SJustin Hibbits     volatile uint8_t     cplan;              /**< Classification plan id */
1140aeed3e9SJustin Hibbits     volatile uint16_t    nxthdr;             /**< Next Header  */
115*852ba100SJustin Hibbits     volatile uint16_t    cksum;              /**< Running-sum */
116*852ba100SJustin Hibbits     volatile uint16_t    flags_frag_off;     /**< Flags & fragment-offset field of the last IP-header */
117*852ba100SJustin Hibbits     volatile uint8_t     route_type;         /**< Routing type field of a IPv6 routing extension header */
118*852ba100SJustin Hibbits     volatile uint8_t     rhp_ip_valid;       /**< Routing Extension Header Present; last bit is IP valid */
119*852ba100SJustin Hibbits     volatile uint8_t     shim_off[2];        /**< Shim offset */
120*852ba100SJustin Hibbits     volatile uint8_t     ip_pid_off;         /**< IP PID (last IP-proto) offset */
1210aeed3e9SJustin Hibbits     volatile uint8_t     eth_off;            /**< ETH offset */
1220aeed3e9SJustin Hibbits     volatile uint8_t     llc_snap_off;       /**< LLC_SNAP offset */
1230aeed3e9SJustin Hibbits     volatile uint8_t     vlan_off[2];        /**< VLAN offset */
1240aeed3e9SJustin Hibbits     volatile uint8_t     etype_off;          /**< ETYPE offset */
1250aeed3e9SJustin Hibbits     volatile uint8_t     pppoe_off;          /**< PPP offset */
1260aeed3e9SJustin Hibbits     volatile uint8_t     mpls_off[2];        /**< MPLS offset */
1270aeed3e9SJustin Hibbits     volatile uint8_t     ip_off[2];          /**< IP offset */
1280aeed3e9SJustin Hibbits     volatile uint8_t     gre_off;            /**< GRE offset */
1290aeed3e9SJustin Hibbits     volatile uint8_t     l4_off;             /**< Layer 4 offset */
1300aeed3e9SJustin Hibbits     volatile uint8_t     nxthdr_off;         /**< Parser end point */
1310aeed3e9SJustin Hibbits } _PackedType t_FmPrsResult;
1320aeed3e9SJustin Hibbits 
1330aeed3e9SJustin Hibbits /**************************************************************************//**
1340aeed3e9SJustin Hibbits  @Collection   FM Parser results
1350aeed3e9SJustin Hibbits *//***************************************************************************/
1360aeed3e9SJustin Hibbits #define FM_PR_L2_VLAN_STACK         0x00000100  /**< Parse Result: VLAN stack */
1370aeed3e9SJustin Hibbits #define FM_PR_L2_ETHERNET           0x00008000  /**< Parse Result: Ethernet*/
1380aeed3e9SJustin Hibbits #define FM_PR_L2_VLAN               0x00004000  /**< Parse Result: VLAN */
1390aeed3e9SJustin Hibbits #define FM_PR_L2_LLC_SNAP           0x00002000  /**< Parse Result: LLC_SNAP */
1400aeed3e9SJustin Hibbits #define FM_PR_L2_MPLS               0x00001000  /**< Parse Result: MPLS */
1410aeed3e9SJustin Hibbits #define FM_PR_L2_PPPoE              0x00000800  /**< Parse Result: PPPoE */
1420aeed3e9SJustin Hibbits /* @} */
1430aeed3e9SJustin Hibbits 
1440aeed3e9SJustin Hibbits /**************************************************************************//**
1450aeed3e9SJustin Hibbits  @Collection   FM Frame descriptor macros
1460aeed3e9SJustin Hibbits *//***************************************************************************/
1470aeed3e9SJustin Hibbits #define FM_FD_CMD_FCO                   0x80000000  /**< Frame queue Context Override */
1480aeed3e9SJustin Hibbits #define FM_FD_CMD_RPD                   0x40000000  /**< Read Prepended Data */
1490aeed3e9SJustin Hibbits #define FM_FD_CMD_UPD                   0x20000000  /**< Update Prepended Data */
1500aeed3e9SJustin Hibbits #define FM_FD_CMD_DTC                   0x10000000  /**< Do L4 Checksum */
1510aeed3e9SJustin Hibbits #define FM_FD_CMD_DCL4C                 0x10000000  /**< Didn't calculate L4 Checksum */
1520aeed3e9SJustin Hibbits #define FM_FD_CMD_CFQ                   0x00ffffff  /**< Confirmation Frame Queue */
1530aeed3e9SJustin Hibbits 
154*852ba100SJustin Hibbits #define FM_FD_ERR_UNSUPPORTED_FORMAT    0x04000000  /**< Not for Rx-Port! Unsupported Format */
155*852ba100SJustin Hibbits #define FM_FD_ERR_LENGTH                0x02000000  /**< Not for Rx-Port! Length Error */
156*852ba100SJustin Hibbits #define FM_FD_ERR_DMA                   0x01000000  /**< DMA Data error */
157*852ba100SJustin Hibbits 
158*852ba100SJustin Hibbits #define FM_FD_IPR                       0x00000001  /**< IPR frame (not error) */
159*852ba100SJustin Hibbits 
160*852ba100SJustin Hibbits #define FM_FD_ERR_IPR_NCSP              (0x00100000 | FM_FD_IPR)    /**< IPR non-consistent-sp */
161*852ba100SJustin Hibbits #define FM_FD_ERR_IPR                   (0x00200000 | FM_FD_IPR)    /**< IPR error */
162*852ba100SJustin Hibbits #define FM_FD_ERR_IPR_TO                (0x00300000 | FM_FD_IPR)    /**< IPR timeout */
163*852ba100SJustin Hibbits 
164*852ba100SJustin Hibbits #ifdef FM_CAPWAP_SUPPORT
165*852ba100SJustin Hibbits #define FM_FD_ERR_CRE                   0x00200000
166*852ba100SJustin Hibbits #define FM_FD_ERR_CHE                   0x00100000
167*852ba100SJustin Hibbits #endif /* FM_CAPWAP_SUPPORT */
168*852ba100SJustin Hibbits 
169*852ba100SJustin Hibbits #define FM_FD_ERR_PHYSICAL              0x00080000  /**< Rx FIFO overflow, FCS error, code error, running disparity
170*852ba100SJustin Hibbits                                                          error (SGMII and TBI modes), FIFO parity error. PHY
171*852ba100SJustin Hibbits                                                          Sequence error, PHY error control character detected. */
172*852ba100SJustin Hibbits #define FM_FD_ERR_SIZE                  0x00040000  /**< Frame too long OR Frame size exceeds max_length_frame  */
173*852ba100SJustin Hibbits #define FM_FD_ERR_CLS_DISCARD           0x00020000  /**< classification discard */
174*852ba100SJustin Hibbits #define FM_FD_ERR_EXTRACTION            0x00008000  /**< Extract Out of Frame */
175*852ba100SJustin Hibbits #define FM_FD_ERR_NO_SCHEME             0x00004000  /**< No Scheme Selected */
176*852ba100SJustin Hibbits #define FM_FD_ERR_KEYSIZE_OVERFLOW      0x00002000  /**< Keysize Overflow */
177*852ba100SJustin Hibbits #define FM_FD_ERR_COLOR_RED             0x00000800  /**< Frame color is red */
178*852ba100SJustin Hibbits #define FM_FD_ERR_COLOR_YELLOW          0x00000400  /**< Frame color is yellow */
179*852ba100SJustin Hibbits #define FM_FD_ERR_ILL_PLCR              0x00000200  /**< Illegal Policer Profile selected */
180*852ba100SJustin Hibbits #define FM_FD_ERR_PLCR_FRAME_LEN        0x00000100  /**< Policer frame length error */
181*852ba100SJustin Hibbits #define FM_FD_ERR_PRS_TIMEOUT           0x00000080  /**< Parser Time out Exceed */
182*852ba100SJustin Hibbits #define FM_FD_ERR_PRS_ILL_INSTRUCT      0x00000040  /**< Invalid Soft Parser instruction */
183*852ba100SJustin Hibbits #define FM_FD_ERR_PRS_HDR_ERR           0x00000020  /**< Header error was identified during parsing */
184*852ba100SJustin Hibbits #define FM_FD_ERR_BLOCK_LIMIT_EXCEEDED  0x00000008  /**< Frame parsed beyind 256 first bytes */
185*852ba100SJustin Hibbits 
186*852ba100SJustin Hibbits #define FM_FD_TX_STATUS_ERR_MASK        (FM_FD_ERR_UNSUPPORTED_FORMAT   | \
187*852ba100SJustin Hibbits                                          FM_FD_ERR_LENGTH               | \
188*852ba100SJustin Hibbits                                          FM_FD_ERR_DMA) /**< TX Error FD bits */
189*852ba100SJustin Hibbits 
190*852ba100SJustin Hibbits #define FM_FD_RX_STATUS_ERR_MASK        (FM_FD_ERR_UNSUPPORTED_FORMAT   | \
191*852ba100SJustin Hibbits                                          FM_FD_ERR_LENGTH               | \
192*852ba100SJustin Hibbits                                          FM_FD_ERR_DMA                  | \
193*852ba100SJustin Hibbits                                          FM_FD_ERR_IPR                  | \
194*852ba100SJustin Hibbits                                          FM_FD_ERR_IPR_TO               | \
195*852ba100SJustin Hibbits                                          FM_FD_ERR_IPR_NCSP             | \
196*852ba100SJustin Hibbits                                          FM_FD_ERR_PHYSICAL             | \
197*852ba100SJustin Hibbits                                          FM_FD_ERR_SIZE                 | \
198*852ba100SJustin Hibbits                                          FM_FD_ERR_CLS_DISCARD          | \
199*852ba100SJustin Hibbits                                          FM_FD_ERR_COLOR_RED            | \
200*852ba100SJustin Hibbits                                          FM_FD_ERR_COLOR_YELLOW         | \
201*852ba100SJustin Hibbits                                          FM_FD_ERR_ILL_PLCR             | \
202*852ba100SJustin Hibbits                                          FM_FD_ERR_PLCR_FRAME_LEN       | \
203*852ba100SJustin Hibbits                                          FM_FD_ERR_EXTRACTION           | \
204*852ba100SJustin Hibbits                                          FM_FD_ERR_NO_SCHEME            | \
205*852ba100SJustin Hibbits                                          FM_FD_ERR_KEYSIZE_OVERFLOW     | \
206*852ba100SJustin Hibbits                                          FM_FD_ERR_PRS_TIMEOUT          | \
207*852ba100SJustin Hibbits                                          FM_FD_ERR_PRS_ILL_INSTRUCT     | \
208*852ba100SJustin Hibbits                                          FM_FD_ERR_PRS_HDR_ERR          | \
209*852ba100SJustin Hibbits                                          FM_FD_ERR_BLOCK_LIMIT_EXCEEDED) /**< RX Error FD bits */
210*852ba100SJustin Hibbits 
211*852ba100SJustin Hibbits #define FM_FD_RX_STATUS_ERR_NON_FM      0x00400000  /**< non Frame-Manager error */
2120aeed3e9SJustin Hibbits /* @} */
2130aeed3e9SJustin Hibbits 
2140aeed3e9SJustin Hibbits /**************************************************************************//**
2150aeed3e9SJustin Hibbits  @Description   Context A
2160aeed3e9SJustin Hibbits *//***************************************************************************/
2170aeed3e9SJustin Hibbits typedef _Packed struct t_FmContextA {
2180aeed3e9SJustin Hibbits     volatile uint32_t    command;   /**< ContextA Command */
2190aeed3e9SJustin Hibbits     volatile uint8_t     res0[4];   /**< ContextA Reserved bits */
2200aeed3e9SJustin Hibbits } _PackedType t_FmContextA;
2210aeed3e9SJustin Hibbits 
2220aeed3e9SJustin Hibbits /**************************************************************************//**
2230aeed3e9SJustin Hibbits  @Description   Context B
2240aeed3e9SJustin Hibbits *//***************************************************************************/
2250aeed3e9SJustin Hibbits typedef uint32_t t_FmContextB;
2260aeed3e9SJustin Hibbits 
2270aeed3e9SJustin Hibbits /**************************************************************************//**
228*852ba100SJustin Hibbits  @Collection   Special Operation options
229*852ba100SJustin Hibbits *//***************************************************************************/
230*852ba100SJustin Hibbits typedef uint32_t fmSpecialOperations_t;                 /**< typedef for defining Special Operation options */
231*852ba100SJustin Hibbits 
232*852ba100SJustin Hibbits #define  FM_SP_OP_IPSEC                     0x80000000  /**< activate features that related to IPSec (e.g fix Eth-type) */
233*852ba100SJustin Hibbits #define  FM_SP_OP_IPSEC_UPDATE_UDP_LEN      0x40000000  /**< update the UDP-Len after Encryption */
234*852ba100SJustin Hibbits #define  FM_SP_OP_IPSEC_MANIP               0x20000000  /**< handle the IPSec-manip options */
235*852ba100SJustin Hibbits #define  FM_SP_OP_RPD                       0x10000000  /**< Set the RPD bit */
236*852ba100SJustin Hibbits #define  FM_SP_OP_DCL4C                     0x08000000  /**< Set the DCL4C bit */
237*852ba100SJustin Hibbits #define  FM_SP_OP_CHECK_SEC_ERRORS          0x04000000  /**< Check SEC errors */
238*852ba100SJustin Hibbits #define  FM_SP_OP_CLEAR_RPD                 0x02000000  /**< Clear the RPD bit */
239*852ba100SJustin Hibbits #define  FM_SP_OP_CAPWAP_DTLS_ENC           0x01000000  /**< activate features that related to CAPWAP-DTLS post Encryption */
240*852ba100SJustin Hibbits #define  FM_SP_OP_CAPWAP_DTLS_DEC           0x00800000  /**< activate features that related to CAPWAP-DTLS post Decryption */
241*852ba100SJustin Hibbits #define  FM_SP_OP_IPSEC_NO_ETH_HDR          0x00400000  /**< activate features that related to IPSec without Eth hdr */
242*852ba100SJustin Hibbits /* @} */
243*852ba100SJustin Hibbits 
244*852ba100SJustin Hibbits /**************************************************************************//**
2450aeed3e9SJustin Hibbits  @Collection   Context A macros
2460aeed3e9SJustin Hibbits *//***************************************************************************/
2470aeed3e9SJustin Hibbits #define FM_CONTEXTA_OVERRIDE_MASK       0x80000000
2480aeed3e9SJustin Hibbits #define FM_CONTEXTA_ICMD_MASK           0x40000000
2490aeed3e9SJustin Hibbits #define FM_CONTEXTA_A1_VALID_MASK       0x20000000
2500aeed3e9SJustin Hibbits #define FM_CONTEXTA_MACCMD_MASK         0x00ff0000
2510aeed3e9SJustin Hibbits #define FM_CONTEXTA_MACCMD_VALID_MASK   0x00800000
2520aeed3e9SJustin Hibbits #define FM_CONTEXTA_MACCMD_SECURED_MASK 0x00100000
2530aeed3e9SJustin Hibbits #define FM_CONTEXTA_MACCMD_SC_MASK      0x000f0000
2540aeed3e9SJustin Hibbits #define FM_CONTEXTA_A1_MASK             0x0000ffff
2550aeed3e9SJustin Hibbits 
2560aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_OVERRIDE(contextA)                 ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_OVERRIDE_MASK) >> (31-0))
2570aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_ICMD(contextA)                     ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_ICMD_MASK) >> (31-1))
2580aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_A1_VALID(contextA)                 ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_VALID_MASK) >> (31-2))
2590aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_A1(contextA)                       ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_A1_MASK) >> (31-31))
2600aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_MACCMD(contextA)                   ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_MASK) >> (31-15))
2610aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_MACCMD_VALID(contextA)             ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_VALID_MASK) >> (31-8))
2620aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_MACCMD_SECURED(contextA)           ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SECURED_MASK) >> (31-11))
2630aeed3e9SJustin Hibbits #define FM_CONTEXTA_GET_MACCMD_SECURE_CHANNEL(contextA)    ((((t_FmContextA *)contextA)->command & FM_CONTEXTA_MACCMD_SC_MASK) >> (31-15))
2640aeed3e9SJustin Hibbits 
2650aeed3e9SJustin Hibbits #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) ))
2660aeed3e9SJustin Hibbits #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) ))
2670aeed3e9SJustin Hibbits #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) ))
2680aeed3e9SJustin Hibbits #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) ))
2690aeed3e9SJustin Hibbits #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) ))
2700aeed3e9SJustin Hibbits #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) ))
2710aeed3e9SJustin Hibbits #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) ))
2720aeed3e9SJustin Hibbits #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) ))
2730aeed3e9SJustin Hibbits /* @} */
2740aeed3e9SJustin Hibbits 
2750aeed3e9SJustin Hibbits /**************************************************************************//**
2760aeed3e9SJustin Hibbits  @Collection   Context B macros
2770aeed3e9SJustin Hibbits *//***************************************************************************/
2780aeed3e9SJustin Hibbits #define FM_CONTEXTB_FQID_MASK               0x00ffffff
2790aeed3e9SJustin Hibbits 
2800aeed3e9SJustin Hibbits #define FM_CONTEXTB_GET_FQID(contextB)      (*((t_FmContextB *)contextB) & FM_CONTEXTB_FQID_MASK)
2810aeed3e9SJustin Hibbits #define FM_CONTEXTB_SET_FQID(contextB,val)  (*((t_FmContextB *)contextB) = ((*((t_FmContextB *)contextB) & ~FM_CONTEXTB_FQID_MASK) | ((val) & FM_CONTEXTB_FQID_MASK)))
2820aeed3e9SJustin Hibbits /* @} */
2830aeed3e9SJustin Hibbits 
2840aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
2850aeed3e9SJustin Hibbits #pragma pack(pop)
2860aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
2870aeed3e9SJustin Hibbits 
2880aeed3e9SJustin Hibbits 
2890aeed3e9SJustin Hibbits /**************************************************************************//**
2900aeed3e9SJustin Hibbits  @Description   FM Exceptions
2910aeed3e9SJustin Hibbits *//***************************************************************************/
2920aeed3e9SJustin Hibbits typedef enum e_FmExceptions {
293*852ba100SJustin Hibbits     e_FM_EX_DMA_BUS_ERROR = 0,          /**< DMA bus error. */
294*852ba100SJustin Hibbits     e_FM_EX_DMA_READ_ECC,               /**< Read Buffer ECC error (Valid for FM rev < 6)*/
295*852ba100SJustin Hibbits     e_FM_EX_DMA_SYSTEM_WRITE_ECC,       /**< Write Buffer ECC error on system side (Valid for FM rev < 6)*/
296*852ba100SJustin Hibbits     e_FM_EX_DMA_FM_WRITE_ECC,           /**< Write Buffer ECC error on FM side (Valid for FM rev < 6)*/
297*852ba100SJustin Hibbits     e_FM_EX_DMA_SINGLE_PORT_ECC,        /**< Single Port ECC error on FM side (Valid for FM rev > 6)*/
2980aeed3e9SJustin Hibbits     e_FM_EX_FPM_STALL_ON_TASKS,         /**< Stall of tasks on FPM */
2990aeed3e9SJustin Hibbits     e_FM_EX_FPM_SINGLE_ECC,             /**< Single ECC on FPM. */
3000aeed3e9SJustin Hibbits     e_FM_EX_FPM_DOUBLE_ECC,             /**< Double ECC error on FPM ram access */
3010aeed3e9SJustin Hibbits     e_FM_EX_QMI_SINGLE_ECC,             /**< Single ECC on QMI. */
3020aeed3e9SJustin Hibbits     e_FM_EX_QMI_DOUBLE_ECC,             /**< Double bit ECC occurred on QMI */
303*852ba100SJustin Hibbits     e_FM_EX_QMI_DEQ_FROM_UNKNOWN_PORTID,/**< Dequeue from unknown port id */
3040aeed3e9SJustin Hibbits     e_FM_EX_BMI_LIST_RAM_ECC,           /**< Linked List RAM ECC error */
305*852ba100SJustin Hibbits     e_FM_EX_BMI_STORAGE_PROFILE_ECC,    /**< Storage Profile ECC Error */
3060aeed3e9SJustin Hibbits     e_FM_EX_BMI_STATISTICS_RAM_ECC,     /**< Statistics Count RAM ECC Error Enable */
3070aeed3e9SJustin Hibbits     e_FM_EX_BMI_DISPATCH_RAM_ECC,       /**< Dispatch RAM ECC Error Enable */
3080aeed3e9SJustin Hibbits     e_FM_EX_IRAM_ECC,                   /**< Double bit ECC occurred on IRAM*/
3090aeed3e9SJustin Hibbits     e_FM_EX_MURAM_ECC                   /**< Double bit ECC occurred on MURAM*/
3100aeed3e9SJustin Hibbits } e_FmExceptions;
3110aeed3e9SJustin Hibbits 
3120aeed3e9SJustin Hibbits /**************************************************************************//**
313*852ba100SJustin Hibbits  @Description   Enum for defining port DMA swap mode
314*852ba100SJustin Hibbits *//***************************************************************************/
315*852ba100SJustin Hibbits typedef enum e_FmDmaSwapOption {
316*852ba100SJustin Hibbits     e_FM_DMA_NO_SWP = FMAN_DMA_NO_SWP,          /**< No swap, transfer data as is.*/
317*852ba100SJustin Hibbits     e_FM_DMA_SWP_PPC_LE = FMAN_DMA_SWP_PPC_LE,  /**< The transferred data should be swapped
318*852ba100SJustin Hibbits                                                 in PowerPc Little Endian mode. */
319*852ba100SJustin Hibbits     e_FM_DMA_SWP_BE = FMAN_DMA_SWP_BE           /**< The transferred data should be swapped
320*852ba100SJustin Hibbits                                                 in Big Endian mode */
321*852ba100SJustin Hibbits } e_FmDmaSwapOption;
322*852ba100SJustin Hibbits 
323*852ba100SJustin Hibbits /**************************************************************************//**
324*852ba100SJustin Hibbits  @Description   Enum for defining port DMA cache attributes
325*852ba100SJustin Hibbits *//***************************************************************************/
326*852ba100SJustin Hibbits typedef enum e_FmDmaCacheOption {
327*852ba100SJustin Hibbits     e_FM_DMA_NO_STASH = FMAN_DMA_NO_STASH,      /**< Cacheable, no Allocate (No Stashing) */
328*852ba100SJustin Hibbits     e_FM_DMA_STASH = FMAN_DMA_STASH             /**< Cacheable and Allocate (Stashing on) */
329*852ba100SJustin Hibbits } e_FmDmaCacheOption;
330*852ba100SJustin Hibbits 
331*852ba100SJustin Hibbits 
332*852ba100SJustin Hibbits /**************************************************************************//**
3330aeed3e9SJustin Hibbits  @Group         FM_init_grp FM Initialization Unit
3340aeed3e9SJustin Hibbits 
3350aeed3e9SJustin Hibbits  @Description   FM Initialization Unit
3360aeed3e9SJustin Hibbits 
3370aeed3e9SJustin Hibbits                 Initialization Flow
3380aeed3e9SJustin Hibbits                 Initialization of the FM Module will be carried out by the application
3390aeed3e9SJustin Hibbits                 according to the following sequence:
340*852ba100SJustin Hibbits                 -  Calling the configuration routine with basic parameters.
341*852ba100SJustin Hibbits                 -  Calling the advance initialization routines to change driver's defaults.
342*852ba100SJustin Hibbits                 -  Calling the initialization routine.
3430aeed3e9SJustin Hibbits 
3440aeed3e9SJustin Hibbits  @{
3450aeed3e9SJustin Hibbits *//***************************************************************************/
3460aeed3e9SJustin Hibbits 
3470aeed3e9SJustin Hibbits /**************************************************************************//**
3480aeed3e9SJustin Hibbits  @Function      t_FmExceptionsCallback
3490aeed3e9SJustin Hibbits 
3500aeed3e9SJustin Hibbits  @Description   Exceptions user callback routine, will be called upon an
3510aeed3e9SJustin Hibbits                 exception passing the exception identification.
3520aeed3e9SJustin Hibbits 
3530aeed3e9SJustin Hibbits  @Param[in]     h_App      - User's application descriptor.
3540aeed3e9SJustin Hibbits  @Param[in]     exception  - The exception.
3550aeed3e9SJustin Hibbits *//***************************************************************************/
3560aeed3e9SJustin Hibbits typedef void (t_FmExceptionsCallback)(t_Handle          h_App,
3570aeed3e9SJustin Hibbits                                       e_FmExceptions    exception);
3580aeed3e9SJustin Hibbits 
359*852ba100SJustin Hibbits 
3600aeed3e9SJustin Hibbits /**************************************************************************//**
3610aeed3e9SJustin Hibbits  @Function      t_FmBusErrorCallback
3620aeed3e9SJustin Hibbits 
3630aeed3e9SJustin Hibbits  @Description   Bus error user callback routine, will be called upon a
3640aeed3e9SJustin Hibbits                 bus error, passing parameters describing the errors and the owner.
3650aeed3e9SJustin Hibbits 
3660aeed3e9SJustin Hibbits  @Param[in]     h_App       - User's application descriptor.
3670aeed3e9SJustin Hibbits  @Param[in]     portType    - Port type (e_FmPortType)
3680aeed3e9SJustin Hibbits  @Param[in]     portId      - Port id - relative to type.
3690aeed3e9SJustin Hibbits  @Param[in]     addr        - Address that caused the error
3700aeed3e9SJustin Hibbits  @Param[in]     tnum        - Owner of error
3710aeed3e9SJustin Hibbits  @Param[in]     liodn       - Logical IO device number
3720aeed3e9SJustin Hibbits *//***************************************************************************/
3730aeed3e9SJustin Hibbits typedef void (t_FmBusErrorCallback) (t_Handle        h_App,
3740aeed3e9SJustin Hibbits                                      e_FmPortType    portType,
3750aeed3e9SJustin Hibbits                                      uint8_t         portId,
3760aeed3e9SJustin Hibbits                                      uint64_t        addr,
3770aeed3e9SJustin Hibbits                                      uint8_t         tnum,
3780aeed3e9SJustin Hibbits                                      uint16_t        liodn);
3790aeed3e9SJustin Hibbits 
3800aeed3e9SJustin Hibbits /**************************************************************************//**
381*852ba100SJustin Hibbits  @Description   A structure for defining buffer prefix area content.
3820aeed3e9SJustin Hibbits *//***************************************************************************/
383*852ba100SJustin Hibbits typedef struct t_FmBufferPrefixContent {
384*852ba100SJustin Hibbits     uint16_t    privDataSize;       /**< Number of bytes to be left at the beginning
385*852ba100SJustin Hibbits                                          of the external buffer; Note that the private-area will
386*852ba100SJustin Hibbits                                          start from the base of the buffer address. */
387*852ba100SJustin Hibbits     bool        passPrsResult;      /**< TRUE to pass the parse result to/from the FM;
388*852ba100SJustin Hibbits                                          User may use FM_PORT_GetBufferPrsResult() in order to
389*852ba100SJustin Hibbits                                          get the parser-result from a buffer. */
390*852ba100SJustin Hibbits     bool        passTimeStamp;      /**< TRUE to pass the timeStamp to/from the FM
391*852ba100SJustin Hibbits                                          User may use FM_PORT_GetBufferTimeStamp() in order to
392*852ba100SJustin Hibbits                                          get the parser-result from a buffer. */
393*852ba100SJustin Hibbits     bool        passHashResult;     /**< TRUE to pass the KG hash result to/from the FM
394*852ba100SJustin Hibbits                                          User may use FM_PORT_GetBufferHashResult() in order to
395*852ba100SJustin Hibbits                                          get the parser-result from a buffer. */
396*852ba100SJustin Hibbits     bool        passAllOtherPCDInfo;/**< Add all other Internal-Context information:
397*852ba100SJustin Hibbits                                          AD, hash-result, key, etc. */
398*852ba100SJustin Hibbits     uint16_t    dataAlign;          /**< 0 to use driver's default alignment [DEFAULT_FM_SP_bufferPrefixContent_dataAlign],
399*852ba100SJustin Hibbits                                          other value for selecting a data alignment (must be a power of 2);
400*852ba100SJustin Hibbits                                          if write optimization is used, must be >= 16. */
401*852ba100SJustin Hibbits     uint8_t     manipExtraSpace;    /**< Maximum extra size needed (insertion-size minus removal-size);
402*852ba100SJustin Hibbits                                          Note that this field impacts the size of the buffer-prefix
403*852ba100SJustin Hibbits                                          (i.e. it pushes the data offset);
404*852ba100SJustin Hibbits                                          This field is irrelevant if DPAA_VERSION==10 */
405*852ba100SJustin Hibbits } t_FmBufferPrefixContent;
4060aeed3e9SJustin Hibbits 
4070aeed3e9SJustin Hibbits /**************************************************************************//**
408*852ba100SJustin Hibbits  @Description   A structure of information about each of the external
409*852ba100SJustin Hibbits                 buffer pools used by a port or storage-profile.
4100aeed3e9SJustin Hibbits *//***************************************************************************/
411*852ba100SJustin Hibbits typedef struct t_FmExtPoolParams {
412*852ba100SJustin Hibbits     uint8_t                 id;     /**< External buffer pool id */
413*852ba100SJustin Hibbits     uint16_t                size;   /**< External buffer pool buffer size */
414*852ba100SJustin Hibbits } t_FmExtPoolParams;
415*852ba100SJustin Hibbits 
416*852ba100SJustin Hibbits /**************************************************************************//**
417*852ba100SJustin Hibbits  @Description   A structure for informing the driver about the external
418*852ba100SJustin Hibbits                 buffer pools allocated in the BM and used by a port or a
419*852ba100SJustin Hibbits                 storage-profile.
420*852ba100SJustin Hibbits *//***************************************************************************/
421*852ba100SJustin Hibbits typedef struct t_FmExtPools {
422*852ba100SJustin Hibbits     uint8_t                 numOfPoolsUsed;     /**< Number of pools use by this port */
423*852ba100SJustin Hibbits     t_FmExtPoolParams       extBufPool[FM_PORT_MAX_NUM_OF_EXT_POOLS];
424*852ba100SJustin Hibbits                                                 /**< Parameters for each port */
425*852ba100SJustin Hibbits } t_FmExtPools;
426*852ba100SJustin Hibbits 
427*852ba100SJustin Hibbits /**************************************************************************//**
428*852ba100SJustin Hibbits  @Description   A structure for defining backup BM Pools.
429*852ba100SJustin Hibbits *//***************************************************************************/
430*852ba100SJustin Hibbits typedef struct t_FmBackupBmPools {
431*852ba100SJustin Hibbits     uint8_t     numOfBackupPools;       /**< Number of BM backup pools -
432*852ba100SJustin Hibbits                                              must be smaller than the total number of
433*852ba100SJustin Hibbits                                              pools defined for the specified port.*/
434*852ba100SJustin Hibbits     uint8_t     poolIds[FM_PORT_MAX_NUM_OF_EXT_POOLS];
435*852ba100SJustin Hibbits                                         /**< numOfBackupPools pool id's, specifying which
436*852ba100SJustin Hibbits                                              pools should be used only as backup. Pool
437*852ba100SJustin Hibbits                                              id's specified here must be a subset of the
438*852ba100SJustin Hibbits                                              pools used by the specified port.*/
439*852ba100SJustin Hibbits } t_FmBackupBmPools;
440*852ba100SJustin Hibbits 
441*852ba100SJustin Hibbits /**************************************************************************//**
442*852ba100SJustin Hibbits  @Description   A structure for defining BM pool depletion criteria
443*852ba100SJustin Hibbits *//***************************************************************************/
444*852ba100SJustin Hibbits typedef struct t_FmBufPoolDepletion {
445*852ba100SJustin Hibbits     bool        poolsGrpModeEnable;                 /**< select mode in which pause frames will be sent after
446*852ba100SJustin Hibbits                                                          a number of pools (all together!) are depleted */
447*852ba100SJustin Hibbits     uint8_t     numOfPools;                         /**< the number of depleted pools that will invoke
448*852ba100SJustin Hibbits                                                          pause frames transmission. */
449*852ba100SJustin Hibbits     bool        poolsToConsider[BM_MAX_NUM_OF_POOLS];
450*852ba100SJustin Hibbits                                                     /**< For each pool, TRUE if it should be considered for
451*852ba100SJustin Hibbits                                                          depletion (Note - this pool must be used by this port!). */
452*852ba100SJustin Hibbits     bool        singlePoolModeEnable;               /**< select mode in which pause frames will be sent after
453*852ba100SJustin Hibbits                                                          a single-pool is depleted; */
454*852ba100SJustin Hibbits     bool        poolsToConsiderForSingleMode[BM_MAX_NUM_OF_POOLS];
455*852ba100SJustin Hibbits                                                     /**< For each pool, TRUE if it should be considered for
456*852ba100SJustin Hibbits                                                          depletion (Note - this pool must be used by this port!) */
457*852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
458*852ba100SJustin Hibbits     bool        pfcPrioritiesEn[FM_MAX_NUM_OF_PFC_PRIORITIES];
459*852ba100SJustin Hibbits                                                     /**< This field is used by the MAC as the Priority Enable Vector in the PFC frame which is transmitted */
460*852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
461*852ba100SJustin Hibbits } t_FmBufPoolDepletion;
462*852ba100SJustin Hibbits 
463*852ba100SJustin Hibbits /**************************************************************************//**
464*852ba100SJustin Hibbits  @Description   A Structure for defining Ucode patch for loading.
465*852ba100SJustin Hibbits *//***************************************************************************/
466*852ba100SJustin Hibbits typedef struct t_FmFirmwareParams {
467*852ba100SJustin Hibbits     uint32_t                size;                   /**< Size of uCode */
468*852ba100SJustin Hibbits     uint32_t                *p_Code;                /**< A pointer to the uCode */
469*852ba100SJustin Hibbits } t_FmFirmwareParams;
470*852ba100SJustin Hibbits 
471*852ba100SJustin Hibbits /**************************************************************************//**
472*852ba100SJustin Hibbits  @Description   A Structure for defining FM initialization parameters
473*852ba100SJustin Hibbits *//***************************************************************************/
4740aeed3e9SJustin Hibbits typedef struct t_FmParams {
4750aeed3e9SJustin Hibbits     uint8_t                 fmId;                   /**< Index of the FM */
4760aeed3e9SJustin Hibbits     uint8_t                 guestId;                /**< FM Partition Id */
477*852ba100SJustin Hibbits     uintptr_t               baseAddr;               /**< A pointer to base of memory mapped FM registers (virtual);
478*852ba100SJustin Hibbits                                                          this field is optional when the FM runs in "guest-mode"
479*852ba100SJustin Hibbits                                                          (i.e. guestId != NCSW_MASTER_ID); in that case, the driver will
480*852ba100SJustin Hibbits                                                          use the memory-map instead of calling the IPC where possible;
481*852ba100SJustin Hibbits                                                          NOTE that this should include ALL common registers of the FM including
482*852ba100SJustin Hibbits                                                          the PCD registers area (i.e. until the VSP pages - 880KB). */
483*852ba100SJustin Hibbits     t_Handle                h_FmMuram;              /**< A handle of an initialized MURAM object,
484*852ba100SJustin Hibbits                                                          to be used by the FM. */
485*852ba100SJustin Hibbits     uint16_t                fmClkFreq;              /**< In Mhz;
486*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
487*852ba100SJustin Hibbits     uint16_t                fmMacClkRatio;          /**< FM MAC Clock ratio, for backward comparability:
488*852ba100SJustin Hibbits                                                                      when fmMacClkRatio = 0, ratio is 2:1
489*852ba100SJustin Hibbits                                                                      when fmMacClkRatio = 1, ratio is 1:1  */
490*852ba100SJustin Hibbits     t_FmExceptionsCallback  *f_Exception;           /**< An application callback routine to handle exceptions;
491*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
492*852ba100SJustin Hibbits     t_FmBusErrorCallback    *f_BusError;            /**< An application callback routine to handle exceptions;
493*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
494*852ba100SJustin Hibbits     t_Handle                h_App;                  /**< A handle to an application layer object; This handle will
495*852ba100SJustin Hibbits                                                          be passed by the driver upon calling the above callbacks;
496*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
497*852ba100SJustin Hibbits     uintptr_t               irq;                    /**< FM interrupt source for normal events;
498*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
499*852ba100SJustin Hibbits     uintptr_t               errIrq;                 /**< FM interrupt source for errors;
500*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
501*852ba100SJustin Hibbits     t_FmFirmwareParams      firmware;               /**< The firmware parameters structure;
502*852ba100SJustin Hibbits                                                          Relevant when FM not runs in "guest-mode". */
5030aeed3e9SJustin Hibbits 
504*852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
505*852ba100SJustin Hibbits     uintptr_t               vspBaseAddr;            /**< A pointer to base of memory mapped FM VSP registers (virtual);
506*852ba100SJustin Hibbits                                                          i.e. up to 24KB, depending on the specific chip. */
507*852ba100SJustin Hibbits     uint8_t                 partVSPBase;            /**< The first Virtual-Storage-Profile-id dedicated to this partition.
508*852ba100SJustin Hibbits                                                          NOTE: this parameter relevant only when working with multiple partitions. */
509*852ba100SJustin Hibbits     uint8_t                 partNumOfVSPs;          /**< Number of VSPs dedicated to this partition.
510*852ba100SJustin Hibbits                                                          NOTE: this parameter relevant only when working with multiple partitions. */
511*852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
5120aeed3e9SJustin Hibbits } t_FmParams;
5130aeed3e9SJustin Hibbits 
5140aeed3e9SJustin Hibbits 
5150aeed3e9SJustin Hibbits /**************************************************************************//**
5160aeed3e9SJustin Hibbits  @Function      FM_Config
5170aeed3e9SJustin Hibbits 
518*852ba100SJustin Hibbits  @Description   Creates the FM module and returns its handle (descriptor).
5190aeed3e9SJustin Hibbits                 This descriptor must be passed as first parameter to all other
5200aeed3e9SJustin Hibbits                 FM function calls.
5210aeed3e9SJustin Hibbits 
5220aeed3e9SJustin Hibbits                 No actual initialization or configuration of FM hardware is
523*852ba100SJustin Hibbits                 done by this routine. All FM parameters get default values that
524*852ba100SJustin Hibbits                 may be changed by calling one or more of the advance config routines.
5250aeed3e9SJustin Hibbits 
526*852ba100SJustin Hibbits  @Param[in]     p_FmParams  - A pointer to a data structure of mandatory FM parameters
5270aeed3e9SJustin Hibbits 
528*852ba100SJustin Hibbits  @Return        A handle to the FM object, or NULL for Failure.
5290aeed3e9SJustin Hibbits *//***************************************************************************/
5300aeed3e9SJustin Hibbits t_Handle FM_Config(t_FmParams *p_FmParams);
5310aeed3e9SJustin Hibbits 
5320aeed3e9SJustin Hibbits /**************************************************************************//**
5330aeed3e9SJustin Hibbits  @Function      FM_Init
5340aeed3e9SJustin Hibbits 
535*852ba100SJustin Hibbits  @Description   Initializes the FM module by defining the software structure
536*852ba100SJustin Hibbits                 and configuring the hardware registers.
5370aeed3e9SJustin Hibbits 
5380aeed3e9SJustin Hibbits  @Param[in]     h_Fm - FM module descriptor
5390aeed3e9SJustin Hibbits 
5400aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
5410aeed3e9SJustin Hibbits *//***************************************************************************/
5420aeed3e9SJustin Hibbits t_Error FM_Init(t_Handle h_Fm);
5430aeed3e9SJustin Hibbits 
5440aeed3e9SJustin Hibbits /**************************************************************************//**
5450aeed3e9SJustin Hibbits  @Function      FM_Free
5460aeed3e9SJustin Hibbits 
5470aeed3e9SJustin Hibbits  @Description   Frees all resources that were assigned to FM module.
5480aeed3e9SJustin Hibbits 
5490aeed3e9SJustin Hibbits                 Calling this routine invalidates the descriptor.
5500aeed3e9SJustin Hibbits 
5510aeed3e9SJustin Hibbits  @Param[in]     h_Fm - FM module descriptor
5520aeed3e9SJustin Hibbits 
5530aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
5540aeed3e9SJustin Hibbits *//***************************************************************************/
5550aeed3e9SJustin Hibbits t_Error FM_Free(t_Handle h_Fm);
5560aeed3e9SJustin Hibbits 
5570aeed3e9SJustin Hibbits 
5580aeed3e9SJustin Hibbits /**************************************************************************//**
5590aeed3e9SJustin Hibbits  @Group         FM_advanced_init_grp    FM Advanced Configuration Unit
5600aeed3e9SJustin Hibbits 
561*852ba100SJustin Hibbits  @Description   Advanced configuration routines are optional routines that may
562*852ba100SJustin Hibbits                 be called in order to change the default driver settings.
563*852ba100SJustin Hibbits 
564*852ba100SJustin Hibbits                 Note: Advanced configuration routines are not available for guest partition.
5650aeed3e9SJustin Hibbits  @{
5660aeed3e9SJustin Hibbits *//***************************************************************************/
5670aeed3e9SJustin Hibbits 
5680aeed3e9SJustin Hibbits /**************************************************************************//**
569*852ba100SJustin Hibbits  @Description   Enum for selecting DMA debug mode
5700aeed3e9SJustin Hibbits *//***************************************************************************/
5710aeed3e9SJustin Hibbits typedef enum e_FmDmaDbgCntMode {
5720aeed3e9SJustin Hibbits     e_FM_DMA_DBG_NO_CNT             = 0,    /**< No counting */
5730aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_DONE,                  /**< Count DONE commands */
5740aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_COMM_Q_EM,             /**< count command queue emergency signals */
5750aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_INT_READ_EM,           /**< Count Internal Read buffer emergency signal */
5760aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_INT_WRITE_EM,          /**< Count Internal Write buffer emergency signal */
5770aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_FPM_WAIT,              /**< Count FPM WAIT signal */
5780aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_SIGLE_BIT_ECC,         /**< Single bit ECC errors. */
5790aeed3e9SJustin Hibbits     e_FM_DMA_DBG_CNT_RAW_WAR_PROT           /**< Number of times there was a need for RAW & WAR protection. */
5800aeed3e9SJustin Hibbits } e_FmDmaDbgCntMode;
5810aeed3e9SJustin Hibbits 
5820aeed3e9SJustin Hibbits /**************************************************************************//**
583*852ba100SJustin Hibbits  @Description   Enum for selecting DMA Cache Override
5840aeed3e9SJustin Hibbits *//***************************************************************************/
5850aeed3e9SJustin Hibbits typedef enum e_FmDmaCacheOverride {
5860aeed3e9SJustin Hibbits     e_FM_DMA_NO_CACHE_OR = 0,               /**< No override of the Cache field */
5870aeed3e9SJustin Hibbits     e_FM_DMA_NO_STASH_DATA,                 /**< Data should not be stashed in system level cache */
5880aeed3e9SJustin Hibbits     e_FM_DMA_MAY_STASH_DATA,                /**< Data may be stashed in system level cache */
5890aeed3e9SJustin Hibbits     e_FM_DMA_STASH_DATA                     /**< Data should be stashed in system level cache */
5900aeed3e9SJustin Hibbits } e_FmDmaCacheOverride;
5910aeed3e9SJustin Hibbits 
5920aeed3e9SJustin Hibbits /**************************************************************************//**
593*852ba100SJustin Hibbits  @Description   Enum for selecting DMA External Bus Priority
5940aeed3e9SJustin Hibbits *//***************************************************************************/
5950aeed3e9SJustin Hibbits typedef enum e_FmDmaExtBusPri {
5960aeed3e9SJustin Hibbits     e_FM_DMA_EXT_BUS_NORMAL = 0,            /**< Normal priority */
5970aeed3e9SJustin Hibbits     e_FM_DMA_EXT_BUS_EBS,                   /**< AXI extended bus service priority */
5980aeed3e9SJustin Hibbits     e_FM_DMA_EXT_BUS_SOS,                   /**< AXI sos priority */
5990aeed3e9SJustin Hibbits     e_FM_DMA_EXT_BUS_EBS_AND_SOS            /**< AXI ebs + sos priority */
6000aeed3e9SJustin Hibbits } e_FmDmaExtBusPri;
6010aeed3e9SJustin Hibbits 
6020aeed3e9SJustin Hibbits /**************************************************************************//**
603*852ba100SJustin Hibbits  @Description   Enum for choosing the field that will be output on AID
6040aeed3e9SJustin Hibbits *//***************************************************************************/
6050aeed3e9SJustin Hibbits typedef enum e_FmDmaAidMode {
6060aeed3e9SJustin Hibbits     e_FM_DMA_AID_OUT_PORT_ID = 0,           /**< 4 LSB of PORT_ID */
6070aeed3e9SJustin Hibbits     e_FM_DMA_AID_OUT_TNUM                   /**< 4 LSB of TNUM */
6080aeed3e9SJustin Hibbits } e_FmDmaAidMode;
6090aeed3e9SJustin Hibbits 
6100aeed3e9SJustin Hibbits /**************************************************************************//**
611*852ba100SJustin Hibbits  @Description   Enum for selecting FPM Catastrophic error behavior
6120aeed3e9SJustin Hibbits *//***************************************************************************/
6130aeed3e9SJustin Hibbits typedef enum e_FmCatastrophicErr {
6140aeed3e9SJustin Hibbits     e_FM_CATASTROPHIC_ERR_STALL_PORT = 0,   /**< Port_ID is stalled (only reset can release it) */
615*852ba100SJustin Hibbits     e_FM_CATASTROPHIC_ERR_STALL_TASK        /**< Only erroneous task is stalled */
6160aeed3e9SJustin Hibbits } e_FmCatastrophicErr;
6170aeed3e9SJustin Hibbits 
6180aeed3e9SJustin Hibbits /**************************************************************************//**
619*852ba100SJustin Hibbits  @Description   Enum for selecting FPM DMA Error behavior
6200aeed3e9SJustin Hibbits *//***************************************************************************/
6210aeed3e9SJustin Hibbits typedef enum e_FmDmaErr {
622*852ba100SJustin Hibbits     e_FM_DMA_ERR_CATASTROPHIC = 0,          /**< Dma error is treated as a catastrophic
623*852ba100SJustin Hibbits                                                  error (e_FmCatastrophicErr)*/
6240aeed3e9SJustin Hibbits     e_FM_DMA_ERR_REPORT                     /**< Dma error is just reported */
6250aeed3e9SJustin Hibbits } e_FmDmaErr;
6260aeed3e9SJustin Hibbits 
6270aeed3e9SJustin Hibbits /**************************************************************************//**
628*852ba100SJustin Hibbits  @Description   Enum for selecting DMA Emergency level by BMI emergency signal
6290aeed3e9SJustin Hibbits *//***************************************************************************/
6300aeed3e9SJustin Hibbits typedef enum e_FmDmaEmergencyLevel {
6310aeed3e9SJustin Hibbits     e_FM_DMA_EM_EBS = 0,                    /**< EBS emergency */
6320aeed3e9SJustin Hibbits     e_FM_DMA_EM_SOS                         /**< SOS emergency */
6330aeed3e9SJustin Hibbits } e_FmDmaEmergencyLevel;
6340aeed3e9SJustin Hibbits 
6350aeed3e9SJustin Hibbits /**************************************************************************//**
636*852ba100SJustin Hibbits  @Collection   Enum for selecting DMA Emergency options
6370aeed3e9SJustin Hibbits *//***************************************************************************/
6380aeed3e9SJustin Hibbits typedef uint32_t fmEmergencyBus_t;          /**< DMA emergency options */
6390aeed3e9SJustin Hibbits 
6400aeed3e9SJustin Hibbits #define  FM_DMA_MURAM_READ_EMERGENCY        0x00800000    /**< Enable emergency for MURAM1 */
6410aeed3e9SJustin Hibbits #define  FM_DMA_MURAM_WRITE_EMERGENCY       0x00400000    /**< Enable emergency for MURAM2 */
6420aeed3e9SJustin Hibbits #define  FM_DMA_EXT_BUS_EMERGENCY           0x00100000    /**< Enable emergency for external bus */
6430aeed3e9SJustin Hibbits /* @} */
6440aeed3e9SJustin Hibbits 
6450aeed3e9SJustin Hibbits /**************************************************************************//**
6460aeed3e9SJustin Hibbits  @Description   A structure for defining DMA emergency level
6470aeed3e9SJustin Hibbits *//***************************************************************************/
6480aeed3e9SJustin Hibbits typedef struct t_FmDmaEmergency {
6490aeed3e9SJustin Hibbits     fmEmergencyBus_t        emergencyBusSelect;             /**< An OR of the busses where emergency
6500aeed3e9SJustin Hibbits                                                                  should be enabled */
6510aeed3e9SJustin Hibbits     e_FmDmaEmergencyLevel   emergencyLevel;                 /**< EBS/SOS */
6520aeed3e9SJustin Hibbits } t_FmDmaEmergency;
6530aeed3e9SJustin Hibbits 
654*852ba100SJustin Hibbits /**************************************************************************//*
6550aeed3e9SJustin Hibbits  @Description   structure for defining FM threshold
6560aeed3e9SJustin Hibbits *//***************************************************************************/
6570aeed3e9SJustin Hibbits typedef struct t_FmThresholds {
6580aeed3e9SJustin Hibbits     uint8_t                 dispLimit;                      /**< The number of times a frames may
6590aeed3e9SJustin Hibbits                                                                  be passed in the FM before assumed to
6600aeed3e9SJustin Hibbits                                                                  be looping. */
6610aeed3e9SJustin Hibbits     uint8_t                 prsDispTh;                      /**< This is the number pf packets that may be
6620aeed3e9SJustin Hibbits                                                                  queued in the parser dispatch queue*/
6630aeed3e9SJustin Hibbits     uint8_t                 plcrDispTh;                     /**< This is the number pf packets that may be
6640aeed3e9SJustin Hibbits                                                                  queued in the policer dispatch queue*/
6650aeed3e9SJustin Hibbits     uint8_t                 kgDispTh;                       /**< This is the number pf packets that may be
6660aeed3e9SJustin Hibbits                                                                  queued in the keygen dispatch queue*/
6670aeed3e9SJustin Hibbits     uint8_t                 bmiDispTh;                      /**< This is the number pf packets that may be
6680aeed3e9SJustin Hibbits                                                                  queued in the BMI dispatch queue*/
6690aeed3e9SJustin Hibbits     uint8_t                 qmiEnqDispTh;                   /**< This is the number pf packets that may be
6700aeed3e9SJustin Hibbits                                                                  queued in the QMI enqueue dispatch queue*/
6710aeed3e9SJustin Hibbits     uint8_t                 qmiDeqDispTh;                   /**< This is the number pf packets that may be
6720aeed3e9SJustin Hibbits                                                                  queued in the QMI dequeue dispatch queue*/
6730aeed3e9SJustin Hibbits     uint8_t                 fmCtl1DispTh;                   /**< This is the number pf packets that may be
6740aeed3e9SJustin Hibbits                                                                  queued in fmCtl1 dispatch queue*/
6750aeed3e9SJustin Hibbits     uint8_t                 fmCtl2DispTh;                   /**< This is the number pf packets that may be
6760aeed3e9SJustin Hibbits                                                                  queued in fmCtl2 dispatch queue*/
6770aeed3e9SJustin Hibbits } t_FmThresholds;
6780aeed3e9SJustin Hibbits 
679*852ba100SJustin Hibbits /**************************************************************************//*
6800aeed3e9SJustin Hibbits  @Description   structure for defining DMA thresholds
6810aeed3e9SJustin Hibbits *//***************************************************************************/
6820aeed3e9SJustin Hibbits typedef struct t_FmDmaThresholds {
6830aeed3e9SJustin Hibbits     uint8_t                     assertEmergency;            /**< When this value is reached,
6840aeed3e9SJustin Hibbits                                                                  assert emergency (Threshold)*/
6850aeed3e9SJustin Hibbits     uint8_t                     clearEmergency;             /**< After emergency is asserted, it is held
6860aeed3e9SJustin Hibbits                                                                  until this value is reached (Hystheresis) */
6870aeed3e9SJustin Hibbits } t_FmDmaThresholds;
6880aeed3e9SJustin Hibbits 
689*852ba100SJustin Hibbits /**************************************************************************//**
690*852ba100SJustin Hibbits  @Function      t_FmResetOnInitOverrideCallback
691*852ba100SJustin Hibbits 
692*852ba100SJustin Hibbits  @Description   FMan specific reset on init user callback routine,
693*852ba100SJustin Hibbits                 will be used to override the standard FMan reset on init procedure
694*852ba100SJustin Hibbits 
695*852ba100SJustin Hibbits  @Param[in]     h_Fm  - FMan handler
696*852ba100SJustin Hibbits *//***************************************************************************/
697*852ba100SJustin Hibbits typedef void (t_FmResetOnInitOverrideCallback)(t_Handle h_Fm);
6980aeed3e9SJustin Hibbits 
6990aeed3e9SJustin Hibbits /**************************************************************************//**
7000aeed3e9SJustin Hibbits  @Function      FM_ConfigResetOnInit
7010aeed3e9SJustin Hibbits 
702*852ba100SJustin Hibbits  @Description   Define whether to reset the FM before initialization.
703*852ba100SJustin Hibbits                 Change the default configuration [DEFAULT_resetOnInit].
7040aeed3e9SJustin Hibbits 
7050aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
7060aeed3e9SJustin Hibbits  @Param[in]     enable              When TRUE, FM will be reset before any initialization.
7070aeed3e9SJustin Hibbits 
7080aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7090aeed3e9SJustin Hibbits 
7100aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
711*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
712*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
7130aeed3e9SJustin Hibbits *//***************************************************************************/
7140aeed3e9SJustin Hibbits t_Error FM_ConfigResetOnInit(t_Handle h_Fm, bool enable);
7150aeed3e9SJustin Hibbits 
7160aeed3e9SJustin Hibbits /**************************************************************************//**
717*852ba100SJustin Hibbits  @Function      FM_ConfigResetOnInitOverrideCallback
7180aeed3e9SJustin Hibbits 
719*852ba100SJustin Hibbits  @Description   Define a special reset of FM before initialization.
720*852ba100SJustin Hibbits                 Change the default configuration [DEFAULT_resetOnInitOverrideCallback].
7210aeed3e9SJustin Hibbits 
7220aeed3e9SJustin Hibbits  @Param[in]     h_Fm                	A handle to an FM Module.
723*852ba100SJustin Hibbits  @Param[in]     f_ResetOnInitOverride   FM specific reset on init user callback routine.
7240aeed3e9SJustin Hibbits 
7250aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7260aeed3e9SJustin Hibbits 
7270aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
728*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
729*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
7300aeed3e9SJustin Hibbits *//***************************************************************************/
731*852ba100SJustin Hibbits t_Error FM_ConfigResetOnInitOverrideCallback(t_Handle h_Fm, t_FmResetOnInitOverrideCallback *f_ResetOnInitOverride);
7320aeed3e9SJustin Hibbits 
7330aeed3e9SJustin Hibbits /**************************************************************************//**
7340aeed3e9SJustin Hibbits  @Function      FM_ConfigTotalFifoSize
7350aeed3e9SJustin Hibbits 
736*852ba100SJustin Hibbits  @Description   Define Total FIFO size for the whole FM.
737*852ba100SJustin Hibbits                 Calling this routine changes the total Fifo size in the internal driver
738*852ba100SJustin Hibbits                 data base from its default configuration [DEFAULT_totalFifoSize]
7390aeed3e9SJustin Hibbits 
7400aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
7410aeed3e9SJustin Hibbits  @Param[in]     totalFifoSize       The selected new value.
7420aeed3e9SJustin Hibbits 
7430aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7440aeed3e9SJustin Hibbits 
7450aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
746*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
747*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
7480aeed3e9SJustin Hibbits *//***************************************************************************/
7490aeed3e9SJustin Hibbits t_Error FM_ConfigTotalFifoSize(t_Handle h_Fm, uint32_t totalFifoSize);
7500aeed3e9SJustin Hibbits 
7510aeed3e9SJustin Hibbits  /**************************************************************************//**
7520aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaCacheOverride
7530aeed3e9SJustin Hibbits 
754*852ba100SJustin Hibbits  @Description   Define cache override mode.
755*852ba100SJustin Hibbits                 Calling this routine changes the cache override mode
756*852ba100SJustin Hibbits                 in the internal driver data base from its default configuration [DEFAULT_cacheOverride]
7570aeed3e9SJustin Hibbits 
7580aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
7590aeed3e9SJustin Hibbits  @Param[in]     cacheOverride   The selected new value.
7600aeed3e9SJustin Hibbits 
7610aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7620aeed3e9SJustin Hibbits 
7630aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
764*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
765*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
7660aeed3e9SJustin Hibbits *//***************************************************************************/
7670aeed3e9SJustin Hibbits t_Error FM_ConfigDmaCacheOverride(t_Handle h_Fm, e_FmDmaCacheOverride cacheOverride);
7680aeed3e9SJustin Hibbits 
7690aeed3e9SJustin Hibbits /**************************************************************************//**
7700aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaAidOverride
7710aeed3e9SJustin Hibbits 
772*852ba100SJustin Hibbits  @Description   Define DMA AID override mode.
773*852ba100SJustin Hibbits                 Calling this routine changes the AID override mode
774*852ba100SJustin Hibbits                 in the internal driver data base from its default configuration  [DEFAULT_aidOverride]
7750aeed3e9SJustin Hibbits 
7760aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
7770aeed3e9SJustin Hibbits  @Param[in]     aidOverride     The selected new value.
7780aeed3e9SJustin Hibbits 
7790aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7800aeed3e9SJustin Hibbits 
7810aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
782*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
783*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
7840aeed3e9SJustin Hibbits *//***************************************************************************/
7850aeed3e9SJustin Hibbits t_Error FM_ConfigDmaAidOverride(t_Handle h_Fm, bool aidOverride);
7860aeed3e9SJustin Hibbits 
7870aeed3e9SJustin Hibbits /**************************************************************************//**
7880aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaAidMode
7890aeed3e9SJustin Hibbits 
790*852ba100SJustin Hibbits  @Description   Define DMA AID  mode.
791*852ba100SJustin Hibbits                 Calling this routine changes the AID  mode in the internal
792*852ba100SJustin Hibbits                 driver data base from its default configuration [DEFAULT_aidMode]
7930aeed3e9SJustin Hibbits 
7940aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
7950aeed3e9SJustin Hibbits  @Param[in]     aidMode         The selected new value.
7960aeed3e9SJustin Hibbits 
7970aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7980aeed3e9SJustin Hibbits 
7990aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
800*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
801*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
8020aeed3e9SJustin Hibbits *//***************************************************************************/
8030aeed3e9SJustin Hibbits t_Error FM_ConfigDmaAidMode(t_Handle h_Fm, e_FmDmaAidMode aidMode);
8040aeed3e9SJustin Hibbits 
8050aeed3e9SJustin Hibbits /**************************************************************************//**
8060aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaAxiDbgNumOfBeats
8070aeed3e9SJustin Hibbits 
808*852ba100SJustin Hibbits  @Description   Define DMA AXI number of beats.
809*852ba100SJustin Hibbits                 Calling this routine changes the AXI number of beats in the internal
810*852ba100SJustin Hibbits                 driver data base from its default configuration [DEFAULT_axiDbgNumOfBeats]
8110aeed3e9SJustin Hibbits 
8120aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
8130aeed3e9SJustin Hibbits  @Param[in]     axiDbgNumOfBeats    The selected new value.
8140aeed3e9SJustin Hibbits 
8150aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8160aeed3e9SJustin Hibbits 
8170aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
818*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
819*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
8200aeed3e9SJustin Hibbits *//***************************************************************************/
8210aeed3e9SJustin Hibbits t_Error FM_ConfigDmaAxiDbgNumOfBeats(t_Handle h_Fm, uint8_t axiDbgNumOfBeats);
8220aeed3e9SJustin Hibbits 
8230aeed3e9SJustin Hibbits /**************************************************************************//**
8240aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaCamNumOfEntries
8250aeed3e9SJustin Hibbits 
826*852ba100SJustin Hibbits  @Description   Define number of CAM entries.
827*852ba100SJustin Hibbits                 Calling this routine changes the number of CAM entries in the internal
828*852ba100SJustin Hibbits                 driver data base from its default configuration [DEFAULT_dmaCamNumOfEntries].
8290aeed3e9SJustin Hibbits 
8300aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
8310aeed3e9SJustin Hibbits  @Param[in]     numOfEntries    The selected new value.
8320aeed3e9SJustin Hibbits 
8330aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8340aeed3e9SJustin Hibbits 
8350aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
836*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
837*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
8380aeed3e9SJustin Hibbits *//***************************************************************************/
8390aeed3e9SJustin Hibbits t_Error FM_ConfigDmaCamNumOfEntries(t_Handle h_Fm, uint8_t numOfEntries);
8400aeed3e9SJustin Hibbits 
8410aeed3e9SJustin Hibbits /**************************************************************************//**
8420aeed3e9SJustin Hibbits  @Function      FM_ConfigEnableCounters
8430aeed3e9SJustin Hibbits 
844*852ba100SJustin Hibbits  @Description   Obsolete, always return E_OK.
8450aeed3e9SJustin Hibbits 
8460aeed3e9SJustin Hibbits  @Param[in]     h_Fm    A handle to an FM Module.
8470aeed3e9SJustin Hibbits 
8480aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8490aeed3e9SJustin Hibbits *//***************************************************************************/
8500aeed3e9SJustin Hibbits t_Error FM_ConfigEnableCounters(t_Handle h_Fm);
8510aeed3e9SJustin Hibbits 
8520aeed3e9SJustin Hibbits /**************************************************************************//**
8530aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaDbgCounter
8540aeed3e9SJustin Hibbits 
855*852ba100SJustin Hibbits  @Description   Define DMA debug counter.
856*852ba100SJustin Hibbits                 Calling this routine changes the number of the DMA debug counter in the internal
857*852ba100SJustin Hibbits                 driver data base from its default configuration [DEFAULT_dmaDbgCntMode].
8580aeed3e9SJustin Hibbits 
8590aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
8600aeed3e9SJustin Hibbits  @Param[in]     fmDmaDbgCntMode     An enum selecting the debug counter mode.
8610aeed3e9SJustin Hibbits 
8620aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8630aeed3e9SJustin Hibbits 
8640aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
865*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
866*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
8670aeed3e9SJustin Hibbits *//***************************************************************************/
8680aeed3e9SJustin Hibbits t_Error FM_ConfigDmaDbgCounter(t_Handle h_Fm, e_FmDmaDbgCntMode fmDmaDbgCntMode);
8690aeed3e9SJustin Hibbits 
8700aeed3e9SJustin Hibbits /**************************************************************************//**
8710aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaStopOnBusErr
8720aeed3e9SJustin Hibbits 
873*852ba100SJustin Hibbits  @Description   Define bus error behavior.
874*852ba100SJustin Hibbits                 Calling this routine changes the bus error behavior definition
875*852ba100SJustin Hibbits                 in the internal driver data base from its default
876*852ba100SJustin Hibbits                 configuration [DEFAULT_dmaStopOnBusError].
8770aeed3e9SJustin Hibbits 
8780aeed3e9SJustin Hibbits  @Param[in]     h_Fm    A handle to an FM Module.
8790aeed3e9SJustin Hibbits  @Param[in]     stop    TRUE to stop on bus error, FALSE to continue.
8800aeed3e9SJustin Hibbits 
8810aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8820aeed3e9SJustin Hibbits 
8830aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
8840aeed3e9SJustin Hibbits                 Only if bus error is enabled.
885*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
886*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
8870aeed3e9SJustin Hibbits *//***************************************************************************/
8880aeed3e9SJustin Hibbits t_Error FM_ConfigDmaStopOnBusErr(t_Handle h_Fm, bool stop);
8890aeed3e9SJustin Hibbits 
8900aeed3e9SJustin Hibbits /**************************************************************************//**
8910aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaEmergency
8920aeed3e9SJustin Hibbits 
893*852ba100SJustin Hibbits  @Description   Define DMA emergency.
894*852ba100SJustin Hibbits                 Calling this routine changes the DMA emergency definition
895*852ba100SJustin Hibbits                 in the internal driver data base from its default
896*852ba100SJustin Hibbits                 configuration where's it's disabled.
8970aeed3e9SJustin Hibbits 
8980aeed3e9SJustin Hibbits  @Param[in]     h_Fm        A handle to an FM Module.
8990aeed3e9SJustin Hibbits  @Param[in]     p_Emergency An OR mask of all required options.
9000aeed3e9SJustin Hibbits 
9010aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
9020aeed3e9SJustin Hibbits 
9030aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
904*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
905*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
9060aeed3e9SJustin Hibbits *//***************************************************************************/
9070aeed3e9SJustin Hibbits t_Error FM_ConfigDmaEmergency(t_Handle h_Fm, t_FmDmaEmergency *p_Emergency);
9080aeed3e9SJustin Hibbits 
9090aeed3e9SJustin Hibbits /**************************************************************************//**
9100aeed3e9SJustin Hibbits  @Function      FM_ConfigDmaErr
9110aeed3e9SJustin Hibbits 
912*852ba100SJustin Hibbits  @Description   DMA error treatment.
913*852ba100SJustin Hibbits                 Calling this routine changes the DMA error treatment
914*852ba100SJustin Hibbits                 in the internal driver data base from its default
915*852ba100SJustin Hibbits                 configuration [DEFAULT_dmaErr].
9160aeed3e9SJustin Hibbits 
9170aeed3e9SJustin Hibbits  @Param[in]     h_Fm    A handle to an FM Module.
9180aeed3e9SJustin Hibbits  @Param[in]     dmaErr  The selected new choice.
9190aeed3e9SJustin Hibbits 
9200aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
9210aeed3e9SJustin Hibbits 
9220aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
923*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
924*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
9250aeed3e9SJustin Hibbits *//***************************************************************************/
9260aeed3e9SJustin Hibbits t_Error FM_ConfigDmaErr(t_Handle h_Fm, e_FmDmaErr dmaErr);
9270aeed3e9SJustin Hibbits 
9280aeed3e9SJustin Hibbits /**************************************************************************//**
9290aeed3e9SJustin Hibbits  @Function      FM_ConfigCatastrophicErr
9300aeed3e9SJustin Hibbits 
931*852ba100SJustin Hibbits  @Description   Define FM behavior on catastrophic error.
932*852ba100SJustin Hibbits                 Calling this routine changes the FM behavior on catastrophic
933*852ba100SJustin Hibbits                 error in the internal driver data base from its default
934*852ba100SJustin Hibbits                 [DEFAULT_catastrophicErr].
9350aeed3e9SJustin Hibbits 
9360aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
9370aeed3e9SJustin Hibbits  @Param[in]     catastrophicErr     The selected new choice.
9380aeed3e9SJustin Hibbits 
9390aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
9400aeed3e9SJustin Hibbits 
9410aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
942*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
943*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
9440aeed3e9SJustin Hibbits *//***************************************************************************/
9450aeed3e9SJustin Hibbits t_Error FM_ConfigCatastrophicErr(t_Handle h_Fm, e_FmCatastrophicErr catastrophicErr);
9460aeed3e9SJustin Hibbits 
9470aeed3e9SJustin Hibbits /**************************************************************************//**
9480aeed3e9SJustin Hibbits  @Function      FM_ConfigEnableMuramTestMode
9490aeed3e9SJustin Hibbits 
950*852ba100SJustin Hibbits  @Description   Enable MURAM test mode.
951*852ba100SJustin Hibbits                 Calling this routine changes the internal driver data base
9520aeed3e9SJustin Hibbits                 from its default selection of test mode where it's disabled.
953*852ba100SJustin Hibbits                 This routine is only avaiable on old FM revisions (FMan v2).
9540aeed3e9SJustin Hibbits 
9550aeed3e9SJustin Hibbits  @Param[in]     h_Fm    A handle to an FM Module.
9560aeed3e9SJustin Hibbits 
9570aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
9580aeed3e9SJustin Hibbits 
9590aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
960*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
961*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
9620aeed3e9SJustin Hibbits *//***************************************************************************/
9630aeed3e9SJustin Hibbits t_Error FM_ConfigEnableMuramTestMode(t_Handle h_Fm);
9640aeed3e9SJustin Hibbits 
9650aeed3e9SJustin Hibbits /**************************************************************************//**
9660aeed3e9SJustin Hibbits  @Function      FM_ConfigEnableIramTestMode
9670aeed3e9SJustin Hibbits 
968*852ba100SJustin Hibbits  @Description   Enable IRAM test mode.
969*852ba100SJustin Hibbits                 Calling this routine changes the internal driver data base
9700aeed3e9SJustin Hibbits                 from its default selection of test mode where it's disabled.
971*852ba100SJustin Hibbits                 This routine is only avaiable on old FM revisions (FMan v2).
9720aeed3e9SJustin Hibbits 
9730aeed3e9SJustin Hibbits  @Param[in]     h_Fm    A handle to an FM Module.
9740aeed3e9SJustin Hibbits 
9750aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
9760aeed3e9SJustin Hibbits 
9770aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
978*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
979*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
9800aeed3e9SJustin Hibbits *//***************************************************************************/
9810aeed3e9SJustin Hibbits t_Error FM_ConfigEnableIramTestMode(t_Handle h_Fm);
9820aeed3e9SJustin Hibbits 
9830aeed3e9SJustin Hibbits /**************************************************************************//**
9840aeed3e9SJustin Hibbits  @Function      FM_ConfigHaltOnExternalActivation
9850aeed3e9SJustin Hibbits 
986*852ba100SJustin Hibbits  @Description   Define FM behavior on external halt activation.
987*852ba100SJustin Hibbits                 Calling this routine changes the FM behavior on external halt
988*852ba100SJustin Hibbits                 activation in the internal driver data base from its default
989*852ba100SJustin Hibbits                 [DEFAULT_haltOnExternalActivation].
9900aeed3e9SJustin Hibbits 
9910aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
9920aeed3e9SJustin Hibbits  @Param[in]     enable          TRUE to enable halt on external halt
9930aeed3e9SJustin Hibbits                                 activation.
9940aeed3e9SJustin Hibbits 
9950aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
9960aeed3e9SJustin Hibbits 
9970aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
998*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
999*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
10000aeed3e9SJustin Hibbits *//***************************************************************************/
10010aeed3e9SJustin Hibbits t_Error FM_ConfigHaltOnExternalActivation(t_Handle h_Fm, bool enable);
10020aeed3e9SJustin Hibbits 
10030aeed3e9SJustin Hibbits /**************************************************************************//**
10040aeed3e9SJustin Hibbits  @Function      FM_ConfigHaltOnUnrecoverableEccError
10050aeed3e9SJustin Hibbits 
1006*852ba100SJustin Hibbits  @Description   Define FM behavior on external halt activation.
1007*852ba100SJustin Hibbits                 Calling this routine changes the FM behavior on unrecoverable
1008*852ba100SJustin Hibbits                 ECC error in the internal driver data base from its default
1009*852ba100SJustin Hibbits                 [DEFAULT_haltOnUnrecoverableEccError].
1010*852ba100SJustin Hibbits                 This routine is only avaiable on old FM revisions (FMan v2).
10110aeed3e9SJustin Hibbits 
10120aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
10130aeed3e9SJustin Hibbits  @Param[in]     enable          TRUE to enable halt on unrecoverable Ecc error
10140aeed3e9SJustin Hibbits 
10150aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
10160aeed3e9SJustin Hibbits 
10170aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1018*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1019*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
10200aeed3e9SJustin Hibbits *//***************************************************************************/
10210aeed3e9SJustin Hibbits t_Error FM_ConfigHaltOnUnrecoverableEccError(t_Handle h_Fm, bool enable);
10220aeed3e9SJustin Hibbits 
10230aeed3e9SJustin Hibbits /**************************************************************************//**
10240aeed3e9SJustin Hibbits  @Function      FM_ConfigException
10250aeed3e9SJustin Hibbits 
1026*852ba100SJustin Hibbits  @Description   Define FM exceptions.
1027*852ba100SJustin Hibbits                 Calling this routine changes the exceptions defaults in the
1028*852ba100SJustin Hibbits                 internal driver data base where all exceptions are enabled.
10290aeed3e9SJustin Hibbits 
10300aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
10310aeed3e9SJustin Hibbits  @Param[in]     exception       The exception to be selected.
10320aeed3e9SJustin Hibbits  @Param[in]     enable          TRUE to enable interrupt, FALSE to mask it.
10330aeed3e9SJustin Hibbits 
10340aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
10350aeed3e9SJustin Hibbits 
10360aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1037*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1038*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
10390aeed3e9SJustin Hibbits *//***************************************************************************/
10400aeed3e9SJustin Hibbits t_Error FM_ConfigException(t_Handle h_Fm, e_FmExceptions exception, bool enable);
10410aeed3e9SJustin Hibbits 
10420aeed3e9SJustin Hibbits /**************************************************************************//**
10430aeed3e9SJustin Hibbits  @Function      FM_ConfigExternalEccRamsEnable
10440aeed3e9SJustin Hibbits 
1045*852ba100SJustin Hibbits  @Description   Select external ECC enabling.
1046*852ba100SJustin Hibbits                 Calling this routine changes the ECC enabling control in the internal
1047*852ba100SJustin Hibbits                 driver data base from its default [DEFAULT_externalEccRamsEnable].
1048*852ba100SJustin Hibbits                 When this option is enabled Rams ECC enabling is not effected
1049*852ba100SJustin Hibbits                 by FM_EnableRamsEcc/FM_DisableRamsEcc, but by a JTAG.
10500aeed3e9SJustin Hibbits 
10510aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
10520aeed3e9SJustin Hibbits  @Param[in]     enable          TRUE to enable this option.
10530aeed3e9SJustin Hibbits 
10540aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
10550aeed3e9SJustin Hibbits 
10560aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1057*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1058*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
10590aeed3e9SJustin Hibbits *//***************************************************************************/
10600aeed3e9SJustin Hibbits t_Error FM_ConfigExternalEccRamsEnable(t_Handle h_Fm, bool enable);
10610aeed3e9SJustin Hibbits 
10620aeed3e9SJustin Hibbits /**************************************************************************//**
10630aeed3e9SJustin Hibbits  @Function      FM_ConfigTnumAgingPeriod
10640aeed3e9SJustin Hibbits 
1065*852ba100SJustin Hibbits  @Description   Define Tnum aging period.
1066*852ba100SJustin Hibbits                 Calling this routine changes the Tnum aging of dequeue TNUMs
1067*852ba100SJustin Hibbits                 in the QMI in the internal driver data base from its default
1068*852ba100SJustin Hibbits                 [DEFAULT_tnumAgingPeriod].
10690aeed3e9SJustin Hibbits 
10700aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
10710aeed3e9SJustin Hibbits  @Param[in]     tnumAgingPeriod     Tnum Aging Period in microseconds.
10720aeed3e9SJustin Hibbits                                     Note that period is recalculated in units of
10730aeed3e9SJustin Hibbits                                     64 FM clocks. Driver will pick the closest
10740aeed3e9SJustin Hibbits                                     possible period.
10750aeed3e9SJustin Hibbits 
10760aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
10770aeed3e9SJustin Hibbits 
10780aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1079*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1080*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1081*852ba100SJustin Hibbits                 NOTE that if some MAC is configured for PFC, '0' value is NOT
1082*852ba100SJustin Hibbits                 allowed.
10830aeed3e9SJustin Hibbits *//***************************************************************************/
10840aeed3e9SJustin Hibbits t_Error FM_ConfigTnumAgingPeriod(t_Handle h_Fm, uint16_t tnumAgingPeriod);
10850aeed3e9SJustin Hibbits 
1086*852ba100SJustin Hibbits /**************************************************************************//*
1087*852ba100SJustin Hibbits  @Function      FM_ConfigDmaEmergencySmoother
1088*852ba100SJustin Hibbits 
1089*852ba100SJustin Hibbits  @Description   Define DMA emergency smoother.
1090*852ba100SJustin Hibbits                 Calling this routine changes the definition of the minimum
1091*852ba100SJustin Hibbits                 amount of DATA beats transferred on the AXI READ and WRITE
1092*852ba100SJustin Hibbits                 ports before lowering the emergency level.
1093*852ba100SJustin Hibbits                 By default smoother is disabled.
1094*852ba100SJustin Hibbits 
1095*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1096*852ba100SJustin Hibbits  @Param[in]     emergencyCnt    emergency switching counter.
1097*852ba100SJustin Hibbits 
1098*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1099*852ba100SJustin Hibbits 
1100*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1101*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1102*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1103*852ba100SJustin Hibbits *//***************************************************************************/
1104*852ba100SJustin Hibbits t_Error FM_ConfigDmaEmergencySmoother(t_Handle h_Fm, uint32_t emergencyCnt);
1105*852ba100SJustin Hibbits 
1106*852ba100SJustin Hibbits /**************************************************************************//*
1107*852ba100SJustin Hibbits  @Function      FM_ConfigThresholds
1108*852ba100SJustin Hibbits 
1109*852ba100SJustin Hibbits  @Description   Calling this routine changes the internal driver data base
1110*852ba100SJustin Hibbits                 from its default FM threshold configuration:
1111*852ba100SJustin Hibbits                     dispLimit:    [DEFAULT_dispLimit]
1112*852ba100SJustin Hibbits                     prsDispTh:    [DEFAULT_prsDispTh]
1113*852ba100SJustin Hibbits                     plcrDispTh:   [DEFAULT_plcrDispTh]
1114*852ba100SJustin Hibbits                     kgDispTh:     [DEFAULT_kgDispTh]
1115*852ba100SJustin Hibbits                     bmiDispTh:    [DEFAULT_bmiDispTh]
1116*852ba100SJustin Hibbits                     qmiEnqDispTh: [DEFAULT_qmiEnqDispTh]
1117*852ba100SJustin Hibbits                     qmiDeqDispTh: [DEFAULT_qmiDeqDispTh]
1118*852ba100SJustin Hibbits                     fmCtl1DispTh: [DEFAULT_fmCtl1DispTh]
1119*852ba100SJustin Hibbits                     fmCtl2DispTh: [DEFAULT_fmCtl2DispTh]
1120*852ba100SJustin Hibbits 
1121*852ba100SJustin Hibbits 
1122*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1123*852ba100SJustin Hibbits  @Param[in]     p_FmThresholds  A structure of threshold parameters.
1124*852ba100SJustin Hibbits 
1125*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1126*852ba100SJustin Hibbits 
1127*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1128*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1129*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1130*852ba100SJustin Hibbits *//***************************************************************************/
1131*852ba100SJustin Hibbits t_Error FM_ConfigThresholds(t_Handle h_Fm, t_FmThresholds *p_FmThresholds);
1132*852ba100SJustin Hibbits 
1133*852ba100SJustin Hibbits /**************************************************************************//*
1134*852ba100SJustin Hibbits  @Function      FM_ConfigDmaSosEmergencyThreshold
1135*852ba100SJustin Hibbits 
1136*852ba100SJustin Hibbits  @Description   Calling this routine changes the internal driver data base
1137*852ba100SJustin Hibbits                 from its default dma SOS emergency configuration [DEFAULT_dmaSosEmergency]
1138*852ba100SJustin Hibbits 
1139*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1140*852ba100SJustin Hibbits  @Param[in]     dmaSosEmergency     The selected new value.
1141*852ba100SJustin Hibbits 
1142*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1143*852ba100SJustin Hibbits 
1144*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1145*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1146*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1147*852ba100SJustin Hibbits *//***************************************************************************/
1148*852ba100SJustin Hibbits t_Error FM_ConfigDmaSosEmergencyThreshold(t_Handle h_Fm, uint32_t dmaSosEmergency);
1149*852ba100SJustin Hibbits 
1150*852ba100SJustin Hibbits /**************************************************************************//*
1151*852ba100SJustin Hibbits  @Function      FM_ConfigDmaWriteBufThresholds
1152*852ba100SJustin Hibbits 
1153*852ba100SJustin Hibbits  @Description   Calling this routine changes the internal driver data base
1154*852ba100SJustin Hibbits                 from its default configuration of DMA write buffer threshold
1155*852ba100SJustin Hibbits                 assertEmergency: [DEFAULT_dmaWriteIntBufLow]
1156*852ba100SJustin Hibbits                 clearEmergency:  [DEFAULT_dmaWriteIntBufHigh]
1157*852ba100SJustin Hibbits                 This routine is only avaiable on old FM revisions (FMan v2).
1158*852ba100SJustin Hibbits 
1159*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1160*852ba100SJustin Hibbits  @Param[in]     p_FmDmaThresholds   A structure of thresholds to define emergency behavior -
1161*852ba100SJustin Hibbits                                     When 'assertEmergency' value is reached, emergency is asserted,
1162*852ba100SJustin Hibbits                                     then it is held until 'clearEmergency' value is reached.
1163*852ba100SJustin Hibbits 
1164*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1165*852ba100SJustin Hibbits 
1166*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1167*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1168*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1169*852ba100SJustin Hibbits *//***************************************************************************/
1170*852ba100SJustin Hibbits t_Error FM_ConfigDmaWriteBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds);
1171*852ba100SJustin Hibbits 
1172*852ba100SJustin Hibbits  /**************************************************************************//*
1173*852ba100SJustin Hibbits  @Function      FM_ConfigDmaCommQThresholds
1174*852ba100SJustin Hibbits 
1175*852ba100SJustin Hibbits  @Description   Calling this routine changes the internal driver data base
1176*852ba100SJustin Hibbits                 from its default configuration of DMA command queue threshold
1177*852ba100SJustin Hibbits                 assertEmergency: [DEFAULT_dmaCommQLow]
1178*852ba100SJustin Hibbits                 clearEmergency:  [DEFAULT_dmaCommQHigh]
1179*852ba100SJustin Hibbits 
1180*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1181*852ba100SJustin Hibbits  @Param[in]     p_FmDmaThresholds   A structure of thresholds to define emergency behavior -
1182*852ba100SJustin Hibbits                                     When 'assertEmergency' value is reached, emergency is asserted,
1183*852ba100SJustin Hibbits                                     then it is held until 'clearEmergency' value is reached..
1184*852ba100SJustin Hibbits 
1185*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1186*852ba100SJustin Hibbits 
1187*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1188*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1189*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1190*852ba100SJustin Hibbits *//***************************************************************************/
1191*852ba100SJustin Hibbits t_Error FM_ConfigDmaCommQThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds);
1192*852ba100SJustin Hibbits 
1193*852ba100SJustin Hibbits /**************************************************************************//*
1194*852ba100SJustin Hibbits  @Function      FM_ConfigDmaReadBufThresholds
1195*852ba100SJustin Hibbits 
1196*852ba100SJustin Hibbits  @Description   Calling this routine changes the internal driver data base
1197*852ba100SJustin Hibbits                 from its default configuration of DMA read buffer threshold
1198*852ba100SJustin Hibbits                 assertEmergency: [DEFAULT_dmaReadIntBufLow]
1199*852ba100SJustin Hibbits                 clearEmergency:  [DEFAULT_dmaReadIntBufHigh]
1200*852ba100SJustin Hibbits                 This routine is only avaiable on old FM revisions (FMan v2).
1201*852ba100SJustin Hibbits 
1202*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1203*852ba100SJustin Hibbits  @Param[in]     p_FmDmaThresholds   A structure of thresholds to define emergency behavior -
1204*852ba100SJustin Hibbits                                     When 'assertEmergency' value is reached, emergency is asserted,
1205*852ba100SJustin Hibbits                                     then it is held until 'clearEmergency' value is reached..
1206*852ba100SJustin Hibbits 
1207*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1208*852ba100SJustin Hibbits 
1209*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1210*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1211*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1212*852ba100SJustin Hibbits *//***************************************************************************/
1213*852ba100SJustin Hibbits t_Error FM_ConfigDmaReadBufThresholds(t_Handle h_Fm, t_FmDmaThresholds *p_FmDmaThresholds);
1214*852ba100SJustin Hibbits 
1215*852ba100SJustin Hibbits /**************************************************************************//*
1216*852ba100SJustin Hibbits  @Function      FM_ConfigDmaWatchdog
1217*852ba100SJustin Hibbits 
1218*852ba100SJustin Hibbits  @Description   Calling this routine changes the internal driver data base
1219*852ba100SJustin Hibbits                 from its default watchdog configuration, which is disabled
1220*852ba100SJustin Hibbits                 [DEFAULT_dmaWatchdog].
1221*852ba100SJustin Hibbits 
1222*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1223*852ba100SJustin Hibbits  @Param[in]     watchDogValue   The selected new value - in microseconds.
1224*852ba100SJustin Hibbits 
1225*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1226*852ba100SJustin Hibbits 
1227*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1228*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1229*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1230*852ba100SJustin Hibbits *//***************************************************************************/
1231*852ba100SJustin Hibbits t_Error FM_ConfigDmaWatchdog(t_Handle h_Fm, uint32_t watchDogValue);
1232*852ba100SJustin Hibbits 
12330aeed3e9SJustin Hibbits /** @} */ /* end of FM_advanced_init_grp group */
12340aeed3e9SJustin Hibbits /** @} */ /* end of FM_init_grp group */
12350aeed3e9SJustin Hibbits 
12360aeed3e9SJustin Hibbits 
12370aeed3e9SJustin Hibbits /**************************************************************************//**
12380aeed3e9SJustin Hibbits  @Group         FM_runtime_control_grp FM Runtime Control Unit
12390aeed3e9SJustin Hibbits 
12400aeed3e9SJustin Hibbits  @Description   FM Runtime control unit API functions, definitions and enums.
1241*852ba100SJustin Hibbits                 The FM driver provides a set of control routines.
12420aeed3e9SJustin Hibbits                 These routines may only be called after the module was fully
12430aeed3e9SJustin Hibbits                 initialized (both configuration and initialization routines were
12440aeed3e9SJustin Hibbits                 called). They are typically used to get information from hardware
12450aeed3e9SJustin Hibbits                 (status, counters/statistics, revision etc.), to modify a current
12460aeed3e9SJustin Hibbits                 state or to force/enable a required action. Run-time control may
12470aeed3e9SJustin Hibbits                 be called whenever necessary and as many times as needed.
12480aeed3e9SJustin Hibbits  @{
12490aeed3e9SJustin Hibbits *//***************************************************************************/
12500aeed3e9SJustin Hibbits 
12510aeed3e9SJustin Hibbits /**************************************************************************//**
12520aeed3e9SJustin Hibbits  @Collection   General FM defines.
12530aeed3e9SJustin Hibbits *//***************************************************************************/
12540aeed3e9SJustin Hibbits #define FM_MAX_NUM_OF_VALID_PORTS   (FM_MAX_NUM_OF_OH_PORTS +       \
12550aeed3e9SJustin Hibbits                                      FM_MAX_NUM_OF_1G_RX_PORTS +    \
12560aeed3e9SJustin Hibbits                                      FM_MAX_NUM_OF_10G_RX_PORTS +   \
12570aeed3e9SJustin Hibbits                                      FM_MAX_NUM_OF_1G_TX_PORTS +    \
1258*852ba100SJustin Hibbits                                      FM_MAX_NUM_OF_10G_TX_PORTS)      /**< Number of available FM ports */
12590aeed3e9SJustin Hibbits /* @} */
12600aeed3e9SJustin Hibbits 
1261*852ba100SJustin Hibbits /**************************************************************************//*
1262*852ba100SJustin Hibbits  @Description   A Structure for Port bandwidth requirement. Port is identified
12630aeed3e9SJustin Hibbits                 by type and relative id.
12640aeed3e9SJustin Hibbits *//***************************************************************************/
12650aeed3e9SJustin Hibbits typedef struct t_FmPortBandwidth {
12660aeed3e9SJustin Hibbits     e_FmPortType        type;           /**< FM port type */
12670aeed3e9SJustin Hibbits     uint8_t             relativePortId; /**< Type relative port id */
12680aeed3e9SJustin Hibbits     uint8_t             bandwidth;      /**< bandwidth - (in term of percents) */
12690aeed3e9SJustin Hibbits } t_FmPortBandwidth;
12700aeed3e9SJustin Hibbits 
1271*852ba100SJustin Hibbits /**************************************************************************//*
12720aeed3e9SJustin Hibbits  @Description   A Structure containing an array of Port bandwidth requirements.
12730aeed3e9SJustin Hibbits                 The user should state the ports requiring bandwidth in terms of
12740aeed3e9SJustin Hibbits                 percentage - i.e. all port's bandwidths in the array must add
12750aeed3e9SJustin Hibbits                 up to 100.
12760aeed3e9SJustin Hibbits *//***************************************************************************/
12770aeed3e9SJustin Hibbits typedef struct t_FmPortsBandwidthParams {
1278*852ba100SJustin Hibbits     uint8_t             numOfPorts;         /**< The number of relevant ports, which is the
1279*852ba100SJustin Hibbits                                                  number of valid entries in the array below */
12800aeed3e9SJustin Hibbits     t_FmPortBandwidth   portsBandwidths[FM_MAX_NUM_OF_VALID_PORTS];
12810aeed3e9SJustin Hibbits                                             /**< for each port, it's bandwidth (all port's
12820aeed3e9SJustin Hibbits                                                  bandwidths must add up to 100.*/
12830aeed3e9SJustin Hibbits } t_FmPortsBandwidthParams;
12840aeed3e9SJustin Hibbits 
12850aeed3e9SJustin Hibbits /**************************************************************************//**
12860aeed3e9SJustin Hibbits  @Description   DMA Emergency control on MURAM
12870aeed3e9SJustin Hibbits *//***************************************************************************/
12880aeed3e9SJustin Hibbits typedef enum e_FmDmaMuramPort {
12890aeed3e9SJustin Hibbits     e_FM_DMA_MURAM_PORT_WRITE,              /**< MURAM write port */
12900aeed3e9SJustin Hibbits     e_FM_DMA_MURAM_PORT_READ                /**< MURAM read port */
12910aeed3e9SJustin Hibbits } e_FmDmaMuramPort;
12920aeed3e9SJustin Hibbits 
12930aeed3e9SJustin Hibbits /**************************************************************************//**
1294*852ba100SJustin Hibbits  @Description   Enum for defining FM counters
12950aeed3e9SJustin Hibbits *//***************************************************************************/
12960aeed3e9SJustin Hibbits typedef enum e_FmCounters {
12970aeed3e9SJustin Hibbits     e_FM_COUNTERS_ENQ_TOTAL_FRAME = 0,              /**< QMI total enqueued frames counter */
12980aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_TOTAL_FRAME,                  /**< QMI total dequeued frames counter */
12990aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_0,                            /**< QMI 0 frames from QMan counter */
13000aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_1,                            /**< QMI 1 frames from QMan counter */
13010aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_2,                            /**< QMI 2 frames from QMan counter */
13020aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_3,                            /**< QMI 3 frames from QMan counter */
13030aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_FROM_DEFAULT,                 /**< QMI dequeue from default queue counter */
13040aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_FROM_CONTEXT,                 /**< QMI dequeue from FQ context counter */
13050aeed3e9SJustin Hibbits     e_FM_COUNTERS_DEQ_FROM_FD,                      /**< QMI dequeue from FD command field counter */
1306*852ba100SJustin Hibbits     e_FM_COUNTERS_DEQ_CONFIRM                       /**< QMI dequeue confirm counter */
13070aeed3e9SJustin Hibbits } e_FmCounters;
13080aeed3e9SJustin Hibbits 
13090aeed3e9SJustin Hibbits /**************************************************************************//**
1310*852ba100SJustin Hibbits  @Description   A Structure for returning FM revision information
13110aeed3e9SJustin Hibbits *//***************************************************************************/
13120aeed3e9SJustin Hibbits typedef struct t_FmRevisionInfo {
13130aeed3e9SJustin Hibbits     uint8_t         majorRev;               /**< Major revision */
13140aeed3e9SJustin Hibbits     uint8_t         minorRev;               /**< Minor revision */
13150aeed3e9SJustin Hibbits } t_FmRevisionInfo;
13160aeed3e9SJustin Hibbits 
13170aeed3e9SJustin Hibbits /**************************************************************************//**
1318*852ba100SJustin Hibbits  @Description   A Structure for returning FM ctrl code revision information
1319*852ba100SJustin Hibbits *//***************************************************************************/
1320*852ba100SJustin Hibbits typedef struct t_FmCtrlCodeRevisionInfo {
1321*852ba100SJustin Hibbits     uint16_t        packageRev;             /**< Package revision */
1322*852ba100SJustin Hibbits     uint8_t         majorRev;               /**< Major revision */
1323*852ba100SJustin Hibbits     uint8_t         minorRev;               /**< Minor revision */
1324*852ba100SJustin Hibbits } t_FmCtrlCodeRevisionInfo;
1325*852ba100SJustin Hibbits 
1326*852ba100SJustin Hibbits /**************************************************************************//**
1327*852ba100SJustin Hibbits  @Description   A Structure for defining DMA status
13280aeed3e9SJustin Hibbits *//***************************************************************************/
13290aeed3e9SJustin Hibbits typedef struct t_FmDmaStatus {
13300aeed3e9SJustin Hibbits     bool    cmqNotEmpty;            /**< Command queue is not empty */
13310aeed3e9SJustin Hibbits     bool    busError;               /**< Bus error occurred */
1332*852ba100SJustin Hibbits     bool    readBufEccError;        /**< Double ECC error on buffer Read (Valid for FM rev < 6)*/
1333*852ba100SJustin Hibbits     bool    writeBufEccSysError;    /**< Double ECC error on buffer write from system side (Valid for FM rev < 6)*/
1334*852ba100SJustin Hibbits     bool    writeBufEccFmError;     /**< Double ECC error on buffer write from FM side (Valid for FM rev < 6) */
1335*852ba100SJustin Hibbits     bool    singlePortEccError;     /**< Single Port ECC error from FM side (Valid for FM rev >= 6)*/
13360aeed3e9SJustin Hibbits } t_FmDmaStatus;
13370aeed3e9SJustin Hibbits 
1338*852ba100SJustin Hibbits /**************************************************************************//**
1339*852ba100SJustin Hibbits  @Description   A Structure for obtaining FM controller monitor values
1340*852ba100SJustin Hibbits *//***************************************************************************/
1341*852ba100SJustin Hibbits typedef struct t_FmCtrlMon {
1342*852ba100SJustin Hibbits     uint8_t percentCnt[2];          /**< Percentage value */
1343*852ba100SJustin Hibbits } t_FmCtrlMon;
1344*852ba100SJustin Hibbits 
13450aeed3e9SJustin Hibbits 
13460aeed3e9SJustin Hibbits #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
13470aeed3e9SJustin Hibbits /**************************************************************************//**
13480aeed3e9SJustin Hibbits  @Function      FM_DumpRegs
13490aeed3e9SJustin Hibbits 
13500aeed3e9SJustin Hibbits  @Description   Dumps all FM registers
13510aeed3e9SJustin Hibbits 
13520aeed3e9SJustin Hibbits  @Param[in]     h_Fm      A handle to an FM Module.
13530aeed3e9SJustin Hibbits 
13540aeed3e9SJustin Hibbits  @Return        E_OK on success;
13550aeed3e9SJustin Hibbits 
1356*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
13570aeed3e9SJustin Hibbits *//***************************************************************************/
13580aeed3e9SJustin Hibbits t_Error FM_DumpRegs(t_Handle h_Fm);
13590aeed3e9SJustin Hibbits #endif /* (defined(DEBUG_ERRORS) && ... */
13600aeed3e9SJustin Hibbits 
13610aeed3e9SJustin Hibbits /**************************************************************************//**
13620aeed3e9SJustin Hibbits  @Function      FM_SetException
13630aeed3e9SJustin Hibbits 
13640aeed3e9SJustin Hibbits  @Description   Calling this routine enables/disables the specified exception.
13650aeed3e9SJustin Hibbits 
13660aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
13670aeed3e9SJustin Hibbits  @Param[in]     exception       The exception to be selected.
13680aeed3e9SJustin Hibbits  @Param[in]     enable          TRUE to enable interrupt, FALSE to mask it.
13690aeed3e9SJustin Hibbits 
13700aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
13710aeed3e9SJustin Hibbits 
13720aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1373*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1374*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
13750aeed3e9SJustin Hibbits *//***************************************************************************/
13760aeed3e9SJustin Hibbits t_Error FM_SetException(t_Handle h_Fm, e_FmExceptions exception, bool enable);
13770aeed3e9SJustin Hibbits 
13780aeed3e9SJustin Hibbits /**************************************************************************//**
13790aeed3e9SJustin Hibbits  @Function      FM_EnableRamsEcc
13800aeed3e9SJustin Hibbits 
13810aeed3e9SJustin Hibbits  @Description   Enables ECC mechanism for all the different FM RAM's; E.g. IRAM,
13820aeed3e9SJustin Hibbits                 MURAM, Parser, Keygen, Policer, etc.
13830aeed3e9SJustin Hibbits                 Note:
13840aeed3e9SJustin Hibbits                 If FM_ConfigExternalEccRamsEnable was called to enable external
13850aeed3e9SJustin Hibbits                 setting of ECC, this routine effects IRAM ECC only.
13860aeed3e9SJustin Hibbits                 This routine is also called by the driver if an ECC exception is
13870aeed3e9SJustin Hibbits                 enabled.
13880aeed3e9SJustin Hibbits 
13890aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
13900aeed3e9SJustin Hibbits 
13910aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
13920aeed3e9SJustin Hibbits 
13930aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1394*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1395*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
13960aeed3e9SJustin Hibbits *//***************************************************************************/
13970aeed3e9SJustin Hibbits t_Error FM_EnableRamsEcc(t_Handle h_Fm);
13980aeed3e9SJustin Hibbits 
13990aeed3e9SJustin Hibbits /**************************************************************************//**
14000aeed3e9SJustin Hibbits  @Function      FM_DisableRamsEcc
14010aeed3e9SJustin Hibbits 
14020aeed3e9SJustin Hibbits  @Description   Disables ECC mechanism for all the different FM RAM's; E.g. IRAM,
14030aeed3e9SJustin Hibbits                 MURAM, Parser, Keygen, Policer, etc.
14040aeed3e9SJustin Hibbits                 Note:
14050aeed3e9SJustin Hibbits                 If FM_ConfigExternalEccRamsEnable was called to enable external
14060aeed3e9SJustin Hibbits                 setting of ECC, this routine effects IRAM ECC only.
14070aeed3e9SJustin Hibbits                 In opposed to FM_EnableRamsEcc, this routine must be called
14080aeed3e9SJustin Hibbits                 explicitly to disable all Rams ECC.
14090aeed3e9SJustin Hibbits 
14100aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
14110aeed3e9SJustin Hibbits 
14120aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
14130aeed3e9SJustin Hibbits 
14140aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Config() and before FM_Init().
1415*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1416*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
14170aeed3e9SJustin Hibbits *//***************************************************************************/
14180aeed3e9SJustin Hibbits t_Error FM_DisableRamsEcc(t_Handle h_Fm);
14190aeed3e9SJustin Hibbits 
14200aeed3e9SJustin Hibbits /**************************************************************************//**
14210aeed3e9SJustin Hibbits  @Function      FM_GetRevision
14220aeed3e9SJustin Hibbits 
14230aeed3e9SJustin Hibbits  @Description   Returns the FM revision
14240aeed3e9SJustin Hibbits 
14250aeed3e9SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
14260aeed3e9SJustin Hibbits  @Param[out]    p_FmRevisionInfo    A structure of revision information parameters.
14270aeed3e9SJustin Hibbits 
14280aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
14290aeed3e9SJustin Hibbits 
14300aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
14310aeed3e9SJustin Hibbits *//***************************************************************************/
14320aeed3e9SJustin Hibbits t_Error  FM_GetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo);
14330aeed3e9SJustin Hibbits 
14340aeed3e9SJustin Hibbits /**************************************************************************//**
1435*852ba100SJustin Hibbits  @Function      FM_GetFmanCtrlCodeRevision
1436*852ba100SJustin Hibbits 
1437*852ba100SJustin Hibbits  @Description   Returns the Fman controller code revision
1438*852ba100SJustin Hibbits 
1439*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1440*852ba100SJustin Hibbits  @Param[out]    p_RevisionInfo      A structure of revision information parameters.
1441*852ba100SJustin Hibbits 
1442*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1443*852ba100SJustin Hibbits 
1444*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1445*852ba100SJustin Hibbits *//***************************************************************************/
1446*852ba100SJustin Hibbits t_Error FM_GetFmanCtrlCodeRevision(t_Handle h_Fm, t_FmCtrlCodeRevisionInfo *p_RevisionInfo);
1447*852ba100SJustin Hibbits 
1448*852ba100SJustin Hibbits /**************************************************************************//**
14490aeed3e9SJustin Hibbits  @Function      FM_GetCounter
14500aeed3e9SJustin Hibbits 
14510aeed3e9SJustin Hibbits  @Description   Reads one of the FM counters.
14520aeed3e9SJustin Hibbits 
14530aeed3e9SJustin Hibbits  @Param[in]     h_Fm        A handle to an FM Module.
14540aeed3e9SJustin Hibbits  @Param[in]     counter     The requested counter.
14550aeed3e9SJustin Hibbits 
14560aeed3e9SJustin Hibbits  @Return        Counter's current value.
14570aeed3e9SJustin Hibbits 
14580aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
14590aeed3e9SJustin Hibbits                 Note that it is user's responsibility to call this routine only
14600aeed3e9SJustin Hibbits                 for enabled counters, and there will be no indication if a
14610aeed3e9SJustin Hibbits                 disabled counter is accessed.
14620aeed3e9SJustin Hibbits *//***************************************************************************/
14630aeed3e9SJustin Hibbits uint32_t  FM_GetCounter(t_Handle h_Fm, e_FmCounters counter);
14640aeed3e9SJustin Hibbits 
14650aeed3e9SJustin Hibbits /**************************************************************************//**
14660aeed3e9SJustin Hibbits  @Function      FM_ModifyCounter
14670aeed3e9SJustin Hibbits 
14680aeed3e9SJustin Hibbits  @Description   Sets a value to an enabled counter. Use "0" to reset the counter.
14690aeed3e9SJustin Hibbits 
14700aeed3e9SJustin Hibbits  @Param[in]     h_Fm        A handle to an FM Module.
14710aeed3e9SJustin Hibbits  @Param[in]     counter     The requested counter.
14720aeed3e9SJustin Hibbits  @Param[in]     val         The requested value to be written into the counter.
14730aeed3e9SJustin Hibbits 
14740aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
14750aeed3e9SJustin Hibbits 
14760aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1477*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1478*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
14790aeed3e9SJustin Hibbits *//***************************************************************************/
14800aeed3e9SJustin Hibbits t_Error  FM_ModifyCounter(t_Handle h_Fm, e_FmCounters counter, uint32_t val);
14810aeed3e9SJustin Hibbits 
14820aeed3e9SJustin Hibbits /**************************************************************************//**
14830aeed3e9SJustin Hibbits  @Function      FM_Resume
14840aeed3e9SJustin Hibbits 
14850aeed3e9SJustin Hibbits  @Description   Release FM after halt FM command or after unrecoverable ECC error.
14860aeed3e9SJustin Hibbits 
14870aeed3e9SJustin Hibbits  @Param[in]     h_Fm        A handle to an FM Module.
14880aeed3e9SJustin Hibbits 
14890aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1490*852ba100SJustin Hibbits 
1491*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1492*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1493*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
14940aeed3e9SJustin Hibbits *//***************************************************************************/
14950aeed3e9SJustin Hibbits void FM_Resume(t_Handle h_Fm);
14960aeed3e9SJustin Hibbits 
14970aeed3e9SJustin Hibbits /**************************************************************************//**
14980aeed3e9SJustin Hibbits  @Function      FM_SetDmaEmergency
14990aeed3e9SJustin Hibbits 
15000aeed3e9SJustin Hibbits  @Description   Manual emergency set
15010aeed3e9SJustin Hibbits 
15020aeed3e9SJustin Hibbits  @Param[in]     h_Fm        A handle to an FM Module.
15030aeed3e9SJustin Hibbits  @Param[in]     muramPort   MURAM direction select.
15040aeed3e9SJustin Hibbits  @Param[in]     enable      TRUE to manually enable emergency, FALSE to disable.
15050aeed3e9SJustin Hibbits 
15060aeed3e9SJustin Hibbits  @Return        None.
15070aeed3e9SJustin Hibbits 
15080aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1509*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1510*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
15110aeed3e9SJustin Hibbits *//***************************************************************************/
15120aeed3e9SJustin Hibbits void FM_SetDmaEmergency(t_Handle h_Fm, e_FmDmaMuramPort muramPort, bool enable);
15130aeed3e9SJustin Hibbits 
15140aeed3e9SJustin Hibbits /**************************************************************************//**
15150aeed3e9SJustin Hibbits  @Function      FM_SetDmaExtBusPri
15160aeed3e9SJustin Hibbits 
1517*852ba100SJustin Hibbits  @Description   Set the DMA external bus priority
15180aeed3e9SJustin Hibbits 
15190aeed3e9SJustin Hibbits  @Param[in]     h_Fm    A handle to an FM Module.
15200aeed3e9SJustin Hibbits  @Param[in]     pri     External bus priority select
15210aeed3e9SJustin Hibbits 
15220aeed3e9SJustin Hibbits  @Return        None.
15230aeed3e9SJustin Hibbits 
15240aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1525*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1526*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
15270aeed3e9SJustin Hibbits *//***************************************************************************/
15280aeed3e9SJustin Hibbits void FM_SetDmaExtBusPri(t_Handle h_Fm, e_FmDmaExtBusPri pri);
15290aeed3e9SJustin Hibbits 
15300aeed3e9SJustin Hibbits /**************************************************************************//**
15310aeed3e9SJustin Hibbits  @Function      FM_GetDmaStatus
15320aeed3e9SJustin Hibbits 
15330aeed3e9SJustin Hibbits  @Description   Reads the DMA current status
15340aeed3e9SJustin Hibbits 
15350aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
15360aeed3e9SJustin Hibbits  @Param[out]    p_FmDmaStatus   A structure of DMA status parameters.
15370aeed3e9SJustin Hibbits 
15380aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
15390aeed3e9SJustin Hibbits *//***************************************************************************/
15400aeed3e9SJustin Hibbits void FM_GetDmaStatus(t_Handle h_Fm, t_FmDmaStatus *p_FmDmaStatus);
15410aeed3e9SJustin Hibbits 
15420aeed3e9SJustin Hibbits /**************************************************************************//**
15430aeed3e9SJustin Hibbits  @Function      FM_ErrorIsr
15440aeed3e9SJustin Hibbits 
15450aeed3e9SJustin Hibbits  @Description   FM interrupt-service-routine for errors.
15460aeed3e9SJustin Hibbits 
15470aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
15480aeed3e9SJustin Hibbits 
15490aeed3e9SJustin Hibbits  @Return        E_OK on success; E_EMPTY if no errors found in register, other
15500aeed3e9SJustin Hibbits                 error code otherwise.
15510aeed3e9SJustin Hibbits 
15520aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
15530aeed3e9SJustin Hibbits                 This routine should NOT be called from guest-partition
15540aeed3e9SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
15550aeed3e9SJustin Hibbits *//***************************************************************************/
15560aeed3e9SJustin Hibbits t_Error FM_ErrorIsr(t_Handle h_Fm);
15570aeed3e9SJustin Hibbits 
15580aeed3e9SJustin Hibbits /**************************************************************************//**
15590aeed3e9SJustin Hibbits  @Function      FM_EventIsr
15600aeed3e9SJustin Hibbits 
15610aeed3e9SJustin Hibbits  @Description   FM interrupt-service-routine for normal events.
15620aeed3e9SJustin Hibbits 
15630aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
15640aeed3e9SJustin Hibbits 
15650aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
15660aeed3e9SJustin Hibbits                 This routine should NOT be called from guest-partition
15670aeed3e9SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
15680aeed3e9SJustin Hibbits *//***************************************************************************/
15690aeed3e9SJustin Hibbits void FM_EventIsr(t_Handle h_Fm);
15700aeed3e9SJustin Hibbits 
15710aeed3e9SJustin Hibbits /**************************************************************************//**
1572*852ba100SJustin Hibbits  @Function      FM_GetSpecialOperationCoding
15730aeed3e9SJustin Hibbits 
1574*852ba100SJustin Hibbits  @Description   Return a specific coding according to the input mask.
15750aeed3e9SJustin Hibbits 
15760aeed3e9SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1577*852ba100SJustin Hibbits  @Param[in]     spOper          special operation mask.
1578*852ba100SJustin Hibbits  @Param[out]    p_SpOperCoding  special operation code.
15790aeed3e9SJustin Hibbits 
15800aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
15810aeed3e9SJustin Hibbits 
1582*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
15830aeed3e9SJustin Hibbits *//***************************************************************************/
1584*852ba100SJustin Hibbits t_Error FM_GetSpecialOperationCoding(t_Handle               h_Fm,
1585*852ba100SJustin Hibbits                                      fmSpecialOperations_t  spOper,
1586*852ba100SJustin Hibbits                                      uint8_t                *p_SpOperCoding);
15870aeed3e9SJustin Hibbits 
1588*852ba100SJustin Hibbits /**************************************************************************//**
1589*852ba100SJustin Hibbits  @Function      FM_CtrlMonStart
1590*852ba100SJustin Hibbits 
1591*852ba100SJustin Hibbits  @Description   Start monitoring utilization of all available FM controllers.
1592*852ba100SJustin Hibbits 
1593*852ba100SJustin Hibbits                 In order to obtain FM controllers utilization the following sequence
1594*852ba100SJustin Hibbits                 should be used:
1595*852ba100SJustin Hibbits                 -# FM_CtrlMonStart()
1596*852ba100SJustin Hibbits                 -# FM_CtrlMonStop()
1597*852ba100SJustin Hibbits                 -# FM_CtrlMonGetCounters() - issued for each FM controller
1598*852ba100SJustin Hibbits 
1599*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1600*852ba100SJustin Hibbits 
1601*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1602*852ba100SJustin Hibbits 
1603*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1604*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1605*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID).
1606*852ba100SJustin Hibbits *//***************************************************************************/
1607*852ba100SJustin Hibbits t_Error FM_CtrlMonStart(t_Handle h_Fm);
1608*852ba100SJustin Hibbits 
1609*852ba100SJustin Hibbits /**************************************************************************//**
1610*852ba100SJustin Hibbits  @Function      FM_CtrlMonStop
1611*852ba100SJustin Hibbits 
1612*852ba100SJustin Hibbits  @Description   Stop monitoring utilization of all available FM controllers.
1613*852ba100SJustin Hibbits 
1614*852ba100SJustin Hibbits                 In order to obtain FM controllers utilization the following sequence
1615*852ba100SJustin Hibbits                 should be used:
1616*852ba100SJustin Hibbits                 -# FM_CtrlMonStart()
1617*852ba100SJustin Hibbits                 -# FM_CtrlMonStop()
1618*852ba100SJustin Hibbits                 -# FM_CtrlMonGetCounters() - issued for each FM controller
1619*852ba100SJustin Hibbits 
1620*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1621*852ba100SJustin Hibbits 
1622*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1623*852ba100SJustin Hibbits 
1624*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1625*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1626*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID).
1627*852ba100SJustin Hibbits *//***************************************************************************/
1628*852ba100SJustin Hibbits t_Error FM_CtrlMonStop(t_Handle h_Fm);
1629*852ba100SJustin Hibbits 
1630*852ba100SJustin Hibbits /**************************************************************************//**
1631*852ba100SJustin Hibbits  @Function      FM_CtrlMonGetCounters
1632*852ba100SJustin Hibbits 
1633*852ba100SJustin Hibbits  @Description   Obtain FM controller utilization parameters.
1634*852ba100SJustin Hibbits 
1635*852ba100SJustin Hibbits                 In order to obtain FM controllers utilization the following sequence
1636*852ba100SJustin Hibbits                 should be used:
1637*852ba100SJustin Hibbits                 -# FM_CtrlMonStart()
1638*852ba100SJustin Hibbits                 -# FM_CtrlMonStop()
1639*852ba100SJustin Hibbits                 -# FM_CtrlMonGetCounters() - issued for each FM controller
1640*852ba100SJustin Hibbits 
1641*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1642*852ba100SJustin Hibbits  @Param[in]     fmCtrlIndex     FM Controller index for that utilization results
1643*852ba100SJustin Hibbits                                 are requested.
1644*852ba100SJustin Hibbits  @Param[in]     p_Mon           Pointer to utilization results structure.
1645*852ba100SJustin Hibbits 
1646*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1647*852ba100SJustin Hibbits 
1648*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1649*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1650*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID).
1651*852ba100SJustin Hibbits *//***************************************************************************/
1652*852ba100SJustin Hibbits t_Error FM_CtrlMonGetCounters(t_Handle h_Fm, uint8_t fmCtrlIndex, t_FmCtrlMon *p_Mon);
1653*852ba100SJustin Hibbits 
1654*852ba100SJustin Hibbits 
1655*852ba100SJustin Hibbits /**************************************************************************//*
1656*852ba100SJustin Hibbits  @Function      FM_ForceIntr
1657*852ba100SJustin Hibbits 
1658*852ba100SJustin Hibbits  @Description   Causes an interrupt event on the requested source.
1659*852ba100SJustin Hibbits 
1660*852ba100SJustin Hibbits  @Param[in]     h_Fm            A handle to an FM Module.
1661*852ba100SJustin Hibbits  @Param[in]     exception       An exception to be forced.
1662*852ba100SJustin Hibbits 
1663*852ba100SJustin Hibbits  @Return        E_OK on success; Error code if the exception is not enabled,
1664*852ba100SJustin Hibbits                 or is not able to create interrupt.
1665*852ba100SJustin Hibbits 
1666*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1667*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1668*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1669*852ba100SJustin Hibbits *//***************************************************************************/
1670*852ba100SJustin Hibbits t_Error FM_ForceIntr (t_Handle h_Fm, e_FmExceptions exception);
1671*852ba100SJustin Hibbits 
1672*852ba100SJustin Hibbits /**************************************************************************//*
1673*852ba100SJustin Hibbits  @Function      FM_SetPortsBandwidth
1674*852ba100SJustin Hibbits 
1675*852ba100SJustin Hibbits  @Description   Sets relative weights between ports when accessing common resources.
1676*852ba100SJustin Hibbits 
1677*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1678*852ba100SJustin Hibbits  @Param[in]     p_PortsBandwidth    A structure of ports bandwidths in percentage, i.e.
1679*852ba100SJustin Hibbits                                     total must equal 100.
1680*852ba100SJustin Hibbits 
1681*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
1682*852ba100SJustin Hibbits 
1683*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1684*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1685*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1686*852ba100SJustin Hibbits *//***************************************************************************/
1687*852ba100SJustin Hibbits t_Error FM_SetPortsBandwidth(t_Handle h_Fm, t_FmPortsBandwidthParams *p_PortsBandwidth);
1688*852ba100SJustin Hibbits 
1689*852ba100SJustin Hibbits /**************************************************************************//*
1690*852ba100SJustin Hibbits  @Function      FM_GetMuramHandle
1691*852ba100SJustin Hibbits 
1692*852ba100SJustin Hibbits  @Description   Gets the corresponding MURAM handle
1693*852ba100SJustin Hibbits 
1694*852ba100SJustin Hibbits  @Param[in]     h_Fm                A handle to an FM Module.
1695*852ba100SJustin Hibbits 
1696*852ba100SJustin Hibbits  @Return        MURAM handle; NULL otherwise.
1697*852ba100SJustin Hibbits 
1698*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_Init().
1699*852ba100SJustin Hibbits                 This routine should NOT be called from guest-partition
1700*852ba100SJustin Hibbits                 (i.e. guestId != NCSW_MASTER_ID)
1701*852ba100SJustin Hibbits *//***************************************************************************/
1702*852ba100SJustin Hibbits t_Handle FM_GetMuramHandle(t_Handle h_Fm);
17030aeed3e9SJustin Hibbits 
17040aeed3e9SJustin Hibbits /** @} */ /* end of FM_runtime_control_grp group */
17050aeed3e9SJustin Hibbits /** @} */ /* end of FM_lib_grp group */
17060aeed3e9SJustin Hibbits /** @} */ /* end of FM_grp group */
17070aeed3e9SJustin Hibbits 
1708*852ba100SJustin Hibbits 
1709*852ba100SJustin Hibbits #ifdef NCSW_BACKWARD_COMPATIBLE_API
1710*852ba100SJustin Hibbits typedef t_FmFirmwareParams          t_FmPcdFirmwareParams;
1711*852ba100SJustin Hibbits typedef t_FmBufferPrefixContent     t_FmPortBufferPrefixContent;
1712*852ba100SJustin Hibbits typedef t_FmExtPoolParams           t_FmPortExtPoolParams;
1713*852ba100SJustin Hibbits typedef t_FmExtPools                t_FmPortExtPools;
1714*852ba100SJustin Hibbits typedef t_FmBackupBmPools           t_FmPortBackupBmPools;
1715*852ba100SJustin Hibbits typedef t_FmBufPoolDepletion        t_FmPortBufPoolDepletion;
1716*852ba100SJustin Hibbits typedef e_FmDmaSwapOption           e_FmPortDmaSwapOption;
1717*852ba100SJustin Hibbits typedef e_FmDmaCacheOption          e_FmPortDmaCacheOption;
1718*852ba100SJustin Hibbits 
1719*852ba100SJustin Hibbits #define FM_CONTEXTA_GET_OVVERIDE    FM_CONTEXTA_GET_OVERRIDE
1720*852ba100SJustin Hibbits #define FM_CONTEXTA_SET_OVVERIDE    FM_CONTEXTA_SET_OVERRIDE
1721*852ba100SJustin Hibbits 
1722*852ba100SJustin Hibbits #define e_FM_EX_BMI_PIPELINE_ECC    e_FM_EX_BMI_STORAGE_PROFILE_ECC
1723*852ba100SJustin Hibbits #define e_FM_PORT_DMA_NO_SWP        e_FM_DMA_NO_SWP
1724*852ba100SJustin Hibbits #define e_FM_PORT_DMA_SWP_PPC_LE    e_FM_DMA_SWP_PPC_LE
1725*852ba100SJustin Hibbits #define e_FM_PORT_DMA_SWP_BE        e_FM_DMA_SWP_BE
1726*852ba100SJustin Hibbits #define e_FM_PORT_DMA_NO_STASH      e_FM_DMA_NO_STASH
1727*852ba100SJustin Hibbits #define e_FM_PORT_DMA_STASH         e_FM_DMA_STASH
1728*852ba100SJustin Hibbits #endif /* NCSW_BACKWARD_COMPATIBLE_API */
1729*852ba100SJustin Hibbits 
1730*852ba100SJustin Hibbits 
17310aeed3e9SJustin Hibbits #endif /* __FM_EXT */
1732