xref: /freebsd/sys/contrib/ncsw/Peripherals/FM/fm_ipc.h (revision 0aeed3e99367bed5755068d9218cd8041644ff2b)
1*0aeed3e9SJustin Hibbits /* Copyright (c) 2008-2011 Freescale Semiconductor, Inc.
2*0aeed3e9SJustin Hibbits  * All rights reserved.
3*0aeed3e9SJustin Hibbits  *
4*0aeed3e9SJustin Hibbits  * Redistribution and use in source and binary forms, with or without
5*0aeed3e9SJustin Hibbits  * modification, are permitted provided that the following conditions are met:
6*0aeed3e9SJustin Hibbits  *     * Redistributions of source code must retain the above copyright
7*0aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer.
8*0aeed3e9SJustin Hibbits  *     * Redistributions in binary form must reproduce the above copyright
9*0aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer in the
10*0aeed3e9SJustin Hibbits  *       documentation and/or other materials provided with the distribution.
11*0aeed3e9SJustin Hibbits  *     * Neither the name of Freescale Semiconductor nor the
12*0aeed3e9SJustin Hibbits  *       names of its contributors may be used to endorse or promote products
13*0aeed3e9SJustin Hibbits  *       derived from this software without specific prior written permission.
14*0aeed3e9SJustin Hibbits  *
15*0aeed3e9SJustin Hibbits  *
16*0aeed3e9SJustin Hibbits  * ALTERNATIVELY, this software may be distributed under the terms of the
17*0aeed3e9SJustin Hibbits  * GNU General Public License ("GPL") as published by the Free Software
18*0aeed3e9SJustin Hibbits  * Foundation, either version 2 of that License or (at your option) any
19*0aeed3e9SJustin Hibbits  * later version.
20*0aeed3e9SJustin Hibbits  *
21*0aeed3e9SJustin Hibbits  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
22*0aeed3e9SJustin Hibbits  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23*0aeed3e9SJustin Hibbits  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24*0aeed3e9SJustin Hibbits  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
25*0aeed3e9SJustin Hibbits  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26*0aeed3e9SJustin Hibbits  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27*0aeed3e9SJustin Hibbits  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28*0aeed3e9SJustin Hibbits  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29*0aeed3e9SJustin Hibbits  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30*0aeed3e9SJustin Hibbits  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*0aeed3e9SJustin Hibbits  */
32*0aeed3e9SJustin Hibbits 
33*0aeed3e9SJustin Hibbits /**************************************************************************//**
34*0aeed3e9SJustin Hibbits  @File          fm_ipc.h
35*0aeed3e9SJustin Hibbits 
36*0aeed3e9SJustin Hibbits  @Description   FM Inter-Partition prototypes, structures and definitions.
37*0aeed3e9SJustin Hibbits *//***************************************************************************/
38*0aeed3e9SJustin Hibbits #ifndef __FM_IPC_H
39*0aeed3e9SJustin Hibbits #define __FM_IPC_H
40*0aeed3e9SJustin Hibbits 
41*0aeed3e9SJustin Hibbits #include "error_ext.h"
42*0aeed3e9SJustin Hibbits #include "std_ext.h"
43*0aeed3e9SJustin Hibbits 
44*0aeed3e9SJustin Hibbits 
45*0aeed3e9SJustin Hibbits /**************************************************************************//**
46*0aeed3e9SJustin Hibbits  @Group         FM_grp Frame Manager API
47*0aeed3e9SJustin Hibbits 
48*0aeed3e9SJustin Hibbits  @Description   FM API functions, definitions and enums
49*0aeed3e9SJustin Hibbits 
50*0aeed3e9SJustin Hibbits  @{
51*0aeed3e9SJustin Hibbits *//***************************************************************************/
52*0aeed3e9SJustin Hibbits 
53*0aeed3e9SJustin Hibbits /**************************************************************************//**
54*0aeed3e9SJustin Hibbits  @Group         FM_IPC_grp FM Inter-Partition messaging Unit
55*0aeed3e9SJustin Hibbits 
56*0aeed3e9SJustin Hibbits  @Description   FM Inter-Partition messaging unit API definitions and enums.
57*0aeed3e9SJustin Hibbits 
58*0aeed3e9SJustin Hibbits  @{
59*0aeed3e9SJustin Hibbits *//***************************************************************************/
60*0aeed3e9SJustin Hibbits 
61*0aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
62*0aeed3e9SJustin Hibbits #pragma pack(push,1)
63*0aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
64*0aeed3e9SJustin Hibbits #define MEM_MAP_START
65*0aeed3e9SJustin Hibbits 
66*0aeed3e9SJustin Hibbits /**************************************************************************//**
67*0aeed3e9SJustin Hibbits  @Description   enum for defining MAC types
68*0aeed3e9SJustin Hibbits *//***************************************************************************/
69*0aeed3e9SJustin Hibbits 
70*0aeed3e9SJustin Hibbits /**************************************************************************//**
71*0aeed3e9SJustin Hibbits  @Description   A structure of parameters for specifying a MAC.
72*0aeed3e9SJustin Hibbits *//***************************************************************************/
73*0aeed3e9SJustin Hibbits typedef _Packed struct
74*0aeed3e9SJustin Hibbits {
75*0aeed3e9SJustin Hibbits     uint8_t         id;
76*0aeed3e9SJustin Hibbits     uint32_t        enumType;
77*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcMacParams;
78*0aeed3e9SJustin Hibbits 
79*0aeed3e9SJustin Hibbits /**************************************************************************//**
80*0aeed3e9SJustin Hibbits  @Description   A structure of parameters for specifying a MAC.
81*0aeed3e9SJustin Hibbits *//***************************************************************************/
82*0aeed3e9SJustin Hibbits typedef _Packed struct
83*0aeed3e9SJustin Hibbits {
84*0aeed3e9SJustin Hibbits     t_FmIpcMacParams    macParams;
85*0aeed3e9SJustin Hibbits     uint16_t            maxFrameLength;
86*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcMacMaxFrameParams;
87*0aeed3e9SJustin Hibbits 
88*0aeed3e9SJustin Hibbits /**************************************************************************//**
89*0aeed3e9SJustin Hibbits  @Description   FM physical Address
90*0aeed3e9SJustin Hibbits *//***************************************************************************/
91*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPhysAddr
92*0aeed3e9SJustin Hibbits {
93*0aeed3e9SJustin Hibbits     volatile uint8_t    high;
94*0aeed3e9SJustin Hibbits     volatile uint32_t   low;
95*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcPhysAddr;
96*0aeed3e9SJustin Hibbits 
97*0aeed3e9SJustin Hibbits /**************************************************************************//**
98*0aeed3e9SJustin Hibbits  @Description   Structure for IPC communication during FM_PORT_Init.
99*0aeed3e9SJustin Hibbits *//***************************************************************************/
100*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortInInitParams {
101*0aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;     /**< IN. port Id */
102*0aeed3e9SJustin Hibbits     uint32_t            enumPortType;       /**< IN. Port type */
103*0aeed3e9SJustin Hibbits     uint8_t             boolIndependentMode;/**< IN. TRUE if FM Port operates in independent mode */
104*0aeed3e9SJustin Hibbits     uint16_t            liodnOffset;        /**< IN. Port's requested resource */
105*0aeed3e9SJustin Hibbits     uint8_t             numOfTasks;         /**< IN. Port's requested resource */
106*0aeed3e9SJustin Hibbits     uint8_t             numOfExtraTasks;    /**< IN. Port's requested resource */
107*0aeed3e9SJustin Hibbits     uint8_t             numOfOpenDmas;      /**< IN. Port's requested resource */
108*0aeed3e9SJustin Hibbits     uint8_t             numOfExtraOpenDmas; /**< IN. Port's requested resource */
109*0aeed3e9SJustin Hibbits     uint32_t            sizeOfFifo;         /**< IN. Port's requested resource */
110*0aeed3e9SJustin Hibbits     uint32_t            extraSizeOfFifo;    /**< IN. Port's requested resource */
111*0aeed3e9SJustin Hibbits     uint8_t             deqPipelineDepth;   /**< IN. Port's requested resource */
112*0aeed3e9SJustin Hibbits     uint16_t            liodnBase;          /**< IN. Irrelevant for P4080 rev 1.
113*0aeed3e9SJustin Hibbits                                                  LIODN base for this port, to be
114*0aeed3e9SJustin Hibbits                                                  used together with LIODN offset. */
115*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortInInitParams;
116*0aeed3e9SJustin Hibbits 
117*0aeed3e9SJustin Hibbits 
118*0aeed3e9SJustin Hibbits /**************************************************************************//**
119*0aeed3e9SJustin Hibbits  @Description   Structure for IPC communication between port and FM
120*0aeed3e9SJustin Hibbits                 regarding tasks and open DMA resources management.
121*0aeed3e9SJustin Hibbits *//***************************************************************************/
122*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortRsrcParams {
123*0aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;     /**< IN. port Id */
124*0aeed3e9SJustin Hibbits     uint32_t            val;                /**< IN. Port's requested resource */
125*0aeed3e9SJustin Hibbits     uint32_t            extra;              /**< IN. Port's requested resource */
126*0aeed3e9SJustin Hibbits     uint8_t             boolInitialConfig;
127*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortRsrcParams;
128*0aeed3e9SJustin Hibbits 
129*0aeed3e9SJustin Hibbits 
130*0aeed3e9SJustin Hibbits /**************************************************************************//**
131*0aeed3e9SJustin Hibbits  @Description   Structure for IPC communication between port and FM
132*0aeed3e9SJustin Hibbits                 regarding tasks and open DMA resources management.
133*0aeed3e9SJustin Hibbits *//***************************************************************************/
134*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortFifoParams {
135*0aeed3e9SJustin Hibbits     t_FmIpcPortRsrcParams   rsrcParams;
136*0aeed3e9SJustin Hibbits     uint32_t                enumPortType;
137*0aeed3e9SJustin Hibbits     uint8_t                 boolIndependentMode;
138*0aeed3e9SJustin Hibbits     uint8_t                 deqPipelineDepth;
139*0aeed3e9SJustin Hibbits     uint8_t                 numOfPools;
140*0aeed3e9SJustin Hibbits     uint16_t                secondLargestBufSize;
141*0aeed3e9SJustin Hibbits     uint16_t                largestBufSize;
142*0aeed3e9SJustin Hibbits     uint8_t                 boolInitialConfig;
143*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortFifoParams;
144*0aeed3e9SJustin Hibbits 
145*0aeed3e9SJustin Hibbits /**************************************************************************//**
146*0aeed3e9SJustin Hibbits  @Description   Structure for port-FM communication during FM_PORT_Free.
147*0aeed3e9SJustin Hibbits *//***************************************************************************/
148*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortFreeParams {
149*0aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;         /**< IN. port Id */
150*0aeed3e9SJustin Hibbits     uint32_t            enumPortType;           /**< IN. Port type */
151*0aeed3e9SJustin Hibbits #ifdef FM_QMI_DEQ_OPTIONS_SUPPORT
152*0aeed3e9SJustin Hibbits     uint8_t             deqPipelineDepth;       /**< IN. Port's requested resource */
153*0aeed3e9SJustin Hibbits #endif /* FM_QMI_DEQ_OPTIONS_SUPPORT */
154*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortFreeParams;
155*0aeed3e9SJustin Hibbits 
156*0aeed3e9SJustin Hibbits /**************************************************************************//**
157*0aeed3e9SJustin Hibbits  @Description   Structure for defining DMA status
158*0aeed3e9SJustin Hibbits *//***************************************************************************/
159*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcDmaStatus {
160*0aeed3e9SJustin Hibbits     uint8_t    boolCmqNotEmpty;            /**< Command queue is not empty */
161*0aeed3e9SJustin Hibbits     uint8_t    boolBusError;               /**< Bus error occurred */
162*0aeed3e9SJustin Hibbits     uint8_t    boolReadBufEccError;        /**< Double ECC error on buffer Read */
163*0aeed3e9SJustin Hibbits     uint8_t    boolWriteBufEccSysError;    /**< Double ECC error on buffer write from system side */
164*0aeed3e9SJustin Hibbits     uint8_t    boolWriteBufEccFmError;     /**< Double ECC error on buffer write from FM side */
165*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcDmaStatus;
166*0aeed3e9SJustin Hibbits 
167*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcRegisterIntr
168*0aeed3e9SJustin Hibbits {
169*0aeed3e9SJustin Hibbits     uint8_t         guestId;        /* IN */
170*0aeed3e9SJustin Hibbits     uint32_t        event;          /* IN */
171*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcRegisterIntr;
172*0aeed3e9SJustin Hibbits 
173*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcIsr
174*0aeed3e9SJustin Hibbits {
175*0aeed3e9SJustin Hibbits     uint8_t         boolErr;        /* IN */
176*0aeed3e9SJustin Hibbits     uint32_t        pendingReg;     /* IN */
177*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcIsr;
178*0aeed3e9SJustin Hibbits 
179*0aeed3e9SJustin Hibbits /**************************************************************************//**
180*0aeed3e9SJustin Hibbits  @Description   structure for returning revision information
181*0aeed3e9SJustin Hibbits *//***************************************************************************/
182*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcRevisionInfo {
183*0aeed3e9SJustin Hibbits     uint8_t         majorRev;               /**< OUT: Major revision */
184*0aeed3e9SJustin Hibbits     uint8_t         minorRev;               /**< OUT: Minor revision */
185*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcRevisionInfo;
186*0aeed3e9SJustin Hibbits 
187*0aeed3e9SJustin Hibbits /**************************************************************************//**
188*0aeed3e9SJustin Hibbits  @Description   Structure for defining Fm number of Fman controlers
189*0aeed3e9SJustin Hibbits *//***************************************************************************/
190*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortNumOfFmanCtrls {
191*0aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;         /**< IN. port Id */
192*0aeed3e9SJustin Hibbits     uint8_t             numOfFmanCtrls;         /**< IN. Port type */
193*0aeed3e9SJustin Hibbits } t_FmIpcPortNumOfFmanCtrls;
194*0aeed3e9SJustin Hibbits 
195*0aeed3e9SJustin Hibbits /**************************************************************************//**
196*0aeed3e9SJustin Hibbits  @Description   structure for setting Fman contriller events
197*0aeed3e9SJustin Hibbits *//***************************************************************************/
198*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcFmanEvents {
199*0aeed3e9SJustin Hibbits     uint8_t         eventRegId;               /**< IN: Fman controller event register id */
200*0aeed3e9SJustin Hibbits     uint32_t        enableEvents;             /**< IN/OUT: required enabled events mask */
201*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcFmanEvents;
202*0aeed3e9SJustin Hibbits 
203*0aeed3e9SJustin Hibbits #define FM_IPC_MAX_REPLY_BODY_SIZE  16
204*0aeed3e9SJustin Hibbits #define FM_IPC_MAX_REPLY_SIZE       (FM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t))
205*0aeed3e9SJustin Hibbits #define FM_IPC_MAX_MSG_SIZE         30
206*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcMsg
207*0aeed3e9SJustin Hibbits {
208*0aeed3e9SJustin Hibbits     uint32_t    msgId;
209*0aeed3e9SJustin Hibbits     uint8_t     msgBody[FM_IPC_MAX_MSG_SIZE];
210*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcMsg;
211*0aeed3e9SJustin Hibbits 
212*0aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcReply
213*0aeed3e9SJustin Hibbits {
214*0aeed3e9SJustin Hibbits     uint32_t    error;
215*0aeed3e9SJustin Hibbits     uint8_t     replyBody[FM_IPC_MAX_REPLY_BODY_SIZE];
216*0aeed3e9SJustin Hibbits } _PackedType t_FmIpcReply;
217*0aeed3e9SJustin Hibbits 
218*0aeed3e9SJustin Hibbits #define MEM_MAP_END
219*0aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
220*0aeed3e9SJustin Hibbits #pragma pack(pop)
221*0aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
222*0aeed3e9SJustin Hibbits 
223*0aeed3e9SJustin Hibbits 
224*0aeed3e9SJustin Hibbits /***************************************************************************/
225*0aeed3e9SJustin Hibbits /************************ FRONT-END-TO-BACK-END*****************************/
226*0aeed3e9SJustin Hibbits /***************************************************************************/
227*0aeed3e9SJustin Hibbits 
228*0aeed3e9SJustin Hibbits /**************************************************************************//**
229*0aeed3e9SJustin Hibbits  @Function      FM_GET_TIMESTAMP_SCALE
230*0aeed3e9SJustin Hibbits 
231*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end.
232*0aeed3e9SJustin Hibbits 
233*0aeed3e9SJustin Hibbits  @Param[out]    uint32_t Pointer
234*0aeed3e9SJustin Hibbits *//***************************************************************************/
235*0aeed3e9SJustin Hibbits #define FM_GET_TIMESTAMP_SCALE      1
236*0aeed3e9SJustin Hibbits 
237*0aeed3e9SJustin Hibbits /**************************************************************************//**
238*0aeed3e9SJustin Hibbits  @Function      FM_GET_COUNTER
239*0aeed3e9SJustin Hibbits 
240*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end.
241*0aeed3e9SJustin Hibbits 
242*0aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcGetCounter Pointer
243*0aeed3e9SJustin Hibbits *//***************************************************************************/
244*0aeed3e9SJustin Hibbits #define FM_GET_COUNTER              2
245*0aeed3e9SJustin Hibbits 
246*0aeed3e9SJustin Hibbits /**************************************************************************//**
247*0aeed3e9SJustin Hibbits  @Function      FM_DUMP_REGS
248*0aeed3e9SJustin Hibbits 
249*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to set and get
250*0aeed3e9SJustin Hibbits                 parameters in/from master FM module on FM PORT initialization time.
251*0aeed3e9SJustin Hibbits 
252*0aeed3e9SJustin Hibbits  @Param         None
253*0aeed3e9SJustin Hibbits *//***************************************************************************/
254*0aeed3e9SJustin Hibbits #define FM_DUMP_REGS                3
255*0aeed3e9SJustin Hibbits 
256*0aeed3e9SJustin Hibbits /**************************************************************************//**
257*0aeed3e9SJustin Hibbits  @Function      FM_GET_SET_PORT_PARAMS
258*0aeed3e9SJustin Hibbits 
259*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to set and get
260*0aeed3e9SJustin Hibbits                 parameters in/from master FM module on FM PORT initialization time.
261*0aeed3e9SJustin Hibbits 
262*0aeed3e9SJustin Hibbits  @Param[in/out] t_FmIcPortInitParams Pointer
263*0aeed3e9SJustin Hibbits *//***************************************************************************/
264*0aeed3e9SJustin Hibbits #define FM_GET_SET_PORT_PARAMS      4
265*0aeed3e9SJustin Hibbits 
266*0aeed3e9SJustin Hibbits /**************************************************************************//**
267*0aeed3e9SJustin Hibbits  @Function      FM_FREE_PORT
268*0aeed3e9SJustin Hibbits 
269*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module when a port is freed
270*0aeed3e9SJustin Hibbits                 to free all FM PORT resources.
271*0aeed3e9SJustin Hibbits 
272*0aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
273*0aeed3e9SJustin Hibbits *//***************************************************************************/
274*0aeed3e9SJustin Hibbits #define FM_FREE_PORT                5
275*0aeed3e9SJustin Hibbits 
276*0aeed3e9SJustin Hibbits /**************************************************************************//**
277*0aeed3e9SJustin Hibbits  @Function      FM_RESET_MAC
278*0aeed3e9SJustin Hibbits 
279*0aeed3e9SJustin Hibbits  @Description   Used by front-end for the MAC module to reset the MAC registers
280*0aeed3e9SJustin Hibbits 
281*0aeed3e9SJustin Hibbits  @Param[in]     t_FmIpcMacParams Pointer .
282*0aeed3e9SJustin Hibbits *//***************************************************************************/
283*0aeed3e9SJustin Hibbits #define FM_RESET_MAC                6
284*0aeed3e9SJustin Hibbits 
285*0aeed3e9SJustin Hibbits /**************************************************************************//**
286*0aeed3e9SJustin Hibbits  @Function      FM_RESUME_STALLED_PORT
287*0aeed3e9SJustin Hibbits 
288*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to
289*0aeed3e9SJustin Hibbits                 release a stalled FM Port.
290*0aeed3e9SJustin Hibbits 
291*0aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
292*0aeed3e9SJustin Hibbits *//***************************************************************************/
293*0aeed3e9SJustin Hibbits #define FM_RESUME_STALLED_PORT      7
294*0aeed3e9SJustin Hibbits 
295*0aeed3e9SJustin Hibbits /**************************************************************************//**
296*0aeed3e9SJustin Hibbits  @Function      FM_IS_PORT_STALLED
297*0aeed3e9SJustin Hibbits 
298*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to check whether
299*0aeed3e9SJustin Hibbits                 an FM port is stalled.
300*0aeed3e9SJustin Hibbits 
301*0aeed3e9SJustin Hibbits  @Param[in/out] t_FmIcPortIsStalled Pointer
302*0aeed3e9SJustin Hibbits *//***************************************************************************/
303*0aeed3e9SJustin Hibbits #define FM_IS_PORT_STALLED          8
304*0aeed3e9SJustin Hibbits 
305*0aeed3e9SJustin Hibbits /**************************************************************************//**
306*0aeed3e9SJustin Hibbits  @Function      FM_DUMP_PORT_REGS
307*0aeed3e9SJustin Hibbits 
308*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to dump
309*0aeed3e9SJustin Hibbits                 all port registers.
310*0aeed3e9SJustin Hibbits 
311*0aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
312*0aeed3e9SJustin Hibbits *//***************************************************************************/
313*0aeed3e9SJustin Hibbits #define FM_DUMP_PORT_REGS           9
314*0aeed3e9SJustin Hibbits 
315*0aeed3e9SJustin Hibbits /**************************************************************************//**
316*0aeed3e9SJustin Hibbits  @Function      FM_GET_REV
317*0aeed3e9SJustin Hibbits 
318*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to dump
319*0aeed3e9SJustin Hibbits                 all port registers.
320*0aeed3e9SJustin Hibbits 
321*0aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
322*0aeed3e9SJustin Hibbits *//***************************************************************************/
323*0aeed3e9SJustin Hibbits #define FM_GET_REV                  10
324*0aeed3e9SJustin Hibbits 
325*0aeed3e9SJustin Hibbits /**************************************************************************//**
326*0aeed3e9SJustin Hibbits  @Function      FM_REGISTER_INTR
327*0aeed3e9SJustin Hibbits 
328*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to register an interrupt handler to
329*0aeed3e9SJustin Hibbits                 be called upon interrupt for guest.
330*0aeed3e9SJustin Hibbits 
331*0aeed3e9SJustin Hibbits  @Param[out]    t_FmIpcRegisterIntr Pointer
332*0aeed3e9SJustin Hibbits *//***************************************************************************/
333*0aeed3e9SJustin Hibbits #define FM_REGISTER_INTR            11
334*0aeed3e9SJustin Hibbits 
335*0aeed3e9SJustin Hibbits /**************************************************************************//**
336*0aeed3e9SJustin Hibbits  @Function      FM_GET_CLK_FREQ
337*0aeed3e9SJustin Hibbits 
338*0aeed3e9SJustin Hibbits  @Description   Used by FM Front-end to read the FM clock frequency.
339*0aeed3e9SJustin Hibbits 
340*0aeed3e9SJustin Hibbits  @Param[out]    uint32_t Pointer
341*0aeed3e9SJustin Hibbits *//***************************************************************************/
342*0aeed3e9SJustin Hibbits #define FM_GET_CLK_FREQ             12
343*0aeed3e9SJustin Hibbits 
344*0aeed3e9SJustin Hibbits /**************************************************************************//**
345*0aeed3e9SJustin Hibbits  @Function      FM_DMA_STAT
346*0aeed3e9SJustin Hibbits 
347*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to read the FM DMA status.
348*0aeed3e9SJustin Hibbits 
349*0aeed3e9SJustin Hibbits  @Param[out]    t_FmIpcDmaStatus Pointer
350*0aeed3e9SJustin Hibbits *//***************************************************************************/
351*0aeed3e9SJustin Hibbits #define FM_DMA_STAT                 13
352*0aeed3e9SJustin Hibbits 
353*0aeed3e9SJustin Hibbits /**************************************************************************//**
354*0aeed3e9SJustin Hibbits  @Function      FM_ALLOC_FMAN_CTRL_EVENT_REG
355*0aeed3e9SJustin Hibbits 
356*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to allocate event register.
357*0aeed3e9SJustin Hibbits 
358*0aeed3e9SJustin Hibbits  @Param[out]    Event register id Pointer
359*0aeed3e9SJustin Hibbits *//***************************************************************************/
360*0aeed3e9SJustin Hibbits #define FM_ALLOC_FMAN_CTRL_EVENT_REG 14
361*0aeed3e9SJustin Hibbits 
362*0aeed3e9SJustin Hibbits /**************************************************************************//**
363*0aeed3e9SJustin Hibbits  @Function      FM_FREE_FMAN_CTRL_EVENT_REG
364*0aeed3e9SJustin Hibbits 
365*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to free locate event register.
366*0aeed3e9SJustin Hibbits 
367*0aeed3e9SJustin Hibbits  @Param[in]    uint8_t Pointer - Event register id
368*0aeed3e9SJustin Hibbits *//***************************************************************************/
369*0aeed3e9SJustin Hibbits #define FM_FREE_FMAN_CTRL_EVENT_REG 15
370*0aeed3e9SJustin Hibbits 
371*0aeed3e9SJustin Hibbits /**************************************************************************//**
372*0aeed3e9SJustin Hibbits  @Function      FM_SET_FMAN_CTRL_EVENTS_ENABLE
373*0aeed3e9SJustin Hibbits 
374*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to enable events in the FPM
375*0aeed3e9SJustin Hibbits                 Fman controller event register.
376*0aeed3e9SJustin Hibbits 
377*0aeed3e9SJustin Hibbits  @Param[in]    t_FmIpcFmanEvents Pointer
378*0aeed3e9SJustin Hibbits *//***************************************************************************/
379*0aeed3e9SJustin Hibbits #define FM_SET_FMAN_CTRL_EVENTS_ENABLE 16
380*0aeed3e9SJustin Hibbits 
381*0aeed3e9SJustin Hibbits /**************************************************************************//**
382*0aeed3e9SJustin Hibbits  @Function      FM_SET_FMAN_CTRL_EVENTS_ENABLE
383*0aeed3e9SJustin Hibbits 
384*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to enable events in the FPM
385*0aeed3e9SJustin Hibbits                 Fman controller event register.
386*0aeed3e9SJustin Hibbits 
387*0aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcFmanEvents Pointer
388*0aeed3e9SJustin Hibbits *//***************************************************************************/
389*0aeed3e9SJustin Hibbits #define FM_GET_FMAN_CTRL_EVENTS_ENABLE 17
390*0aeed3e9SJustin Hibbits 
391*0aeed3e9SJustin Hibbits /**************************************************************************//**
392*0aeed3e9SJustin Hibbits  @Function      FM_SET_MAC_MAX_FRAME
393*0aeed3e9SJustin Hibbits 
394*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end to set MAC's MTU/RTU's in
395*0aeed3e9SJustin Hibbits                 back-end.
396*0aeed3e9SJustin Hibbits 
397*0aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcMacMaxFrameParams Pointer
398*0aeed3e9SJustin Hibbits *//***************************************************************************/
399*0aeed3e9SJustin Hibbits #define FM_SET_MAC_MAX_FRAME 18
400*0aeed3e9SJustin Hibbits 
401*0aeed3e9SJustin Hibbits /**************************************************************************//**
402*0aeed3e9SJustin Hibbits  @Function      FM_GET_PHYS_MURAM_BASE
403*0aeed3e9SJustin Hibbits 
404*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end in order to get MURAM base address
405*0aeed3e9SJustin Hibbits 
406*0aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcPhysAddr Pointer
407*0aeed3e9SJustin Hibbits *//***************************************************************************/
408*0aeed3e9SJustin Hibbits #define FM_GET_PHYS_MURAM_BASE  19
409*0aeed3e9SJustin Hibbits 
410*0aeed3e9SJustin Hibbits /**************************************************************************//**
411*0aeed3e9SJustin Hibbits  @Function      FM_MASTER_IS_ALIVE
412*0aeed3e9SJustin Hibbits 
413*0aeed3e9SJustin Hibbits  @Description   Used by FM front-end in order to verify Master is up
414*0aeed3e9SJustin Hibbits 
415*0aeed3e9SJustin Hibbits  @Param[in/out] bool
416*0aeed3e9SJustin Hibbits *//***************************************************************************/
417*0aeed3e9SJustin Hibbits #define FM_MASTER_IS_ALIVE          20
418*0aeed3e9SJustin Hibbits 
419*0aeed3e9SJustin Hibbits #define FM_ENABLE_RAM_ECC           21
420*0aeed3e9SJustin Hibbits #define FM_DISABLE_RAM_ECC          22
421*0aeed3e9SJustin Hibbits #define FM_SET_NUM_OF_FMAN_CTRL     23
422*0aeed3e9SJustin Hibbits #define FM_SET_SIZE_OF_FIFO         24
423*0aeed3e9SJustin Hibbits #define FM_SET_NUM_OF_TASKS         25
424*0aeed3e9SJustin Hibbits #define FM_SET_NUM_OF_OPEN_DMAS     26
425*0aeed3e9SJustin Hibbits 
426*0aeed3e9SJustin Hibbits #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
427*0aeed3e9SJustin Hibbits #define FM_10G_TX_ECC_WA            100
428*0aeed3e9SJustin Hibbits #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
429*0aeed3e9SJustin Hibbits 
430*0aeed3e9SJustin Hibbits /***************************************************************************/
431*0aeed3e9SJustin Hibbits /************************ BACK-END-TO-FRONT-END*****************************/
432*0aeed3e9SJustin Hibbits /***************************************************************************/
433*0aeed3e9SJustin Hibbits 
434*0aeed3e9SJustin Hibbits /**************************************************************************//**
435*0aeed3e9SJustin Hibbits  @Function      FM_GUEST_ISR
436*0aeed3e9SJustin Hibbits 
437*0aeed3e9SJustin Hibbits  @Description   Used by FM back-end to report an interrupt to the front-end.
438*0aeed3e9SJustin Hibbits 
439*0aeed3e9SJustin Hibbits  @Param[out]    t_FmIpcIsr Pointer
440*0aeed3e9SJustin Hibbits *//***************************************************************************/
441*0aeed3e9SJustin Hibbits #define FM_GUEST_ISR                1
442*0aeed3e9SJustin Hibbits 
443*0aeed3e9SJustin Hibbits 
444*0aeed3e9SJustin Hibbits 
445*0aeed3e9SJustin Hibbits /** @} */ /* end of FM_IPC_grp group */
446*0aeed3e9SJustin Hibbits /** @} */ /* end of FM_grp group */
447*0aeed3e9SJustin Hibbits 
448*0aeed3e9SJustin Hibbits 
449*0aeed3e9SJustin Hibbits #endif /* __FM_IPC_H */
450