1852ba100SJustin Hibbits /*
2852ba100SJustin Hibbits * Copyright 2008-2012 Freescale Semiconductor Inc.
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
33852ba100SJustin Hibbits
340aeed3e9SJustin Hibbits /******************************************************************************
350aeed3e9SJustin Hibbits @File fm_common.h
360aeed3e9SJustin Hibbits
370aeed3e9SJustin Hibbits @Description FM internal structures and definitions.
380aeed3e9SJustin Hibbits *//***************************************************************************/
390aeed3e9SJustin Hibbits #ifndef __FM_COMMON_H
400aeed3e9SJustin Hibbits #define __FM_COMMON_H
410aeed3e9SJustin Hibbits
420aeed3e9SJustin Hibbits #include "error_ext.h"
430aeed3e9SJustin Hibbits #include "std_ext.h"
440aeed3e9SJustin Hibbits #include "fm_pcd_ext.h"
45852ba100SJustin Hibbits #include "fm_ext.h"
460aeed3e9SJustin Hibbits #include "fm_port_ext.h"
470aeed3e9SJustin Hibbits
48852ba100SJustin Hibbits
49852ba100SJustin Hibbits #define e_FM_PORT_TYPE_OH_HOST_COMMAND e_FM_PORT_TYPE_DUMMY
50852ba100SJustin Hibbits
510aeed3e9SJustin Hibbits #define CLS_PLAN_NUM_PER_GRP 8
520aeed3e9SJustin Hibbits
53852ba100SJustin Hibbits #define IP_OFFLOAD_PACKAGE_NUMBER 106
54852ba100SJustin Hibbits #define CAPWAP_OFFLOAD_PACKAGE_NUMBER 108
55852ba100SJustin Hibbits #define IS_OFFLOAD_PACKAGE(num) ((num == IP_OFFLOAD_PACKAGE_NUMBER) || (num == CAPWAP_OFFLOAD_PACKAGE_NUMBER))
56852ba100SJustin Hibbits
57852ba100SJustin Hibbits
58852ba100SJustin Hibbits
59852ba100SJustin Hibbits /**************************************************************************//**
60852ba100SJustin Hibbits @Description Modules registers offsets
61852ba100SJustin Hibbits *//***************************************************************************/
62852ba100SJustin Hibbits #define FM_MM_MURAM 0x00000000
63852ba100SJustin Hibbits #define FM_MM_BMI 0x00080000
64852ba100SJustin Hibbits #define FM_MM_QMI 0x00080400
65852ba100SJustin Hibbits #define FM_MM_PRS 0x000c7000
66852ba100SJustin Hibbits #define FM_MM_KG 0x000C1000
67852ba100SJustin Hibbits #define FM_MM_DMA 0x000C2000
68852ba100SJustin Hibbits #define FM_MM_FPM 0x000C3000
69852ba100SJustin Hibbits #define FM_MM_PLCR 0x000C0000
70852ba100SJustin Hibbits #define FM_MM_IMEM 0x000C4000
71852ba100SJustin Hibbits #define FM_MM_CGP 0x000DB000
72852ba100SJustin Hibbits #define FM_MM_TRB(i) (0x000D0200 + 0x400 * (i))
73852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
74852ba100SJustin Hibbits #define FM_MM_SP 0x000dc000
75852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
76852ba100SJustin Hibbits
77852ba100SJustin Hibbits
78852ba100SJustin Hibbits /**************************************************************************//**
79852ba100SJustin Hibbits @Description Enum for inter-module interrupts registration
80852ba100SJustin Hibbits *//***************************************************************************/
81852ba100SJustin Hibbits typedef enum e_FmEventModules{
82852ba100SJustin Hibbits e_FM_MOD_PRS, /**< Parser event */
83852ba100SJustin Hibbits e_FM_MOD_KG, /**< Keygen event */
84852ba100SJustin Hibbits e_FM_MOD_PLCR, /**< Policer event */
85852ba100SJustin Hibbits e_FM_MOD_10G_MAC, /**< 10G MAC event */
86852ba100SJustin Hibbits e_FM_MOD_1G_MAC, /**< 1G MAC event */
87852ba100SJustin Hibbits e_FM_MOD_TMR, /**< Timer event */
88852ba100SJustin Hibbits e_FM_MOD_FMAN_CTRL, /**< FMAN Controller Timer event */
89852ba100SJustin Hibbits e_FM_MOD_MACSEC,
90852ba100SJustin Hibbits e_FM_MOD_DUMMY_LAST
91852ba100SJustin Hibbits } e_FmEventModules;
92852ba100SJustin Hibbits
93852ba100SJustin Hibbits /**************************************************************************//**
94852ba100SJustin Hibbits @Description Enum for interrupts types
95852ba100SJustin Hibbits *//***************************************************************************/
96852ba100SJustin Hibbits typedef enum e_FmIntrType {
97852ba100SJustin Hibbits e_FM_INTR_TYPE_ERR,
98852ba100SJustin Hibbits e_FM_INTR_TYPE_NORMAL
99852ba100SJustin Hibbits } e_FmIntrType;
100852ba100SJustin Hibbits
101852ba100SJustin Hibbits /**************************************************************************//**
102852ba100SJustin Hibbits @Description Enum for inter-module interrupts registration
103852ba100SJustin Hibbits *//***************************************************************************/
104852ba100SJustin Hibbits typedef enum e_FmInterModuleEvent
105852ba100SJustin Hibbits {
106852ba100SJustin Hibbits e_FM_EV_PRS = 0, /**< Parser event */
107852ba100SJustin Hibbits e_FM_EV_ERR_PRS, /**< Parser error event */
108852ba100SJustin Hibbits e_FM_EV_KG, /**< Keygen event */
109852ba100SJustin Hibbits e_FM_EV_ERR_KG, /**< Keygen error event */
110852ba100SJustin Hibbits e_FM_EV_PLCR, /**< Policer event */
111852ba100SJustin Hibbits e_FM_EV_ERR_PLCR, /**< Policer error event */
112852ba100SJustin Hibbits e_FM_EV_ERR_10G_MAC0, /**< 10G MAC 0 error event */
113852ba100SJustin Hibbits e_FM_EV_ERR_10G_MAC1, /**< 10G MAC 1 error event */
114852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC0, /**< 1G MAC 0 error event */
115852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC1, /**< 1G MAC 1 error event */
116852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC2, /**< 1G MAC 2 error event */
117852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC3, /**< 1G MAC 3 error event */
118852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC4, /**< 1G MAC 4 error event */
119852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC5, /**< 1G MAC 5 error event */
120852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC6, /**< 1G MAC 6 error event */
121852ba100SJustin Hibbits e_FM_EV_ERR_1G_MAC7, /**< 1G MAC 7 error event */
122852ba100SJustin Hibbits e_FM_EV_ERR_MACSEC_MAC0,
123852ba100SJustin Hibbits e_FM_EV_TMR, /**< Timer event */
124852ba100SJustin Hibbits e_FM_EV_10G_MAC0, /**< 10G MAC 0 event (Magic packet detection)*/
125852ba100SJustin Hibbits e_FM_EV_10G_MAC1, /**< 10G MAC 1 event (Magic packet detection)*/
126852ba100SJustin Hibbits e_FM_EV_1G_MAC0, /**< 1G MAC 0 event (Magic packet detection)*/
127852ba100SJustin Hibbits e_FM_EV_1G_MAC1, /**< 1G MAC 1 event (Magic packet detection)*/
128852ba100SJustin Hibbits e_FM_EV_1G_MAC2, /**< 1G MAC 2 (Magic packet detection)*/
129852ba100SJustin Hibbits e_FM_EV_1G_MAC3, /**< 1G MAC 3 (Magic packet detection)*/
130852ba100SJustin Hibbits e_FM_EV_1G_MAC4, /**< 1G MAC 4 (Magic packet detection)*/
131852ba100SJustin Hibbits e_FM_EV_1G_MAC5, /**< 1G MAC 5 (Magic packet detection)*/
132852ba100SJustin Hibbits e_FM_EV_1G_MAC6, /**< 1G MAC 6 (Magic packet detection)*/
133852ba100SJustin Hibbits e_FM_EV_1G_MAC7, /**< 1G MAC 7 (Magic packet detection)*/
134852ba100SJustin Hibbits e_FM_EV_MACSEC_MAC0, /**< MACSEC MAC 0 event */
135852ba100SJustin Hibbits e_FM_EV_FMAN_CTRL_0, /**< Fman controller event 0 */
136852ba100SJustin Hibbits e_FM_EV_FMAN_CTRL_1, /**< Fman controller event 1 */
137852ba100SJustin Hibbits e_FM_EV_FMAN_CTRL_2, /**< Fman controller event 2 */
138852ba100SJustin Hibbits e_FM_EV_FMAN_CTRL_3, /**< Fman controller event 3 */
139852ba100SJustin Hibbits e_FM_EV_DUMMY_LAST
140852ba100SJustin Hibbits } e_FmInterModuleEvent;
141852ba100SJustin Hibbits
1420aeed3e9SJustin Hibbits
1430aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
1440aeed3e9SJustin Hibbits #pragma pack(push,1)
1450aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
1460aeed3e9SJustin Hibbits
1470aeed3e9SJustin Hibbits /**************************************************************************//**
1480aeed3e9SJustin Hibbits @Description PCD KG scheme registers
1490aeed3e9SJustin Hibbits *//***************************************************************************/
150852ba100SJustin Hibbits typedef _Packed struct t_FmPcdPlcrProfileRegs {
1510aeed3e9SJustin Hibbits volatile uint32_t fmpl_pemode; /* 0x090 FMPL_PEMODE - FM Policer Profile Entry Mode*/
1520aeed3e9SJustin Hibbits volatile uint32_t fmpl_pegnia; /* 0x094 FMPL_PEGNIA - FM Policer Profile Entry GREEN Next Invoked Action*/
1530aeed3e9SJustin Hibbits volatile uint32_t fmpl_peynia; /* 0x098 FMPL_PEYNIA - FM Policer Profile Entry YELLOW Next Invoked Action*/
1540aeed3e9SJustin Hibbits volatile uint32_t fmpl_pernia; /* 0x09C FMPL_PERNIA - FM Policer Profile Entry RED Next Invoked Action*/
1550aeed3e9SJustin Hibbits volatile uint32_t fmpl_pecir; /* 0x0A0 FMPL_PECIR - FM Policer Profile Entry Committed Information Rate*/
1560aeed3e9SJustin Hibbits volatile uint32_t fmpl_pecbs; /* 0x0A4 FMPL_PECBS - FM Policer Profile Entry Committed Burst Size*/
1570aeed3e9SJustin Hibbits volatile uint32_t fmpl_pepepir_eir; /* 0x0A8 FMPL_PEPIR_EIR - FM Policer Profile Entry Peak/Excess Information Rate*/
1580aeed3e9SJustin Hibbits volatile uint32_t fmpl_pepbs_ebs; /* 0x0AC FMPL_PEPBS_EBS - FM Policer Profile Entry Peak/Excess Information Rate*/
1590aeed3e9SJustin Hibbits volatile uint32_t fmpl_pelts; /* 0x0B0 FMPL_PELTS - FM Policer Profile Entry Last TimeStamp*/
1600aeed3e9SJustin Hibbits volatile uint32_t fmpl_pects; /* 0x0B4 FMPL_PECTS - FM Policer Profile Entry Committed Token Status*/
1610aeed3e9SJustin Hibbits volatile uint32_t fmpl_pepts_ets; /* 0x0B8 FMPL_PEPTS_ETS - FM Policer Profile Entry Peak/Excess Token Status*/
1620aeed3e9SJustin Hibbits volatile uint32_t fmpl_pegpc; /* 0x0BC FMPL_PEGPC - FM Policer Profile Entry GREEN Packet Counter*/
1630aeed3e9SJustin Hibbits volatile uint32_t fmpl_peypc; /* 0x0C0 FMPL_PEYPC - FM Policer Profile Entry YELLOW Packet Counter*/
1640aeed3e9SJustin Hibbits volatile uint32_t fmpl_perpc; /* 0x0C4 FMPL_PERPC - FM Policer Profile Entry RED Packet Counter */
1650aeed3e9SJustin Hibbits volatile uint32_t fmpl_perypc; /* 0x0C8 FMPL_PERYPC - FM Policer Profile Entry Recolored YELLOW Packet Counter*/
1660aeed3e9SJustin Hibbits volatile uint32_t fmpl_perrpc; /* 0x0CC FMPL_PERRPC - FM Policer Profile Entry Recolored RED Packet Counter*/
1670aeed3e9SJustin Hibbits volatile uint32_t fmpl_res1[12]; /* 0x0D0-0x0FF Reserved */
168852ba100SJustin Hibbits } _PackedType t_FmPcdPlcrProfileRegs;
1690aeed3e9SJustin Hibbits
1700aeed3e9SJustin Hibbits
1710aeed3e9SJustin Hibbits typedef _Packed struct t_FmPcdCcCapwapReassmTimeoutParams {
1720aeed3e9SJustin Hibbits volatile uint32_t portIdAndCapwapReassmTbl;
1730aeed3e9SJustin Hibbits volatile uint32_t fqidForTimeOutFrames;
1740aeed3e9SJustin Hibbits volatile uint32_t timeoutRequestTime;
1750aeed3e9SJustin Hibbits }_PackedType t_FmPcdCcCapwapReassmTimeoutParams;
1760aeed3e9SJustin Hibbits
177852ba100SJustin Hibbits /**************************************************************************//**
178852ba100SJustin Hibbits @Description PCD CTRL Parameters Page
179852ba100SJustin Hibbits *//***************************************************************************/
180852ba100SJustin Hibbits typedef _Packed struct t_FmPcdCtrlParamsPage {
181852ba100SJustin Hibbits volatile uint8_t reserved0[16];
182852ba100SJustin Hibbits volatile uint32_t iprIpv4Nia;
183852ba100SJustin Hibbits volatile uint32_t iprIpv6Nia;
184852ba100SJustin Hibbits volatile uint8_t reserved1[24];
185852ba100SJustin Hibbits volatile uint32_t ipfOptionsCounter;
186852ba100SJustin Hibbits volatile uint8_t reserved2[12];
187852ba100SJustin Hibbits volatile uint32_t misc;
188852ba100SJustin Hibbits volatile uint32_t errorsDiscardMask;
189852ba100SJustin Hibbits volatile uint32_t discardMask;
190852ba100SJustin Hibbits volatile uint8_t reserved3[4];
191852ba100SJustin Hibbits volatile uint32_t postBmiFetchNia;
192852ba100SJustin Hibbits volatile uint8_t reserved4[172];
193852ba100SJustin Hibbits } _PackedType t_FmPcdCtrlParamsPage;
1940aeed3e9SJustin Hibbits
1950aeed3e9SJustin Hibbits
196852ba100SJustin Hibbits
1970aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
1980aeed3e9SJustin Hibbits #pragma pack(pop)
1990aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
2000aeed3e9SJustin Hibbits
2010aeed3e9SJustin Hibbits
202852ba100SJustin Hibbits /*for UNDER_CONSTRUCTION_FM_RMU_USE_SEC its defined in fm_ext.h*/
203852ba100SJustin Hibbits typedef uint32_t t_FmFmanCtrl;
204852ba100SJustin Hibbits
205852ba100SJustin Hibbits #define FPM_PORT_FM_CTL1 0x00000001
206852ba100SJustin Hibbits #define FPM_PORT_FM_CTL2 0x00000002
207852ba100SJustin Hibbits
208852ba100SJustin Hibbits
209852ba100SJustin Hibbits
210852ba100SJustin Hibbits typedef struct t_FmPcdCcFragScratchPoolCmdParams {
211852ba100SJustin Hibbits uint32_t numOfBuffers;
212852ba100SJustin Hibbits uint8_t bufferPoolId;
213852ba100SJustin Hibbits } t_FmPcdCcFragScratchPoolCmdParams;
214852ba100SJustin Hibbits
215852ba100SJustin Hibbits typedef struct t_FmPcdCcReassmTimeoutParams {
216852ba100SJustin Hibbits bool activate;
217852ba100SJustin Hibbits uint8_t tsbs;
218852ba100SJustin Hibbits uint32_t iprcpt;
219852ba100SJustin Hibbits } t_FmPcdCcReassmTimeoutParams;
220852ba100SJustin Hibbits
2210aeed3e9SJustin Hibbits typedef struct {
2220aeed3e9SJustin Hibbits uint8_t baseEntry;
2230aeed3e9SJustin Hibbits uint16_t numOfClsPlanEntries;
2240aeed3e9SJustin Hibbits uint32_t vectors[FM_PCD_MAX_NUM_OF_CLS_PLANS];
2250aeed3e9SJustin Hibbits } t_FmPcdKgInterModuleClsPlanSet;
2260aeed3e9SJustin Hibbits
2270aeed3e9SJustin Hibbits /**************************************************************************//**
2280aeed3e9SJustin Hibbits @Description Structure for binding a port to keygen schemes.
2290aeed3e9SJustin Hibbits *//***************************************************************************/
2300aeed3e9SJustin Hibbits typedef struct t_FmPcdKgInterModuleBindPortToSchemes {
2310aeed3e9SJustin Hibbits uint8_t hardwarePortId;
2320aeed3e9SJustin Hibbits uint8_t netEnvId;
2330aeed3e9SJustin Hibbits bool useClsPlan; /**< TRUE if this port uses the clsPlan mechanism */
2340aeed3e9SJustin Hibbits uint8_t numOfSchemes;
2350aeed3e9SJustin Hibbits uint8_t schemesIds[FM_PCD_KG_NUM_OF_SCHEMES];
2360aeed3e9SJustin Hibbits } t_FmPcdKgInterModuleBindPortToSchemes;
2370aeed3e9SJustin Hibbits
2380aeed3e9SJustin Hibbits typedef struct {
2390aeed3e9SJustin Hibbits uint32_t nextCcNodeInfo;
2400aeed3e9SJustin Hibbits t_List node;
2410aeed3e9SJustin Hibbits } t_CcNodeInfo;
2420aeed3e9SJustin Hibbits
2430aeed3e9SJustin Hibbits typedef struct
2440aeed3e9SJustin Hibbits {
2450aeed3e9SJustin Hibbits t_Handle h_CcNode;
2460aeed3e9SJustin Hibbits uint16_t index;
2470aeed3e9SJustin Hibbits t_List node;
2480aeed3e9SJustin Hibbits }t_CcNodeInformation;
249852ba100SJustin Hibbits #define CC_NODE_F_OBJECT(ptr) NCSW_LIST_OBJECT(ptr, t_CcNodeInformation, node)
250852ba100SJustin Hibbits
251852ba100SJustin Hibbits typedef enum e_ModifyState
252852ba100SJustin Hibbits {
253852ba100SJustin Hibbits e_MODIFY_STATE_ADD = 0,
254852ba100SJustin Hibbits e_MODIFY_STATE_REMOVE,
255852ba100SJustin Hibbits e_MODIFY_STATE_CHANGE
256852ba100SJustin Hibbits } e_ModifyState;
2570aeed3e9SJustin Hibbits
2580aeed3e9SJustin Hibbits typedef struct
2590aeed3e9SJustin Hibbits {
2600aeed3e9SJustin Hibbits t_Handle h_Manip;
2610aeed3e9SJustin Hibbits t_List node;
2620aeed3e9SJustin Hibbits }t_ManipInfo;
263852ba100SJustin Hibbits #define CC_NEXT_NODE_F_OBJECT(ptr) NCSW_LIST_OBJECT(ptr, t_CcNodeInfo, node)
2640aeed3e9SJustin Hibbits
2650aeed3e9SJustin Hibbits typedef struct {
2660aeed3e9SJustin Hibbits uint32_t type;
2670aeed3e9SJustin Hibbits uint8_t prOffset;
2680aeed3e9SJustin Hibbits uint16_t dataOffset;
269852ba100SJustin Hibbits uint8_t internalBufferOffset;
2700aeed3e9SJustin Hibbits uint8_t numOfTasks;
271852ba100SJustin Hibbits uint8_t numOfExtraTasks;
2720aeed3e9SJustin Hibbits uint8_t hardwarePortId;
273852ba100SJustin Hibbits t_FmRevisionInfo revInfo;
274852ba100SJustin Hibbits uint32_t nia;
275852ba100SJustin Hibbits uint32_t discardMask;
2760aeed3e9SJustin Hibbits } t_GetCcParams;
2770aeed3e9SJustin Hibbits
2780aeed3e9SJustin Hibbits typedef struct {
2790aeed3e9SJustin Hibbits uint32_t type;
2800aeed3e9SJustin Hibbits int psoSize;
2810aeed3e9SJustin Hibbits uint32_t nia;
282852ba100SJustin Hibbits t_FmFmanCtrl orFmanCtrl;
283852ba100SJustin Hibbits bool overwrite;
284852ba100SJustin Hibbits uint8_t ofpDpde;
2850aeed3e9SJustin Hibbits } t_SetCcParams;
2860aeed3e9SJustin Hibbits
2870aeed3e9SJustin Hibbits typedef struct {
2880aeed3e9SJustin Hibbits t_GetCcParams getCcParams;
2890aeed3e9SJustin Hibbits t_SetCcParams setCcParams;
2900aeed3e9SJustin Hibbits } t_FmPortGetSetCcParams;
2910aeed3e9SJustin Hibbits
292852ba100SJustin Hibbits typedef struct {
293852ba100SJustin Hibbits uint32_t type;
294852ba100SJustin Hibbits bool sleep;
295852ba100SJustin Hibbits } t_FmSetParams;
296852ba100SJustin Hibbits
297852ba100SJustin Hibbits typedef struct {
298852ba100SJustin Hibbits uint32_t type;
299852ba100SJustin Hibbits uint32_t fmqm_gs;
300852ba100SJustin Hibbits uint32_t fm_npi;
301852ba100SJustin Hibbits uint32_t fm_cld;
302852ba100SJustin Hibbits uint32_t fmfp_extc;
303852ba100SJustin Hibbits } t_FmGetParams;
304852ba100SJustin Hibbits
305852ba100SJustin Hibbits typedef struct {
306852ba100SJustin Hibbits t_FmSetParams setParams;
307852ba100SJustin Hibbits t_FmGetParams getParams;
308852ba100SJustin Hibbits } t_FmGetSetParams;
309852ba100SJustin Hibbits
310852ba100SJustin Hibbits t_Error FmGetSetParams(t_Handle h_Fm, t_FmGetSetParams *p_Params);
3110aeed3e9SJustin Hibbits
TRY_LOCK(t_Handle h_Spinlock,volatile bool * p_Flag)3120aeed3e9SJustin Hibbits static __inline__ bool TRY_LOCK(t_Handle h_Spinlock, volatile bool *p_Flag)
3130aeed3e9SJustin Hibbits {
3140aeed3e9SJustin Hibbits uint32_t intFlags;
3150aeed3e9SJustin Hibbits if (h_Spinlock)
3160aeed3e9SJustin Hibbits intFlags = XX_LockIntrSpinlock(h_Spinlock);
3170aeed3e9SJustin Hibbits else
3180aeed3e9SJustin Hibbits intFlags = XX_DisableAllIntr();
319852ba100SJustin Hibbits
3200aeed3e9SJustin Hibbits if (*p_Flag)
3210aeed3e9SJustin Hibbits {
3220aeed3e9SJustin Hibbits if (h_Spinlock)
3230aeed3e9SJustin Hibbits XX_UnlockIntrSpinlock(h_Spinlock, intFlags);
3240aeed3e9SJustin Hibbits else
3250aeed3e9SJustin Hibbits XX_RestoreAllIntr(intFlags);
3260aeed3e9SJustin Hibbits return FALSE;
3270aeed3e9SJustin Hibbits }
3280aeed3e9SJustin Hibbits *p_Flag = TRUE;
329852ba100SJustin Hibbits
3300aeed3e9SJustin Hibbits if (h_Spinlock)
3310aeed3e9SJustin Hibbits XX_UnlockIntrSpinlock(h_Spinlock, intFlags);
3320aeed3e9SJustin Hibbits else
3330aeed3e9SJustin Hibbits XX_RestoreAllIntr(intFlags);
334852ba100SJustin Hibbits
3350aeed3e9SJustin Hibbits return TRUE;
3360aeed3e9SJustin Hibbits }
3370aeed3e9SJustin Hibbits
3380aeed3e9SJustin Hibbits #define RELEASE_LOCK(_flag) _flag = FALSE;
3390aeed3e9SJustin Hibbits
3400aeed3e9SJustin Hibbits /**************************************************************************//**
3410aeed3e9SJustin Hibbits @Collection Defines used for manipulation CC and BMI
3420aeed3e9SJustin Hibbits @{
3430aeed3e9SJustin Hibbits *//***************************************************************************/
3440aeed3e9SJustin Hibbits #define INTERNAL_CONTEXT_OFFSET 0x80000000
3450aeed3e9SJustin Hibbits #define OFFSET_OF_PR 0x40000000
346852ba100SJustin Hibbits #define MANIP_EXTRA_SPACE 0x20000000
3470aeed3e9SJustin Hibbits #define NUM_OF_TASKS 0x10000000
3480aeed3e9SJustin Hibbits #define OFFSET_OF_DATA 0x08000000
3490aeed3e9SJustin Hibbits #define HW_PORT_ID 0x04000000
350852ba100SJustin Hibbits #define FM_REV 0x02000000
351852ba100SJustin Hibbits #define GET_NIA_FPNE 0x01000000
352852ba100SJustin Hibbits #define GET_NIA_PNDN 0x00800000
353852ba100SJustin Hibbits #define NUM_OF_EXTRA_TASKS 0x00400000
354852ba100SJustin Hibbits #define DISCARD_MASK 0x00200000
3550aeed3e9SJustin Hibbits
3560aeed3e9SJustin Hibbits #define UPDATE_NIA_PNEN 0x80000000
3570aeed3e9SJustin Hibbits #define UPDATE_PSO 0x40000000
3580aeed3e9SJustin Hibbits #define UPDATE_NIA_PNDN 0x20000000
3590aeed3e9SJustin Hibbits #define UPDATE_FMFP_PRC_WITH_ONE_RISC_ONLY 0x10000000
360852ba100SJustin Hibbits #define UPDATE_OFP_DPTE 0x08000000
361852ba100SJustin Hibbits #define UPDATE_NIA_FENE 0x04000000
362852ba100SJustin Hibbits #define UPDATE_NIA_CMNE 0x02000000
363852ba100SJustin Hibbits #define UPDATE_NIA_FPNE 0x01000000
3640aeed3e9SJustin Hibbits /* @} */
3650aeed3e9SJustin Hibbits
3660aeed3e9SJustin Hibbits /**************************************************************************//**
3670aeed3e9SJustin Hibbits @Collection Defines used for manipulation CC and CC
3680aeed3e9SJustin Hibbits @{
3690aeed3e9SJustin Hibbits *//***************************************************************************/
3700aeed3e9SJustin Hibbits #define UPDATE_NIA_ENQ_WITHOUT_DMA 0x80000000
3710aeed3e9SJustin Hibbits #define UPDATE_CC_WITH_TREE 0x40000000
3720aeed3e9SJustin Hibbits #define UPDATE_CC_WITH_DELETE_TREE 0x20000000
373852ba100SJustin Hibbits #define UPDATE_KG_NIA_CC_WA 0x10000000
374852ba100SJustin Hibbits #define UPDATE_KG_OPT_MODE 0x08000000
375852ba100SJustin Hibbits #define UPDATE_KG_NIA 0x04000000
376852ba100SJustin Hibbits #define UPDATE_CC_SHADOW_CLEAR 0x02000000
3770aeed3e9SJustin Hibbits /* @} */
3780aeed3e9SJustin Hibbits
379852ba100SJustin Hibbits #define UPDATE_FPM_BRKC_SLP 0x80000000
380852ba100SJustin Hibbits #define UPDATE_FPM_EXTC 0x40000000
381852ba100SJustin Hibbits #define UPDATE_FPM_EXTC_CLEAR 0x20000000
382852ba100SJustin Hibbits #define GET_FMQM_GS 0x10000000
383852ba100SJustin Hibbits #define GET_FM_NPI 0x08000000
384852ba100SJustin Hibbits #define GET_FMFP_EXTC 0x04000000
385852ba100SJustin Hibbits #define CLEAR_IRAM_READY 0x02000000
386852ba100SJustin Hibbits #define UPDATE_FM_CLD 0x01000000
387852ba100SJustin Hibbits #define GET_FM_CLD 0x00800000
3880aeed3e9SJustin Hibbits #define FM_MAX_NUM_OF_PORTS (FM_MAX_NUM_OF_OH_PORTS + \
3890aeed3e9SJustin Hibbits FM_MAX_NUM_OF_1G_RX_PORTS + \
3900aeed3e9SJustin Hibbits FM_MAX_NUM_OF_10G_RX_PORTS + \
3910aeed3e9SJustin Hibbits FM_MAX_NUM_OF_1G_TX_PORTS + \
3920aeed3e9SJustin Hibbits FM_MAX_NUM_OF_10G_TX_PORTS)
3930aeed3e9SJustin Hibbits
3940aeed3e9SJustin Hibbits #define MODULE_NAME_SIZE 30
3950aeed3e9SJustin Hibbits #define DUMMY_PORT_ID 0
3960aeed3e9SJustin Hibbits
3970aeed3e9SJustin Hibbits #define FM_LIODN_OFFSET_MASK 0x3FF
3980aeed3e9SJustin Hibbits
3990aeed3e9SJustin Hibbits /**************************************************************************//**
4000aeed3e9SJustin Hibbits @Description NIA Description
4010aeed3e9SJustin Hibbits *//***************************************************************************/
402852ba100SJustin Hibbits #define NIA_ENG_MASK 0x007C0000
403852ba100SJustin Hibbits #define NIA_AC_MASK 0x0003ffff
404852ba100SJustin Hibbits
4050aeed3e9SJustin Hibbits #define NIA_ORDER_RESTOR 0x00800000
4060aeed3e9SJustin Hibbits #define NIA_ENG_FM_CTL 0x00000000
4070aeed3e9SJustin Hibbits #define NIA_ENG_PRS 0x00440000
4080aeed3e9SJustin Hibbits #define NIA_ENG_KG 0x00480000
4090aeed3e9SJustin Hibbits #define NIA_ENG_PLCR 0x004C0000
4100aeed3e9SJustin Hibbits #define NIA_ENG_BMI 0x00500000
4110aeed3e9SJustin Hibbits #define NIA_ENG_QMI_ENQ 0x00540000
4120aeed3e9SJustin Hibbits #define NIA_ENG_QMI_DEQ 0x00580000
4130aeed3e9SJustin Hibbits
4140aeed3e9SJustin Hibbits #define NIA_FM_CTL_AC_CC 0x00000006
4150aeed3e9SJustin Hibbits #define NIA_FM_CTL_AC_HC 0x0000000C
4160aeed3e9SJustin Hibbits #define NIA_FM_CTL_AC_IND_MODE_TX 0x00000008
4170aeed3e9SJustin Hibbits #define NIA_FM_CTL_AC_IND_MODE_RX 0x0000000A
418852ba100SJustin Hibbits #define NIA_FM_CTL_AC_POP_TO_N_STEP 0x0000000e
419852ba100SJustin Hibbits #define NIA_FM_CTL_AC_PRE_BMI_FETCH_HEADER 0x00000010
420852ba100SJustin Hibbits #define NIA_FM_CTL_AC_PRE_BMI_FETCH_FULL_FRAME 0x00000018
421852ba100SJustin Hibbits #define NIA_FM_CTL_AC_POST_BMI_FETCH 0x00000012
422852ba100SJustin Hibbits #define NIA_FM_CTL_AC_PRE_BMI_ENQ_FRAME 0x0000001A
423852ba100SJustin Hibbits #define NIA_FM_CTL_AC_PRE_BMI_DISCARD_FRAME 0x0000001E
424852ba100SJustin Hibbits #define NIA_FM_CTL_AC_POST_BMI_ENQ_ORR 0x00000014
425852ba100SJustin Hibbits #define NIA_FM_CTL_AC_POST_BMI_ENQ 0x00000022
426852ba100SJustin Hibbits #define NIA_FM_CTL_AC_PRE_CC 0x00000020
427852ba100SJustin Hibbits #define NIA_FM_CTL_AC_POST_TX 0x00000024
428852ba100SJustin Hibbits /* V3 only */
429852ba100SJustin Hibbits #define NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_ENQ_FRAME 0x00000028
430852ba100SJustin Hibbits #define NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_DISCARD_FRAME 0x0000002A
431852ba100SJustin Hibbits #define NIA_FM_CTL_AC_NO_IPACC_POP_TO_N_STEP 0x0000002C
4320aeed3e9SJustin Hibbits
4330aeed3e9SJustin Hibbits #define NIA_BMI_AC_ENQ_FRAME 0x00000002
4340aeed3e9SJustin Hibbits #define NIA_BMI_AC_TX_RELEASE 0x000002C0
4350aeed3e9SJustin Hibbits #define NIA_BMI_AC_RELEASE 0x000000C0
4360aeed3e9SJustin Hibbits #define NIA_BMI_AC_DISCARD 0x000000C1
4370aeed3e9SJustin Hibbits #define NIA_BMI_AC_TX 0x00000274
4380aeed3e9SJustin Hibbits #define NIA_BMI_AC_FETCH 0x00000208
4390aeed3e9SJustin Hibbits #define NIA_BMI_AC_MASK 0x000003FF
4400aeed3e9SJustin Hibbits
4410aeed3e9SJustin Hibbits #define NIA_KG_DIRECT 0x00000100
4420aeed3e9SJustin Hibbits #define NIA_KG_CC_EN 0x00000200
4430aeed3e9SJustin Hibbits #define NIA_PLCR_ABSOLUTE 0x00008000
4440aeed3e9SJustin Hibbits
4450aeed3e9SJustin Hibbits #define NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA 0x00000202
4460aeed3e9SJustin Hibbits
447852ba100SJustin Hibbits #if defined(FM_OP_NO_VSP_NO_RELEASE_ERRATA_FMAN_A006675) || defined(FM_ERROR_VSP_NO_MATCH_SW006)
448852ba100SJustin Hibbits #define GET_NIA_BMI_AC_ENQ_FRAME(h_FmPcd) \
449852ba100SJustin Hibbits (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
450852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_ENQ_FRAME) : \
451852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_ENQ_FRAME))
452852ba100SJustin Hibbits #define GET_NIA_BMI_AC_DISCARD_FRAME(h_FmPcd) \
453852ba100SJustin Hibbits (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
454852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_DISCARD_FRAME) : \
455852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_DISCARD_FRAME))
456852ba100SJustin Hibbits #define GET_NO_PCD_NIA_BMI_AC_ENQ_FRAME() \
457852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_NO_IPACC_PRE_BMI_ENQ_FRAME)
458852ba100SJustin Hibbits #else
459852ba100SJustin Hibbits #define GET_NIA_BMI_AC_ENQ_FRAME(h_FmPcd) \
460852ba100SJustin Hibbits (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
461852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_ENQ_FRAME) : \
462852ba100SJustin Hibbits (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME))
463852ba100SJustin Hibbits #define GET_NIA_BMI_AC_DISCARD_FRAME(h_FmPcd) \
464852ba100SJustin Hibbits (uint32_t)((FmPcdIsAdvancedOffloadSupported(h_FmPcd)) ? \
465852ba100SJustin Hibbits (NIA_ENG_FM_CTL | NIA_FM_CTL_AC_PRE_BMI_DISCARD_FRAME) : \
466852ba100SJustin Hibbits (NIA_ENG_BMI | NIA_BMI_AC_DISCARD))
467852ba100SJustin Hibbits #define GET_NO_PCD_NIA_BMI_AC_ENQ_FRAME() \
468852ba100SJustin Hibbits (NIA_ENG_BMI | NIA_BMI_AC_ENQ_FRAME)
469852ba100SJustin Hibbits #endif /* defined(FM_OP_NO_VSP_NO_RELEASE_ERRATA_FMAN_A006675) || ... */
470852ba100SJustin Hibbits
471852ba100SJustin Hibbits /**************************************************************************//**
472852ba100SJustin Hibbits @Description CTRL Parameters Page defines
473852ba100SJustin Hibbits *//***************************************************************************/
474852ba100SJustin Hibbits #define FM_CTL_PARAMS_PAGE_OP_FIX_EN 0x80000000
475852ba100SJustin Hibbits #define FM_CTL_PARAMS_PAGE_OFFLOAD_SUPPORT_EN 0x40000000
476852ba100SJustin Hibbits #define FM_CTL_PARAMS_PAGE_ALWAYS_ON 0x00000100
477852ba100SJustin Hibbits
478852ba100SJustin Hibbits #define FM_CTL_PARAMS_PAGE_ERROR_VSP_MASK 0x0000003f
479852ba100SJustin Hibbits
4800aeed3e9SJustin Hibbits /**************************************************************************//**
4810aeed3e9SJustin Hibbits @Description Port Id defines
4820aeed3e9SJustin Hibbits *//***************************************************************************/
483852ba100SJustin Hibbits #if (DPAA_VERSION == 10)
4840aeed3e9SJustin Hibbits #define BASE_OH_PORTID 1
485852ba100SJustin Hibbits #else
486852ba100SJustin Hibbits #define BASE_OH_PORTID 2
487852ba100SJustin Hibbits #endif /* (DPAA_VERSION == 10) */
4880aeed3e9SJustin Hibbits #define BASE_1G_RX_PORTID 8
4890aeed3e9SJustin Hibbits #define BASE_10G_RX_PORTID 0x10
4900aeed3e9SJustin Hibbits #define BASE_1G_TX_PORTID 0x28
4910aeed3e9SJustin Hibbits #define BASE_10G_TX_PORTID 0x30
4920aeed3e9SJustin Hibbits
4930aeed3e9SJustin Hibbits #define FM_PCD_PORT_OH_BASE_INDX 0
4940aeed3e9SJustin Hibbits #define FM_PCD_PORT_1G_RX_BASE_INDX (FM_PCD_PORT_OH_BASE_INDX+FM_MAX_NUM_OF_OH_PORTS)
4950aeed3e9SJustin Hibbits #define FM_PCD_PORT_10G_RX_BASE_INDX (FM_PCD_PORT_1G_RX_BASE_INDX+FM_MAX_NUM_OF_1G_RX_PORTS)
4960aeed3e9SJustin Hibbits #define FM_PCD_PORT_1G_TX_BASE_INDX (FM_PCD_PORT_10G_RX_BASE_INDX+FM_MAX_NUM_OF_10G_RX_PORTS)
4970aeed3e9SJustin Hibbits #define FM_PCD_PORT_10G_TX_BASE_INDX (FM_PCD_PORT_1G_TX_BASE_INDX+FM_MAX_NUM_OF_1G_TX_PORTS)
4980aeed3e9SJustin Hibbits
4990aeed3e9SJustin Hibbits #if (FM_MAX_NUM_OF_OH_PORTS > 0)
5000aeed3e9SJustin Hibbits #define CHECK_PORT_ID_OH_PORTS(_relativePortId) \
5010aeed3e9SJustin Hibbits if ((_relativePortId) >= FM_MAX_NUM_OF_OH_PORTS) \
5020aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id"))
5030aeed3e9SJustin Hibbits #else
5040aeed3e9SJustin Hibbits #define CHECK_PORT_ID_OH_PORTS(_relativePortId) \
5050aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal OH_PORT port id"))
5060aeed3e9SJustin Hibbits #endif
5070aeed3e9SJustin Hibbits #if (FM_MAX_NUM_OF_1G_RX_PORTS > 0)
5080aeed3e9SJustin Hibbits #define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId) \
5090aeed3e9SJustin Hibbits if ((_relativePortId) >= FM_MAX_NUM_OF_1G_RX_PORTS) \
5100aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id"))
5110aeed3e9SJustin Hibbits #else
5120aeed3e9SJustin Hibbits #define CHECK_PORT_ID_1G_RX_PORTS(_relativePortId) \
5130aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_RX_PORT port id"))
5140aeed3e9SJustin Hibbits #endif
5150aeed3e9SJustin Hibbits #if (FM_MAX_NUM_OF_10G_RX_PORTS > 0)
5160aeed3e9SJustin Hibbits #define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId) \
5170aeed3e9SJustin Hibbits if ((_relativePortId) >= FM_MAX_NUM_OF_10G_RX_PORTS) \
5180aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id"))
5190aeed3e9SJustin Hibbits #else
5200aeed3e9SJustin Hibbits #define CHECK_PORT_ID_10G_RX_PORTS(_relativePortId) \
5210aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_RX_PORT port id"))
5220aeed3e9SJustin Hibbits #endif
5230aeed3e9SJustin Hibbits #if (FM_MAX_NUM_OF_1G_TX_PORTS > 0)
5240aeed3e9SJustin Hibbits #define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId) \
5250aeed3e9SJustin Hibbits if ((_relativePortId) >= FM_MAX_NUM_OF_1G_TX_PORTS) \
5260aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id"))
5270aeed3e9SJustin Hibbits #else
5280aeed3e9SJustin Hibbits #define CHECK_PORT_ID_1G_TX_PORTS(_relativePortId) \
5290aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 1G_TX_PORT port id"))
5300aeed3e9SJustin Hibbits #endif
5310aeed3e9SJustin Hibbits #if (FM_MAX_NUM_OF_10G_TX_PORTS > 0)
5320aeed3e9SJustin Hibbits #define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId) \
5330aeed3e9SJustin Hibbits if ((_relativePortId) >= FM_MAX_NUM_OF_10G_TX_PORTS) \
5340aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id"))
5350aeed3e9SJustin Hibbits #else
5360aeed3e9SJustin Hibbits #define CHECK_PORT_ID_10G_TX_PORTS(_relativePortId) \
5370aeed3e9SJustin Hibbits REPORT_ERROR(MAJOR, E_INVALID_VALUE, ("Illegal 10G_TX_PORT port id"))
5380aeed3e9SJustin Hibbits #endif
5390aeed3e9SJustin Hibbits
540852ba100SJustin Hibbits uint8_t SwPortIdToHwPortId(e_FmPortType type, uint8_t relativePortId, uint8_t majorRev, uint8_t minorRev);
5410aeed3e9SJustin Hibbits
5420aeed3e9SJustin Hibbits #define HW_PORT_ID_TO_SW_PORT_ID(_relativePortId, hardwarePortId) \
5430aeed3e9SJustin Hibbits { if (((hardwarePortId) >= BASE_OH_PORTID) && \
5440aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \
5450aeed3e9SJustin Hibbits _relativePortId = (uint8_t)((hardwarePortId)-BASE_OH_PORTID); \
5460aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_10G_TX_PORTID) && \
5470aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS)) \
5480aeed3e9SJustin Hibbits _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID); \
5490aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_1G_TX_PORTID) && \
5500aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS)) \
5510aeed3e9SJustin Hibbits _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID); \
5520aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_10G_RX_PORTID) && \
5530aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS)) \
5540aeed3e9SJustin Hibbits _relativePortId = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID); \
5550aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_1G_RX_PORTID) && \
5560aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS)) \
5570aeed3e9SJustin Hibbits _relativePortId = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID); \
5580aeed3e9SJustin Hibbits else { \
5590aeed3e9SJustin Hibbits _relativePortId = (uint8_t)DUMMY_PORT_ID; \
5600aeed3e9SJustin Hibbits ASSERT_COND(TRUE); \
5610aeed3e9SJustin Hibbits } \
5620aeed3e9SJustin Hibbits }
5630aeed3e9SJustin Hibbits
5640aeed3e9SJustin Hibbits #define HW_PORT_ID_TO_SW_PORT_INDX(swPortIndex, hardwarePortId) \
5650aeed3e9SJustin Hibbits do { \
5660aeed3e9SJustin Hibbits if (((hardwarePortId) >= BASE_OH_PORTID) && ((hardwarePortId) < BASE_OH_PORTID+FM_MAX_NUM_OF_OH_PORTS)) \
5670aeed3e9SJustin Hibbits swPortIndex = (uint8_t)((hardwarePortId)-BASE_OH_PORTID+FM_PCD_PORT_OH_BASE_INDX); \
5680aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_1G_RX_PORTID) && \
5690aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_1G_RX_PORTID+FM_MAX_NUM_OF_1G_RX_PORTS)) \
5700aeed3e9SJustin Hibbits swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_RX_PORTID+FM_PCD_PORT_1G_RX_BASE_INDX); \
5710aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_10G_RX_PORTID) && \
5720aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_10G_RX_PORTID+FM_MAX_NUM_OF_10G_RX_PORTS)) \
5730aeed3e9SJustin Hibbits swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_RX_PORTID+FM_PCD_PORT_10G_RX_BASE_INDX); \
5740aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_1G_TX_PORTID) && \
5750aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_1G_TX_PORTID+FM_MAX_NUM_OF_1G_TX_PORTS)) \
5760aeed3e9SJustin Hibbits swPortIndex = (uint8_t)((hardwarePortId)-BASE_1G_TX_PORTID+FM_PCD_PORT_1G_TX_BASE_INDX); \
5770aeed3e9SJustin Hibbits else if (((hardwarePortId) >= BASE_10G_TX_PORTID) && \
5780aeed3e9SJustin Hibbits ((hardwarePortId) < BASE_10G_TX_PORTID+FM_MAX_NUM_OF_10G_TX_PORTS)) \
5790aeed3e9SJustin Hibbits swPortIndex = (uint8_t)((hardwarePortId)-BASE_10G_TX_PORTID+FM_PCD_PORT_10G_TX_BASE_INDX); \
5800aeed3e9SJustin Hibbits else ASSERT_COND(FALSE); \
5810aeed3e9SJustin Hibbits } while (0)
5820aeed3e9SJustin Hibbits
5830aeed3e9SJustin Hibbits #define SW_PORT_INDX_TO_HW_PORT_ID(hardwarePortId, swPortIndex) \
5840aeed3e9SJustin Hibbits do { \
5850aeed3e9SJustin Hibbits if (((swPortIndex) >= FM_PCD_PORT_OH_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_1G_RX_BASE_INDX)) \
5860aeed3e9SJustin Hibbits hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_OH_BASE_INDX+BASE_OH_PORTID); \
5870aeed3e9SJustin Hibbits else if (((swPortIndex) >= FM_PCD_PORT_1G_RX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_RX_BASE_INDX)) \
5880aeed3e9SJustin Hibbits hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_RX_BASE_INDX+BASE_1G_RX_PORTID); \
5890aeed3e9SJustin Hibbits else if (((swPortIndex) >= FM_PCD_PORT_10G_RX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS)) \
5900aeed3e9SJustin Hibbits hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_RX_BASE_INDX+BASE_10G_RX_PORTID); \
5910aeed3e9SJustin Hibbits else if (((swPortIndex) >= FM_PCD_PORT_1G_TX_BASE_INDX) && ((swPortIndex) < FM_PCD_PORT_10G_TX_BASE_INDX)) \
5920aeed3e9SJustin Hibbits hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_1G_TX_BASE_INDX+BASE_1G_TX_PORTID); \
5930aeed3e9SJustin Hibbits else if (((swPortIndex) >= FM_PCD_PORT_10G_TX_BASE_INDX) && ((swPortIndex) < FM_MAX_NUM_OF_PORTS)) \
5940aeed3e9SJustin Hibbits hardwarePortId = (uint8_t)((swPortIndex)-FM_PCD_PORT_10G_TX_BASE_INDX+BASE_10G_TX_PORTID); \
5950aeed3e9SJustin Hibbits else ASSERT_COND(FALSE); \
5960aeed3e9SJustin Hibbits } while (0)
5970aeed3e9SJustin Hibbits
598852ba100SJustin Hibbits #define BMI_MAX_FIFO_SIZE (FM_MURAM_SIZE)
5990aeed3e9SJustin Hibbits #define BMI_FIFO_UNITS 0x100
6000aeed3e9SJustin Hibbits
6010aeed3e9SJustin Hibbits typedef struct {
6020aeed3e9SJustin Hibbits void (*f_Isr) (t_Handle h_Arg);
6030aeed3e9SJustin Hibbits t_Handle h_SrcHandle;
6040aeed3e9SJustin Hibbits uint8_t guestId;
6050aeed3e9SJustin Hibbits } t_FmIntrSrc;
6060aeed3e9SJustin Hibbits
6070aeed3e9SJustin Hibbits #define ILLEGAL_HDR_NUM 0xFF
6080aeed3e9SJustin Hibbits #define NO_HDR_NUM FM_PCD_PRS_NUM_OF_HDRS
6090aeed3e9SJustin Hibbits
6100aeed3e9SJustin Hibbits #define IS_PRIVATE_HEADER(hdr) (((hdr) == HEADER_TYPE_USER_DEFINED_SHIM1) || \
6110aeed3e9SJustin Hibbits ((hdr) == HEADER_TYPE_USER_DEFINED_SHIM2))
6120aeed3e9SJustin Hibbits #define IS_SPECIAL_HEADER(hdr) ((hdr) == HEADER_TYPE_MACSEC)
6130aeed3e9SJustin Hibbits
GetPrsHdrNum(e_NetHeaderType hdr)614852ba100SJustin Hibbits static __inline__ uint8_t GetPrsHdrNum(e_NetHeaderType hdr)
615852ba100SJustin Hibbits {
616852ba100SJustin Hibbits switch (hdr)
617852ba100SJustin Hibbits { case (HEADER_TYPE_ETH): return 0;
618852ba100SJustin Hibbits case (HEADER_TYPE_LLC_SNAP): return 1;
619852ba100SJustin Hibbits case (HEADER_TYPE_VLAN): return 2;
620852ba100SJustin Hibbits case (HEADER_TYPE_PPPoE): return 3;
621852ba100SJustin Hibbits case (HEADER_TYPE_PPP): return 3;
622852ba100SJustin Hibbits case (HEADER_TYPE_MPLS): return 4;
623852ba100SJustin Hibbits case (HEADER_TYPE_IPv4): return 5;
624852ba100SJustin Hibbits case (HEADER_TYPE_IPv6): return 6;
625852ba100SJustin Hibbits case (HEADER_TYPE_GRE): return 7;
626852ba100SJustin Hibbits case (HEADER_TYPE_MINENCAP): return 8;
627852ba100SJustin Hibbits case (HEADER_TYPE_USER_DEFINED_L3): return 9;
628852ba100SJustin Hibbits case (HEADER_TYPE_TCP): return 10;
629852ba100SJustin Hibbits case (HEADER_TYPE_UDP): return 11;
630852ba100SJustin Hibbits case (HEADER_TYPE_IPSEC_AH):
631852ba100SJustin Hibbits case (HEADER_TYPE_IPSEC_ESP): return 12;
632852ba100SJustin Hibbits case (HEADER_TYPE_SCTP): return 13;
633852ba100SJustin Hibbits case (HEADER_TYPE_DCCP): return 14;
634852ba100SJustin Hibbits case (HEADER_TYPE_USER_DEFINED_L4): return 15;
635852ba100SJustin Hibbits case (HEADER_TYPE_USER_DEFINED_SHIM1):
636852ba100SJustin Hibbits case (HEADER_TYPE_USER_DEFINED_SHIM2):
637852ba100SJustin Hibbits case (HEADER_TYPE_MACSEC): return NO_HDR_NUM;
638852ba100SJustin Hibbits default:
639852ba100SJustin Hibbits return ILLEGAL_HDR_NUM;
6400aeed3e9SJustin Hibbits }
6410aeed3e9SJustin Hibbits }
6420aeed3e9SJustin Hibbits
6430aeed3e9SJustin Hibbits #define FM_PCD_MAX_NUM_OF_OPTIONS(clsPlanEntries) ((clsPlanEntries==256)? 8:((clsPlanEntries==128)? 7: ((clsPlanEntries==64)? 6: ((clsPlanEntries==32)? 5:0))))
6440aeed3e9SJustin Hibbits
6450aeed3e9SJustin Hibbits
6460aeed3e9SJustin Hibbits /**************************************************************************//**
6470aeed3e9SJustin Hibbits @Description A structure for initializing a keygen classification plan group
6480aeed3e9SJustin Hibbits *//***************************************************************************/
6490aeed3e9SJustin Hibbits typedef struct t_FmPcdKgInterModuleClsPlanGrpParams {
6500aeed3e9SJustin Hibbits uint8_t netEnvId; /* IN */
6510aeed3e9SJustin Hibbits bool grpExists; /* OUT (unused in FmPcdKgBuildClsPlanGrp)*/
6520aeed3e9SJustin Hibbits uint8_t clsPlanGrpId; /* OUT */
6530aeed3e9SJustin Hibbits bool emptyClsPlanGrp; /* OUT */
6540aeed3e9SJustin Hibbits uint8_t numOfOptions; /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/
6550aeed3e9SJustin Hibbits protocolOpt_t options[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)];
6560aeed3e9SJustin Hibbits /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/
6570aeed3e9SJustin Hibbits uint32_t optVectors[FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)];
6580aeed3e9SJustin Hibbits /* OUT in FmPcdGetSetClsPlanGrpParams IN in FmPcdKgBuildClsPlanGrp*/
6590aeed3e9SJustin Hibbits } t_FmPcdKgInterModuleClsPlanGrpParams;
6600aeed3e9SJustin Hibbits
661852ba100SJustin Hibbits typedef struct t_FmPcdLock {
662852ba100SJustin Hibbits t_Handle h_Spinlock;
663852ba100SJustin Hibbits volatile bool flag;
664852ba100SJustin Hibbits t_List node;
665852ba100SJustin Hibbits } t_FmPcdLock;
666852ba100SJustin Hibbits #define FM_PCD_LOCK_OBJ(ptr) NCSW_LIST_OBJECT(ptr, t_FmPcdLock, node)
6670aeed3e9SJustin Hibbits
6680aeed3e9SJustin Hibbits
6690aeed3e9SJustin Hibbits typedef t_Error (t_FmPortGetSetCcParamsCallback) (t_Handle h_FmPort,
6700aeed3e9SJustin Hibbits t_FmPortGetSetCcParams *p_FmPortGetSetCcParams);
6710aeed3e9SJustin Hibbits
6720aeed3e9SJustin Hibbits
673852ba100SJustin Hibbits /***********************************************************************/
674852ba100SJustin Hibbits /* Common API for FM-PCD module */
675852ba100SJustin Hibbits /***********************************************************************/
6760aeed3e9SJustin Hibbits t_Handle FmPcdGetHcHandle(t_Handle h_FmPcd);
6770aeed3e9SJustin Hibbits uint32_t FmPcdGetSwPrsOffset(t_Handle h_FmPcd, e_NetHeaderType hdr, uint8_t indexPerHdr);
6780aeed3e9SJustin Hibbits uint32_t FmPcdGetLcv(t_Handle h_FmPcd, uint32_t netEnvId, uint8_t hdrNum);
6790aeed3e9SJustin Hibbits uint32_t FmPcdGetMacsecLcv(t_Handle h_FmPcd, uint32_t netEnvId);
6800aeed3e9SJustin Hibbits void FmPcdIncNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId);
6810aeed3e9SJustin Hibbits void FmPcdDecNetEnvOwners(t_Handle h_FmPcd, uint8_t netEnvId);
682852ba100SJustin Hibbits uint8_t FmPcdGetNetEnvId(t_Handle h_NetEnv);
6830aeed3e9SJustin Hibbits void FmPcdPortRegister(t_Handle h_FmPcd, t_Handle h_FmPort, uint8_t hardwarePortId);
6840aeed3e9SJustin Hibbits uint32_t FmPcdLock(t_Handle h_FmPcd);
6850aeed3e9SJustin Hibbits void FmPcdUnlock(t_Handle h_FmPcd, uint32_t intFlags);
6860aeed3e9SJustin Hibbits bool FmPcdNetEnvIsHdrExist(t_Handle h_FmPcd, uint8_t netEnvId, e_NetHeaderType hdr);
687852ba100SJustin Hibbits t_Error FmPcdFragHcScratchPoolInit(t_Handle h_FmPcd, uint8_t scratchBpid);
688852ba100SJustin Hibbits t_Error FmPcdRegisterReassmPort(t_Handle h_FmPcd, t_Handle h_IpReasmCommonPramTbl);
689852ba100SJustin Hibbits t_Error FmPcdUnregisterReassmPort(t_Handle h_FmPcd, t_Handle h_IpReasmCommonPramTbl);
690852ba100SJustin Hibbits bool FmPcdIsAdvancedOffloadSupported(t_Handle h_FmPcd);
691852ba100SJustin Hibbits bool FmPcdLockTryLockAll(t_Handle h_FmPcd);
692852ba100SJustin Hibbits void FmPcdLockUnlockAll(t_Handle h_FmPcd);
693852ba100SJustin Hibbits t_Error FmPcdHcSync(t_Handle h_FmPcd);
694852ba100SJustin Hibbits t_Handle FmGetPcd(t_Handle h_Fm);
695852ba100SJustin Hibbits /***********************************************************************/
696852ba100SJustin Hibbits /* Common API for FM-PCD KG module */
697852ba100SJustin Hibbits /***********************************************************************/
6980aeed3e9SJustin Hibbits uint8_t FmPcdKgGetClsPlanGrpBase(t_Handle h_FmPcd, uint8_t clsPlanGrp);
6990aeed3e9SJustin Hibbits uint16_t FmPcdKgGetClsPlanGrpSize(t_Handle h_FmPcd, uint8_t clsPlanGrp);
7000aeed3e9SJustin Hibbits t_Error FmPcdKgBuildClsPlanGrp(t_Handle h_FmPcd, t_FmPcdKgInterModuleClsPlanGrpParams *p_Grp, t_FmPcdKgInterModuleClsPlanSet *p_ClsPlanSet);
701852ba100SJustin Hibbits
702852ba100SJustin Hibbits uint8_t FmPcdKgGetSchemeId(t_Handle h_Scheme);
703852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
704852ba100SJustin Hibbits bool FmPcdKgGetVspe(t_Handle h_Scheme);
705852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
7060aeed3e9SJustin Hibbits uint8_t FmPcdKgGetRelativeSchemeId(t_Handle h_FmPcd, uint8_t schemeId);
7070aeed3e9SJustin Hibbits void FmPcdKgDestroyClsPlanGrp(t_Handle h_FmPcd, uint8_t grpId);
708852ba100SJustin Hibbits t_Error FmPcdKgCheckInvalidateSchemeSw(t_Handle h_Scheme);
7090aeed3e9SJustin Hibbits t_Error FmPcdKgBuildBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_BindPortToSchemes, uint32_t *p_SpReg, bool add);
7100aeed3e9SJustin Hibbits bool FmPcdKgHwSchemeIsValid(uint32_t schemeModeReg);
7110aeed3e9SJustin Hibbits uint32_t FmPcdKgBuildWriteSchemeActionReg(uint8_t schemeId, bool updateCounter);
7120aeed3e9SJustin Hibbits uint32_t FmPcdKgBuildReadSchemeActionReg(uint8_t schemeId);
7130aeed3e9SJustin Hibbits uint32_t FmPcdKgBuildWriteClsPlanBlockActionReg(uint8_t grpId);
7140aeed3e9SJustin Hibbits uint32_t FmPcdKgBuildWritePortSchemeBindActionReg(uint8_t hardwarePortId);
7150aeed3e9SJustin Hibbits uint32_t FmPcdKgBuildReadPortSchemeBindActionReg(uint8_t hardwarePortId);
7160aeed3e9SJustin Hibbits uint32_t FmPcdKgBuildWritePortClsPlanBindActionReg(uint8_t hardwarePortId);
717852ba100SJustin Hibbits bool FmPcdKgIsSchemeValidSw(t_Handle h_Scheme);
7180aeed3e9SJustin Hibbits
7190aeed3e9SJustin Hibbits t_Error FmPcdKgBindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind);
7200aeed3e9SJustin Hibbits t_Error FmPcdKgUnbindPortToSchemes(t_Handle h_FmPcd , t_FmPcdKgInterModuleBindPortToSchemes *p_SchemeBind);
7210aeed3e9SJustin Hibbits uint32_t FmPcdKgGetRequiredAction(t_Handle h_FmPcd, uint8_t schemeId);
722852ba100SJustin Hibbits uint32_t FmPcdKgGetRequiredActionFlag(t_Handle h_FmPcd, uint8_t schemeId);
7230aeed3e9SJustin Hibbits e_FmPcdDoneAction FmPcdKgGetDoneAction(t_Handle h_FmPcd, uint8_t schemeId);
7240aeed3e9SJustin Hibbits e_FmPcdEngine FmPcdKgGetNextEngine(t_Handle h_FmPcd, uint8_t schemeId);
725852ba100SJustin Hibbits void FmPcdKgUpdateRequiredAction(t_Handle h_Scheme, uint32_t requiredAction);
7260aeed3e9SJustin Hibbits bool FmPcdKgIsDirectPlcr(t_Handle h_FmPcd, uint8_t schemeId);
7270aeed3e9SJustin Hibbits bool FmPcdKgIsDistrOnPlcrProfile(t_Handle h_FmPcd, uint8_t schemeId);
7280aeed3e9SJustin Hibbits uint16_t FmPcdKgGetRelativeProfileId(t_Handle h_FmPcd, uint8_t schemeId);
729852ba100SJustin Hibbits t_Handle FmPcdKgGetSchemeHandle(t_Handle h_FmPcd, uint8_t relativeSchemeId);
730852ba100SJustin Hibbits bool FmPcdKgIsSchemeHasOwners(t_Handle h_Scheme);
731852ba100SJustin Hibbits t_Error FmPcdKgCcGetSetParams(t_Handle h_FmPcd, t_Handle h_Scheme, uint32_t requiredAction, uint32_t value);
732852ba100SJustin Hibbits t_Error FmPcdKgSetOrBindToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t netEnvId, protocolOpt_t *p_OptArray, uint8_t *p_ClsPlanGrpId, bool *p_IsEmptyClsPlanGrp);
733852ba100SJustin Hibbits t_Error FmPcdKgDeleteOrUnbindPortToClsPlanGrp(t_Handle h_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId);
7340aeed3e9SJustin Hibbits
735852ba100SJustin Hibbits /***********************************************************************/
736852ba100SJustin Hibbits /* Common API for FM-PCD parser module */
737852ba100SJustin Hibbits /***********************************************************************/
7380aeed3e9SJustin Hibbits t_Error FmPcdPrsIncludePortInStatistics(t_Handle p_FmPcd, uint8_t hardwarePortId, bool include);
7390aeed3e9SJustin Hibbits
740852ba100SJustin Hibbits /***********************************************************************/
741852ba100SJustin Hibbits /* Common API for FM-PCD policer module */
742852ba100SJustin Hibbits /***********************************************************************/
7430aeed3e9SJustin Hibbits t_Error FmPcdPlcrAllocProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId, uint16_t numOfProfiles);
7440aeed3e9SJustin Hibbits t_Error FmPcdPlcrFreeProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId);
7450aeed3e9SJustin Hibbits bool FmPcdPlcrIsProfileValid(t_Handle h_FmPcd, uint16_t absoluteProfileId);
7460aeed3e9SJustin Hibbits uint16_t FmPcdPlcrGetPortProfilesBase(t_Handle h_FmPcd, uint8_t hardwarePortId);
7470aeed3e9SJustin Hibbits uint16_t FmPcdPlcrGetPortNumOfProfiles(t_Handle h_FmPcd, uint8_t hardwarePortId);
7480aeed3e9SJustin Hibbits uint32_t FmPcdPlcrBuildWritePlcrActionRegs(uint16_t absoluteProfileId);
7490aeed3e9SJustin Hibbits uint32_t FmPcdPlcrBuildCounterProfileReg(e_FmPcdPlcrProfileCounters counter);
7500aeed3e9SJustin Hibbits uint32_t FmPcdPlcrBuildWritePlcrActionReg(uint16_t absoluteProfileId);
7510aeed3e9SJustin Hibbits uint32_t FmPcdPlcrBuildReadPlcrActionReg(uint16_t absoluteProfileId);
752852ba100SJustin Hibbits uint16_t FmPcdPlcrProfileGetAbsoluteId(t_Handle h_Profile);
753852ba100SJustin Hibbits t_Error FmPcdPlcrGetAbsoluteIdByProfileParams(t_Handle h_FmPcd,
7540aeed3e9SJustin Hibbits e_FmPcdProfileTypeSelection profileType,
7550aeed3e9SJustin Hibbits t_Handle h_FmPort,
7560aeed3e9SJustin Hibbits uint16_t relativeProfile,
7570aeed3e9SJustin Hibbits uint16_t *p_AbsoluteId);
7580aeed3e9SJustin Hibbits void FmPcdPlcrInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId);
7590aeed3e9SJustin Hibbits void FmPcdPlcrValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId);
7600aeed3e9SJustin Hibbits bool FmPcdPlcrHwProfileIsValid(uint32_t profileModeReg);
7610aeed3e9SJustin Hibbits uint32_t FmPcdPlcrGetRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId);
762852ba100SJustin Hibbits uint32_t FmPcdPlcrGetRequiredActionFlag(t_Handle h_FmPcd, uint16_t absoluteProfileId);
7630aeed3e9SJustin Hibbits uint32_t FmPcdPlcrBuildNiaProfileReg(bool green, bool yellow, bool red);
7640aeed3e9SJustin Hibbits void FmPcdPlcrUpdateRequiredAction(t_Handle h_FmPcd, uint16_t absoluteProfileId, uint32_t requiredAction);
765852ba100SJustin Hibbits t_Error FmPcdPlcrCcGetSetParams(t_Handle h_FmPcd, uint16_t profileIndx,uint32_t requiredAction);
7660aeed3e9SJustin Hibbits
767852ba100SJustin Hibbits /***********************************************************************/
768852ba100SJustin Hibbits /* Common API for FM-PCD CC module */
769852ba100SJustin Hibbits /***********************************************************************/
7700aeed3e9SJustin Hibbits uint8_t FmPcdCcGetParseCode(t_Handle h_CcNode);
7710aeed3e9SJustin Hibbits uint8_t FmPcdCcGetOffset(t_Handle h_CcNode);
772852ba100SJustin Hibbits t_Error FmPcdCcRemoveKey(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint16_t keyIndex);
773852ba100SJustin Hibbits t_Error FmPcdCcAddKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint16_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPCdCcKeyParams);
774852ba100SJustin Hibbits t_Error FmPcdCcModifyKey(t_Handle h_FmPcd, t_Handle h_CcNode, uint16_t keyIndex, uint8_t keySize, uint8_t *p_Key, uint8_t *p_Mask);
775852ba100SJustin Hibbits t_Error FmPcdCcModifyKeyAndNextEngine(t_Handle h_FmPcd, t_Handle h_FmPcdCcNode, uint16_t keyIndex, uint8_t keySize, t_FmPcdCcKeyParams *p_FmPcdCcKeyParams);
776852ba100SJustin Hibbits t_Error FmPcdCcModifyMissNextEngineParamNode(t_Handle h_FmPcd,t_Handle h_FmPcdCcNode, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams);
777852ba100SJustin Hibbits t_Error FmPcdCcModifyNextEngineParamTree(t_Handle h_FmPcd, t_Handle h_FmPcdCcTree, uint8_t grpId, uint8_t index, t_FmPcdCcNextEngineParams *p_FmPcdCcNextEngineParams);
778852ba100SJustin Hibbits uint32_t FmPcdCcGetNodeAddrOffsetFromNodeInfo(t_Handle h_FmPcd, t_Handle h_Pointer);
779852ba100SJustin Hibbits t_Handle FmPcdCcTreeGetSavedManipParams(t_Handle h_FmTree);
780852ba100SJustin Hibbits void FmPcdCcTreeSetSavedManipParams(t_Handle h_FmTree, t_Handle h_SavedManipParams);
781852ba100SJustin Hibbits t_Error FmPcdCcTreeAddIPR(t_Handle h_FmPcd, t_Handle h_FmTree, t_Handle h_NetEnv, t_Handle h_ReassemblyManip, bool schemes);
782852ba100SJustin Hibbits t_Error FmPcdCcTreeAddCPR(t_Handle h_FmPcd, t_Handle h_FmTree, t_Handle h_NetEnv, t_Handle h_ReassemblyManip, bool schemes);
783852ba100SJustin Hibbits t_Error FmPcdCcBindTree(t_Handle h_FmPcd, t_Handle h_PcdParams, t_Handle h_CcTree, uint32_t *p_Offset,t_Handle h_FmPort);
7840aeed3e9SJustin Hibbits t_Error FmPcdCcUnbindTree(t_Handle h_FmPcd, t_Handle h_CcTree);
7850aeed3e9SJustin Hibbits
786852ba100SJustin Hibbits /***********************************************************************/
787852ba100SJustin Hibbits /* Common API for FM-PCD Manip module */
788852ba100SJustin Hibbits /***********************************************************************/
789852ba100SJustin Hibbits t_Error FmPcdManipUpdate(t_Handle h_FmPcd, t_Handle h_PcdParams, t_Handle h_FmPort, t_Handle h_Manip, t_Handle h_Ad, bool validate, int level, t_Handle h_FmTree, bool modify);
7900aeed3e9SJustin Hibbits
791852ba100SJustin Hibbits /***********************************************************************/
792852ba100SJustin Hibbits /* Common API for FM-Port module */
793852ba100SJustin Hibbits /***********************************************************************/
794852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
795852ba100SJustin Hibbits typedef enum e_FmPortGprFuncType
796852ba100SJustin Hibbits {
797852ba100SJustin Hibbits e_FM_PORT_GPR_EMPTY = 0,
798852ba100SJustin Hibbits e_FM_PORT_GPR_MURAM_PAGE
799852ba100SJustin Hibbits } e_FmPortGprFuncType;
800852ba100SJustin Hibbits
801852ba100SJustin Hibbits t_Error FmPortSetGprFunc(t_Handle h_FmPort, e_FmPortGprFuncType gprFunc, void **p_Value);
802852ba100SJustin Hibbits #endif /* DPAA_VERSION >= 11) */
803852ba100SJustin Hibbits t_Error FmGetSetParams(t_Handle h_Fm, t_FmGetSetParams *p_FmGetSetParams);
804852ba100SJustin Hibbits t_Error FmPortGetSetCcParams(t_Handle h_FmPort, t_FmPortGetSetCcParams *p_FmPortGetSetCcParams);
8050aeed3e9SJustin Hibbits uint8_t FmPortGetNetEnvId(t_Handle h_FmPort);
8060aeed3e9SJustin Hibbits uint8_t FmPortGetHardwarePortId(t_Handle h_FmPort);
8070aeed3e9SJustin Hibbits uint32_t FmPortGetPcdEngines(t_Handle h_FmPort);
8080aeed3e9SJustin Hibbits void FmPortPcdKgSwUnbindClsPlanGrp (t_Handle h_FmPort);
8090aeed3e9SJustin Hibbits
8100aeed3e9SJustin Hibbits
811852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
812852ba100SJustin Hibbits t_Error FmPcdFrmReplicUpdate(t_Handle h_FmPcd, t_Handle h_FmPort, t_Handle h_FrmReplic);
813852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
814852ba100SJustin Hibbits
8150aeed3e9SJustin Hibbits /**************************************************************************//**
8160aeed3e9SJustin Hibbits @Function FmRegisterIntr
8170aeed3e9SJustin Hibbits
8180aeed3e9SJustin Hibbits @Description Used to register an inter-module event handler to be processed by FM
8190aeed3e9SJustin Hibbits
8200aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
8210aeed3e9SJustin Hibbits @Param[in] mod The module that causes the event
8220aeed3e9SJustin Hibbits @Param[in] modId Module id - if more than 1 instansiation of this
8230aeed3e9SJustin Hibbits mode exists,0 otherwise.
8240aeed3e9SJustin Hibbits @Param[in] intrType Interrupt type (error/normal) selection.
8250aeed3e9SJustin Hibbits @Param[in] f_Isr The interrupt service routine.
8260aeed3e9SJustin Hibbits @Param[in] h_Arg Argument to be passed to f_Isr.
8270aeed3e9SJustin Hibbits
8280aeed3e9SJustin Hibbits @Return None.
8290aeed3e9SJustin Hibbits *//***************************************************************************/
8300aeed3e9SJustin Hibbits void FmRegisterIntr(t_Handle h_Fm,
8310aeed3e9SJustin Hibbits e_FmEventModules mod,
8320aeed3e9SJustin Hibbits uint8_t modId,
8330aeed3e9SJustin Hibbits e_FmIntrType intrType,
8340aeed3e9SJustin Hibbits void (*f_Isr) (t_Handle h_Arg),
8350aeed3e9SJustin Hibbits t_Handle h_Arg);
8360aeed3e9SJustin Hibbits
8370aeed3e9SJustin Hibbits /**************************************************************************//**
8380aeed3e9SJustin Hibbits @Function FmUnregisterIntr
8390aeed3e9SJustin Hibbits
8400aeed3e9SJustin Hibbits @Description Used to un-register an inter-module event handler that was processed by FM
8410aeed3e9SJustin Hibbits
8420aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
8430aeed3e9SJustin Hibbits @Param[in] mod The module that causes the event
8440aeed3e9SJustin Hibbits @Param[in] modId Module id - if more than 1 instansiation of this
8450aeed3e9SJustin Hibbits mode exists,0 otherwise.
8460aeed3e9SJustin Hibbits @Param[in] intrType Interrupt type (error/normal) selection.
8470aeed3e9SJustin Hibbits
8480aeed3e9SJustin Hibbits @Return None.
8490aeed3e9SJustin Hibbits *//***************************************************************************/
8500aeed3e9SJustin Hibbits void FmUnregisterIntr(t_Handle h_Fm,
8510aeed3e9SJustin Hibbits e_FmEventModules mod,
8520aeed3e9SJustin Hibbits uint8_t modId,
8530aeed3e9SJustin Hibbits e_FmIntrType intrType);
8540aeed3e9SJustin Hibbits
8550aeed3e9SJustin Hibbits /**************************************************************************//**
8560aeed3e9SJustin Hibbits @Function FmRegisterFmCtlIntr
8570aeed3e9SJustin Hibbits
8580aeed3e9SJustin Hibbits @Description Used to register to one of the fmCtl events in the FM module
8590aeed3e9SJustin Hibbits
8600aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
8610aeed3e9SJustin Hibbits @Param[in] eventRegId FmCtl event id (0-7).
8620aeed3e9SJustin Hibbits @Param[in] f_Isr The interrupt service routine.
8630aeed3e9SJustin Hibbits
8640aeed3e9SJustin Hibbits @Return E_OK on success; Error code otherwise.
8650aeed3e9SJustin Hibbits
8660aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
8670aeed3e9SJustin Hibbits *//***************************************************************************/
8680aeed3e9SJustin Hibbits void FmRegisterFmCtlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event));
8690aeed3e9SJustin Hibbits
8700aeed3e9SJustin Hibbits
8710aeed3e9SJustin Hibbits /**************************************************************************//**
8720aeed3e9SJustin Hibbits @Description enum for defining MAC types
8730aeed3e9SJustin Hibbits *//***************************************************************************/
8740aeed3e9SJustin Hibbits typedef enum e_FmMacType {
8750aeed3e9SJustin Hibbits e_FM_MAC_10G = 0, /**< 10G MAC */
8760aeed3e9SJustin Hibbits e_FM_MAC_1G /**< 1G MAC */
8770aeed3e9SJustin Hibbits } e_FmMacType;
8780aeed3e9SJustin Hibbits
8790aeed3e9SJustin Hibbits /**************************************************************************//**
8800aeed3e9SJustin Hibbits @Description Structure for port-FM communication during FM_PORT_Init.
8810aeed3e9SJustin Hibbits Fields commented 'IN' are passed by the port module to be used
8820aeed3e9SJustin Hibbits by the FM module.
8830aeed3e9SJustin Hibbits Fields commented 'OUT' will be filled by FM before returning to port.
8840aeed3e9SJustin Hibbits Some fields are optional (depending on configuration) and
8850aeed3e9SJustin Hibbits will be analized by the port and FM modules accordingly.
8860aeed3e9SJustin Hibbits *//***************************************************************************/
8870aeed3e9SJustin Hibbits typedef struct t_FmInterModulePortInitParams {
8880aeed3e9SJustin Hibbits uint8_t hardwarePortId; /**< IN. port Id */
8890aeed3e9SJustin Hibbits e_FmPortType portType; /**< IN. Port type */
8900aeed3e9SJustin Hibbits bool independentMode; /**< IN. TRUE if FM Port operates in independent mode */
8910aeed3e9SJustin Hibbits uint16_t liodnOffset; /**< IN. Port's requested resource */
8920aeed3e9SJustin Hibbits uint8_t numOfTasks; /**< IN. Port's requested resource */
8930aeed3e9SJustin Hibbits uint8_t numOfExtraTasks; /**< IN. Port's requested resource */
8940aeed3e9SJustin Hibbits uint8_t numOfOpenDmas; /**< IN. Port's requested resource */
8950aeed3e9SJustin Hibbits uint8_t numOfExtraOpenDmas; /**< IN. Port's requested resource */
8960aeed3e9SJustin Hibbits uint32_t sizeOfFifo; /**< IN. Port's requested resource */
8970aeed3e9SJustin Hibbits uint32_t extraSizeOfFifo; /**< IN. Port's requested resource */
8980aeed3e9SJustin Hibbits uint8_t deqPipelineDepth; /**< IN. Port's requested resource */
899852ba100SJustin Hibbits uint16_t maxFrameLength; /**< IN. Port's max frame length. */
9000aeed3e9SJustin Hibbits uint16_t liodnBase; /**< IN. Irrelevant for P4080 rev 1.
9010aeed3e9SJustin Hibbits LIODN base for this port, to be
9020aeed3e9SJustin Hibbits used together with LIODN offset. */
9030aeed3e9SJustin Hibbits t_FmPhysAddr fmMuramPhysBaseAddr;/**< OUT. FM-MURAM physical address*/
9040aeed3e9SJustin Hibbits } t_FmInterModulePortInitParams;
9050aeed3e9SJustin Hibbits
9060aeed3e9SJustin Hibbits /**************************************************************************//**
9070aeed3e9SJustin Hibbits @Description Structure for port-FM communication during FM_PORT_Free.
9080aeed3e9SJustin Hibbits *//***************************************************************************/
9090aeed3e9SJustin Hibbits typedef struct t_FmInterModulePortFreeParams {
9100aeed3e9SJustin Hibbits uint8_t hardwarePortId; /**< IN. port Id */
9110aeed3e9SJustin Hibbits e_FmPortType portType; /**< IN. Port type */
9120aeed3e9SJustin Hibbits uint8_t deqPipelineDepth; /**< IN. Port's requested resource */
9130aeed3e9SJustin Hibbits } t_FmInterModulePortFreeParams;
9140aeed3e9SJustin Hibbits
9150aeed3e9SJustin Hibbits /**************************************************************************//**
9160aeed3e9SJustin Hibbits @Function FmGetPcdPrsBaseAddr
9170aeed3e9SJustin Hibbits
9180aeed3e9SJustin Hibbits @Description Get the base address of the Parser from the FM module
9190aeed3e9SJustin Hibbits
9200aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9210aeed3e9SJustin Hibbits
9220aeed3e9SJustin Hibbits @Return Base address.
9230aeed3e9SJustin Hibbits *//***************************************************************************/
9240aeed3e9SJustin Hibbits uintptr_t FmGetPcdPrsBaseAddr(t_Handle h_Fm);
9250aeed3e9SJustin Hibbits
9260aeed3e9SJustin Hibbits /**************************************************************************//**
9270aeed3e9SJustin Hibbits @Function FmGetPcdKgBaseAddr
9280aeed3e9SJustin Hibbits
9290aeed3e9SJustin Hibbits @Description Get the base address of the Keygen from the FM module
9300aeed3e9SJustin Hibbits
9310aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9320aeed3e9SJustin Hibbits
9330aeed3e9SJustin Hibbits @Return Base address.
9340aeed3e9SJustin Hibbits *//***************************************************************************/
9350aeed3e9SJustin Hibbits uintptr_t FmGetPcdKgBaseAddr(t_Handle h_Fm);
9360aeed3e9SJustin Hibbits
9370aeed3e9SJustin Hibbits /**************************************************************************//**
9380aeed3e9SJustin Hibbits @Function FmGetPcdPlcrBaseAddr
9390aeed3e9SJustin Hibbits
9400aeed3e9SJustin Hibbits @Description Get the base address of the Policer from the FM module
9410aeed3e9SJustin Hibbits
9420aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9430aeed3e9SJustin Hibbits
9440aeed3e9SJustin Hibbits @Return Base address.
9450aeed3e9SJustin Hibbits *//***************************************************************************/
9460aeed3e9SJustin Hibbits uintptr_t FmGetPcdPlcrBaseAddr(t_Handle h_Fm);
9470aeed3e9SJustin Hibbits
9480aeed3e9SJustin Hibbits /**************************************************************************//**
9490aeed3e9SJustin Hibbits @Function FmGetMuramHandle
9500aeed3e9SJustin Hibbits
9510aeed3e9SJustin Hibbits @Description Get the handle of the MURAM from the FM module
9520aeed3e9SJustin Hibbits
9530aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9540aeed3e9SJustin Hibbits
9550aeed3e9SJustin Hibbits @Return MURAM module handle.
9560aeed3e9SJustin Hibbits *//***************************************************************************/
9570aeed3e9SJustin Hibbits t_Handle FmGetMuramHandle(t_Handle h_Fm);
9580aeed3e9SJustin Hibbits
9590aeed3e9SJustin Hibbits /**************************************************************************//**
9600aeed3e9SJustin Hibbits @Function FmGetPhysicalMuramBase
9610aeed3e9SJustin Hibbits
9620aeed3e9SJustin Hibbits @Description Get the physical base address of the MURAM from the FM module
9630aeed3e9SJustin Hibbits
9640aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9650aeed3e9SJustin Hibbits @Param[in] fmPhysAddr Physical MURAM base
9660aeed3e9SJustin Hibbits
9670aeed3e9SJustin Hibbits @Return Physical base address.
9680aeed3e9SJustin Hibbits *//***************************************************************************/
9690aeed3e9SJustin Hibbits void FmGetPhysicalMuramBase(t_Handle h_Fm, t_FmPhysAddr *fmPhysAddr);
9700aeed3e9SJustin Hibbits
9710aeed3e9SJustin Hibbits /**************************************************************************//**
9720aeed3e9SJustin Hibbits @Function FmGetTimeStampScale
9730aeed3e9SJustin Hibbits
9740aeed3e9SJustin Hibbits @Description Used internally by other modules in order to get the timeStamp
9750aeed3e9SJustin Hibbits period as requested by the application.
9760aeed3e9SJustin Hibbits
977852ba100SJustin Hibbits This function returns bit number that is incremented every 1 usec.
978852ba100SJustin Hibbits To calculate timestamp period in nsec, use
979852ba100SJustin Hibbits 1000 / (1 << FmGetTimeStampScale()).
980852ba100SJustin Hibbits
9810aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9820aeed3e9SJustin Hibbits
983852ba100SJustin Hibbits @Return Bit that counts 1 usec.
9840aeed3e9SJustin Hibbits
9850aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
9860aeed3e9SJustin Hibbits *//***************************************************************************/
9870aeed3e9SJustin Hibbits uint32_t FmGetTimeStampScale(t_Handle h_Fm);
9880aeed3e9SJustin Hibbits
9890aeed3e9SJustin Hibbits /**************************************************************************//**
9900aeed3e9SJustin Hibbits @Function FmResumeStalledPort
9910aeed3e9SJustin Hibbits
9920aeed3e9SJustin Hibbits @Description Used internally by FM port to release a stalled port.
9930aeed3e9SJustin Hibbits
9940aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
9950aeed3e9SJustin Hibbits @Param[in] hardwarePortId HW port id.
9960aeed3e9SJustin Hibbits
9970aeed3e9SJustin Hibbits @Return E_OK on success; Error code otherwise.
9980aeed3e9SJustin Hibbits
9990aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
10000aeed3e9SJustin Hibbits *//***************************************************************************/
10010aeed3e9SJustin Hibbits t_Error FmResumeStalledPort(t_Handle h_Fm, uint8_t hardwarePortId);
10020aeed3e9SJustin Hibbits
10030aeed3e9SJustin Hibbits /**************************************************************************//**
10040aeed3e9SJustin Hibbits @Function FmIsPortStalled
10050aeed3e9SJustin Hibbits
10060aeed3e9SJustin Hibbits @Description Used internally by FM port to read the port's status.
10070aeed3e9SJustin Hibbits
10080aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
10090aeed3e9SJustin Hibbits @Param[in] hardwarePortId HW port id.
10100aeed3e9SJustin Hibbits @Param[in] p_IsStalled A pointer to the boolean port stalled state
10110aeed3e9SJustin Hibbits
10120aeed3e9SJustin Hibbits @Return E_OK on success; Error code otherwise.
10130aeed3e9SJustin Hibbits
10140aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
10150aeed3e9SJustin Hibbits *//***************************************************************************/
10160aeed3e9SJustin Hibbits t_Error FmIsPortStalled(t_Handle h_Fm, uint8_t hardwarePortId, bool *p_IsStalled);
10170aeed3e9SJustin Hibbits
10180aeed3e9SJustin Hibbits /**************************************************************************//**
10190aeed3e9SJustin Hibbits @Function FmResetMac
10200aeed3e9SJustin Hibbits
10210aeed3e9SJustin Hibbits @Description Used by MAC driver to reset the MAC registers
10220aeed3e9SJustin Hibbits
10230aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
10240aeed3e9SJustin Hibbits @Param[in] type MAC type.
10250aeed3e9SJustin Hibbits @Param[in] macId MAC id - according to type.
10260aeed3e9SJustin Hibbits
10270aeed3e9SJustin Hibbits @Return E_OK on success; Error code otherwise.
10280aeed3e9SJustin Hibbits
10290aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
10300aeed3e9SJustin Hibbits *//***************************************************************************/
10310aeed3e9SJustin Hibbits t_Error FmResetMac(t_Handle h_Fm, e_FmMacType type, uint8_t macId);
10320aeed3e9SJustin Hibbits
10330aeed3e9SJustin Hibbits /**************************************************************************//**
10340aeed3e9SJustin Hibbits @Function FmGetClockFreq
10350aeed3e9SJustin Hibbits
10360aeed3e9SJustin Hibbits @Description Used by MAC driver to get the FM clock frequency
10370aeed3e9SJustin Hibbits
10380aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
10390aeed3e9SJustin Hibbits
10400aeed3e9SJustin Hibbits @Return clock-freq on success; 0 otherwise.
10410aeed3e9SJustin Hibbits
10420aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
10430aeed3e9SJustin Hibbits *//***************************************************************************/
10440aeed3e9SJustin Hibbits uint16_t FmGetClockFreq(t_Handle h_Fm);
10450aeed3e9SJustin Hibbits
10460aeed3e9SJustin Hibbits /**************************************************************************//**
1047852ba100SJustin Hibbits @Function FmGetMacClockFreq
1048852ba100SJustin Hibbits
1049852ba100SJustin Hibbits @Description Used by MAC driver to get the MAC clock frequency
1050852ba100SJustin Hibbits
1051852ba100SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
1052852ba100SJustin Hibbits
1053852ba100SJustin Hibbits @Return clock-freq on success; 0 otherwise.
1054852ba100SJustin Hibbits
1055852ba100SJustin Hibbits @Cautions Allowed only following FM_Init().
1056852ba100SJustin Hibbits *//***************************************************************************/
1057852ba100SJustin Hibbits uint16_t FmGetMacClockFreq(t_Handle h_Fm);
1058852ba100SJustin Hibbits
1059852ba100SJustin Hibbits /**************************************************************************//**
10600aeed3e9SJustin Hibbits @Function FmGetId
10610aeed3e9SJustin Hibbits
10620aeed3e9SJustin Hibbits @Description Used by PCD driver to read rhe FM id
10630aeed3e9SJustin Hibbits
10640aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
10650aeed3e9SJustin Hibbits
10660aeed3e9SJustin Hibbits @Return E_OK on success; Error code otherwise.
10670aeed3e9SJustin Hibbits
10680aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
10690aeed3e9SJustin Hibbits *//***************************************************************************/
10700aeed3e9SJustin Hibbits uint8_t FmGetId(t_Handle h_Fm);
10710aeed3e9SJustin Hibbits
10720aeed3e9SJustin Hibbits /**************************************************************************//**
1073852ba100SJustin Hibbits @Function FmReset
1074852ba100SJustin Hibbits
1075852ba100SJustin Hibbits @Description Used to reset the FM
1076852ba100SJustin Hibbits
1077852ba100SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
1078852ba100SJustin Hibbits
1079852ba100SJustin Hibbits @Return E_OK on success; Error code otherwise.
1080852ba100SJustin Hibbits *//***************************************************************************/
1081852ba100SJustin Hibbits t_Error FmReset(t_Handle h_Fm);
1082852ba100SJustin Hibbits
1083852ba100SJustin Hibbits /**************************************************************************//**
10840aeed3e9SJustin Hibbits @Function FmGetSetPortParams
10850aeed3e9SJustin Hibbits
10860aeed3e9SJustin Hibbits @Description Used by FM-PORT driver to pass and receive parameters between
10870aeed3e9SJustin Hibbits PORT and FM modules.
10880aeed3e9SJustin Hibbits
10890aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
10900aeed3e9SJustin Hibbits @Param[in,out] p_PortParams A structure of FM Port parameters.
10910aeed3e9SJustin Hibbits
10920aeed3e9SJustin Hibbits @Return E_OK on success; Error code otherwise.
10930aeed3e9SJustin Hibbits
10940aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
10950aeed3e9SJustin Hibbits *//***************************************************************************/
10960aeed3e9SJustin Hibbits t_Error FmGetSetPortParams(t_Handle h_Fm,t_FmInterModulePortInitParams *p_PortParams);
10970aeed3e9SJustin Hibbits
10980aeed3e9SJustin Hibbits /**************************************************************************//**
10990aeed3e9SJustin Hibbits @Function FmFreePortParams
11000aeed3e9SJustin Hibbits
11010aeed3e9SJustin Hibbits @Description Used by FM-PORT driver to free port's resources within the FM.
11020aeed3e9SJustin Hibbits
11030aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
11040aeed3e9SJustin Hibbits @Param[in,out] p_PortParams A structure of FM Port parameters.
11050aeed3e9SJustin Hibbits
11060aeed3e9SJustin Hibbits @Return None.
11070aeed3e9SJustin Hibbits
11080aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
11090aeed3e9SJustin Hibbits *//***************************************************************************/
11100aeed3e9SJustin Hibbits void FmFreePortParams(t_Handle h_Fm,t_FmInterModulePortFreeParams *p_PortParams);
11110aeed3e9SJustin Hibbits
11120aeed3e9SJustin Hibbits /**************************************************************************//**
1113852ba100SJustin Hibbits @Function FmSetNumOfRiscsPerPort
11140aeed3e9SJustin Hibbits
11150aeed3e9SJustin Hibbits @Description Used by FM-PORT driver to pass parameter between
11160aeed3e9SJustin Hibbits PORT and FM modules for working with number of RISC..
11170aeed3e9SJustin Hibbits
11180aeed3e9SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
1119852ba100SJustin Hibbits @Param[in] hardwarePortId hardware port Id.
1120852ba100SJustin Hibbits @Param[in] numOfFmanCtrls number of Fman Controllers.
1121852ba100SJustin Hibbits @Param[in] orFmanCtrl Fman Controller for order restoration.
11220aeed3e9SJustin Hibbits
11230aeed3e9SJustin Hibbits @Return None.
11240aeed3e9SJustin Hibbits
11250aeed3e9SJustin Hibbits @Cautions Allowed only following FM_Init().
11260aeed3e9SJustin Hibbits *//***************************************************************************/
1127852ba100SJustin Hibbits t_Error FmSetNumOfRiscsPerPort(t_Handle h_Fm, uint8_t hardwarePortId, uint8_t numOfFmanCtrls, t_FmFmanCtrl orFmanCtrl);
11280aeed3e9SJustin Hibbits
1129852ba100SJustin Hibbits #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
1130852ba100SJustin Hibbits /**************************************************************************//*
1131852ba100SJustin Hibbits @Function FmDumpPortRegs
1132852ba100SJustin Hibbits
1133852ba100SJustin Hibbits @Description Dumps FM port registers which are part of FM common registers
1134852ba100SJustin Hibbits
1135852ba100SJustin Hibbits @Param[in] h_Fm A handle to an FM Module.
1136852ba100SJustin Hibbits @Param[in] hardwarePortId HW port id.
1137852ba100SJustin Hibbits
1138852ba100SJustin Hibbits @Return E_OK on success; Error code otherwise.
1139852ba100SJustin Hibbits
1140852ba100SJustin Hibbits @Cautions Allowed only FM_Init().
1141852ba100SJustin Hibbits *//***************************************************************************/
1142852ba100SJustin Hibbits t_Error FmDumpPortRegs(t_Handle h_Fm,uint8_t hardwarePortId);
1143852ba100SJustin Hibbits #endif /* (defined(DEBUG_ERRORS) && ... */
11440aeed3e9SJustin Hibbits
11450aeed3e9SJustin Hibbits void FmRegisterPcd(t_Handle h_Fm, t_Handle h_FmPcd);
11460aeed3e9SJustin Hibbits void FmUnregisterPcd(t_Handle h_Fm);
11470aeed3e9SJustin Hibbits t_Handle FmGetPcdHandle(t_Handle h_Fm);
11480aeed3e9SJustin Hibbits t_Error FmEnableRamsEcc(t_Handle h_Fm);
11490aeed3e9SJustin Hibbits t_Error FmDisableRamsEcc(t_Handle h_Fm);
11500aeed3e9SJustin Hibbits void FmGetRevision(t_Handle h_Fm, t_FmRevisionInfo *p_FmRevisionInfo);
11510aeed3e9SJustin Hibbits t_Error FmAllocFmanCtrlEventReg(t_Handle h_Fm, uint8_t *p_EventId);
11520aeed3e9SJustin Hibbits void FmFreeFmanCtrlEventReg(t_Handle h_Fm, uint8_t eventId);
11530aeed3e9SJustin Hibbits void FmSetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, uint32_t enableEvents);
11540aeed3e9SJustin Hibbits uint32_t FmGetFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId);
11550aeed3e9SJustin Hibbits void FmRegisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId, void (*f_Isr) (t_Handle h_Fm, uint32_t event), t_Handle h_Arg);
11560aeed3e9SJustin Hibbits void FmUnregisterFmanCtrlIntr(t_Handle h_Fm, uint8_t eventRegId);
11570aeed3e9SJustin Hibbits t_Error FmSetMacMaxFrame(t_Handle h_Fm, e_FmMacType type, uint8_t macId, uint16_t mtu);
11580aeed3e9SJustin Hibbits bool FmIsMaster(t_Handle h_Fm);
11590aeed3e9SJustin Hibbits uint8_t FmGetGuestId(t_Handle h_Fm);
1160852ba100SJustin Hibbits uint16_t FmGetTnumAgingPeriod(t_Handle h_Fm);
1161852ba100SJustin Hibbits t_Error FmSetPortPreFetchConfiguration(t_Handle h_Fm, uint8_t portNum, bool preFetchConfigured);
1162852ba100SJustin Hibbits t_Error FmGetPortPreFetchConfiguration(t_Handle h_Fm, uint8_t portNum, bool *p_PortConfigured, bool *p_PreFetchConfigured);
1163852ba100SJustin Hibbits
1164852ba100SJustin Hibbits
11650aeed3e9SJustin Hibbits #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
11660aeed3e9SJustin Hibbits t_Error Fm10GTxEccWorkaround(t_Handle h_Fm, uint8_t macId);
11670aeed3e9SJustin Hibbits #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
11680aeed3e9SJustin Hibbits
11690aeed3e9SJustin Hibbits void FmMuramClear(t_Handle h_FmMuram);
11700aeed3e9SJustin Hibbits t_Error FmSetNumOfOpenDmas(t_Handle h_Fm,
11710aeed3e9SJustin Hibbits uint8_t hardwarePortId,
1172852ba100SJustin Hibbits uint8_t *p_NumOfOpenDmas,
1173852ba100SJustin Hibbits uint8_t *p_NumOfExtraOpenDmas,
11740aeed3e9SJustin Hibbits bool initialConfig);
11750aeed3e9SJustin Hibbits t_Error FmSetNumOfTasks(t_Handle h_Fm,
11760aeed3e9SJustin Hibbits uint8_t hardwarePortId,
1177852ba100SJustin Hibbits uint8_t *p_NumOfTasks,
1178852ba100SJustin Hibbits uint8_t *p_NumOfExtraTasks,
11790aeed3e9SJustin Hibbits bool initialConfig);
11800aeed3e9SJustin Hibbits t_Error FmSetSizeOfFifo(t_Handle h_Fm,
11810aeed3e9SJustin Hibbits uint8_t hardwarePortId,
11820aeed3e9SJustin Hibbits uint32_t *p_SizeOfFifo,
1183852ba100SJustin Hibbits uint32_t *p_ExtraSizeOfFifo,
11840aeed3e9SJustin Hibbits bool initialConfig);
11850aeed3e9SJustin Hibbits
1186852ba100SJustin Hibbits t_Error FmSetCongestionGroupPFCpriority(t_Handle h_Fm,
1187852ba100SJustin Hibbits uint32_t congestionGroupId,
1188852ba100SJustin Hibbits uint8_t priorityBitMap);
1189852ba100SJustin Hibbits
1190852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
1191852ba100SJustin Hibbits t_Error FmVSPAllocForPort(t_Handle h_Fm,
1192852ba100SJustin Hibbits e_FmPortType portType,
1193852ba100SJustin Hibbits uint8_t portId,
1194852ba100SJustin Hibbits uint8_t numOfStorageProfiles);
1195852ba100SJustin Hibbits
1196852ba100SJustin Hibbits t_Error FmVSPFreeForPort(t_Handle h_Fm,
1197852ba100SJustin Hibbits e_FmPortType portType,
1198852ba100SJustin Hibbits uint8_t portId);
1199852ba100SJustin Hibbits
1200852ba100SJustin Hibbits t_Error FmVSPGetAbsoluteProfileId(t_Handle h_Fm,
1201852ba100SJustin Hibbits e_FmPortType portType,
1202852ba100SJustin Hibbits uint8_t portId,
1203852ba100SJustin Hibbits uint16_t relativeProfile,
1204852ba100SJustin Hibbits uint16_t *p_AbsoluteId);
1205852ba100SJustin Hibbits t_Error FmVSPCheckRelativeProfile(t_Handle h_Fm,
1206852ba100SJustin Hibbits e_FmPortType portType,
1207852ba100SJustin Hibbits uint8_t portId,
1208852ba100SJustin Hibbits uint16_t relativeProfile);
1209852ba100SJustin Hibbits
1210852ba100SJustin Hibbits uintptr_t FmGetVSPBaseAddr(t_Handle h_Fm);
1211852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
1212852ba100SJustin Hibbits
12130aeed3e9SJustin Hibbits
12140aeed3e9SJustin Hibbits #endif /* __FM_COMMON_H */
1215