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