xref: /freebsd/sys/contrib/ncsw/Peripherals/FM/fm_ipc.h (revision c2c014f24c10f90d85126ac5fbd4d8524de32b1c)
1*852ba100SJustin Hibbits /*
2*852ba100SJustin 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 
33*852ba100SJustin Hibbits 
340aeed3e9SJustin Hibbits /**************************************************************************//**
350aeed3e9SJustin Hibbits  @File          fm_ipc.h
360aeed3e9SJustin Hibbits 
370aeed3e9SJustin Hibbits  @Description   FM Inter-Partition prototypes, structures and definitions.
380aeed3e9SJustin Hibbits *//***************************************************************************/
390aeed3e9SJustin Hibbits #ifndef __FM_IPC_H
400aeed3e9SJustin Hibbits #define __FM_IPC_H
410aeed3e9SJustin Hibbits 
420aeed3e9SJustin Hibbits #include "error_ext.h"
430aeed3e9SJustin Hibbits #include "std_ext.h"
440aeed3e9SJustin Hibbits 
450aeed3e9SJustin Hibbits 
460aeed3e9SJustin Hibbits /**************************************************************************//**
470aeed3e9SJustin Hibbits  @Group         FM_grp Frame Manager API
480aeed3e9SJustin Hibbits 
490aeed3e9SJustin Hibbits  @Description   FM API functions, definitions and enums
500aeed3e9SJustin Hibbits 
510aeed3e9SJustin Hibbits  @{
520aeed3e9SJustin Hibbits *//***************************************************************************/
530aeed3e9SJustin Hibbits 
540aeed3e9SJustin Hibbits /**************************************************************************//**
550aeed3e9SJustin Hibbits  @Group         FM_IPC_grp FM Inter-Partition messaging Unit
560aeed3e9SJustin Hibbits 
570aeed3e9SJustin Hibbits  @Description   FM Inter-Partition messaging unit API definitions and enums.
580aeed3e9SJustin Hibbits 
590aeed3e9SJustin Hibbits  @{
600aeed3e9SJustin Hibbits *//***************************************************************************/
610aeed3e9SJustin Hibbits 
620aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
630aeed3e9SJustin Hibbits #pragma pack(push,1)
640aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
650aeed3e9SJustin Hibbits 
660aeed3e9SJustin Hibbits /**************************************************************************//**
670aeed3e9SJustin Hibbits  @Description   enum for defining MAC types
680aeed3e9SJustin Hibbits *//***************************************************************************/
690aeed3e9SJustin Hibbits 
700aeed3e9SJustin Hibbits /**************************************************************************//**
710aeed3e9SJustin Hibbits  @Description   A structure of parameters for specifying a MAC.
720aeed3e9SJustin Hibbits *//***************************************************************************/
730aeed3e9SJustin Hibbits typedef _Packed struct
740aeed3e9SJustin Hibbits {
750aeed3e9SJustin Hibbits     uint8_t         id;
760aeed3e9SJustin Hibbits     uint32_t        enumType;
770aeed3e9SJustin Hibbits } _PackedType t_FmIpcMacParams;
780aeed3e9SJustin Hibbits 
790aeed3e9SJustin Hibbits /**************************************************************************//**
800aeed3e9SJustin Hibbits  @Description   A structure of parameters for specifying a MAC.
810aeed3e9SJustin Hibbits *//***************************************************************************/
820aeed3e9SJustin Hibbits typedef _Packed struct
830aeed3e9SJustin Hibbits {
840aeed3e9SJustin Hibbits     t_FmIpcMacParams    macParams;
850aeed3e9SJustin Hibbits     uint16_t            maxFrameLength;
860aeed3e9SJustin Hibbits } _PackedType t_FmIpcMacMaxFrameParams;
870aeed3e9SJustin Hibbits 
880aeed3e9SJustin Hibbits /**************************************************************************//**
890aeed3e9SJustin Hibbits  @Description   FM physical Address
900aeed3e9SJustin Hibbits *//***************************************************************************/
910aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPhysAddr
920aeed3e9SJustin Hibbits {
930aeed3e9SJustin Hibbits     volatile uint8_t    high;
940aeed3e9SJustin Hibbits     volatile uint32_t   low;
950aeed3e9SJustin Hibbits } _PackedType t_FmIpcPhysAddr;
960aeed3e9SJustin Hibbits 
97*852ba100SJustin Hibbits 
98*852ba100SJustin Hibbits typedef _Packed struct t_FmIpcPortOutInitParams {
99*852ba100SJustin Hibbits     uint8_t             numOfTasks;         /**< OUT */
100*852ba100SJustin Hibbits     uint8_t             numOfExtraTasks;    /**< OUT */
101*852ba100SJustin Hibbits     uint8_t             numOfOpenDmas;      /**< OUT */
102*852ba100SJustin Hibbits     uint8_t             numOfExtraOpenDmas; /**< OUT */
103*852ba100SJustin Hibbits     uint32_t            sizeOfFifo;         /**< OUT */
104*852ba100SJustin Hibbits     uint32_t            extraSizeOfFifo;    /**< OUT */
105*852ba100SJustin Hibbits     t_FmIpcPhysAddr     ipcPhysAddr;        /**< OUT */
106*852ba100SJustin Hibbits } _PackedType t_FmIpcPortOutInitParams;
107*852ba100SJustin Hibbits 
1080aeed3e9SJustin Hibbits /**************************************************************************//**
1090aeed3e9SJustin Hibbits  @Description   Structure for IPC communication during FM_PORT_Init.
1100aeed3e9SJustin Hibbits *//***************************************************************************/
1110aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortInInitParams {
1120aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;     /**< IN. port Id */
1130aeed3e9SJustin Hibbits     uint32_t            enumPortType;       /**< IN. Port type */
1140aeed3e9SJustin Hibbits     uint8_t             boolIndependentMode;/**< IN. TRUE if FM Port operates in independent mode */
1150aeed3e9SJustin Hibbits     uint16_t            liodnOffset;        /**< IN. Port's requested resource */
1160aeed3e9SJustin Hibbits     uint8_t             numOfTasks;         /**< IN. Port's requested resource */
1170aeed3e9SJustin Hibbits     uint8_t             numOfExtraTasks;    /**< IN. Port's requested resource */
1180aeed3e9SJustin Hibbits     uint8_t             numOfOpenDmas;      /**< IN. Port's requested resource */
1190aeed3e9SJustin Hibbits     uint8_t             numOfExtraOpenDmas; /**< IN. Port's requested resource */
1200aeed3e9SJustin Hibbits     uint32_t            sizeOfFifo;         /**< IN. Port's requested resource */
1210aeed3e9SJustin Hibbits     uint32_t            extraSizeOfFifo;    /**< IN. Port's requested resource */
1220aeed3e9SJustin Hibbits     uint8_t             deqPipelineDepth;   /**< IN. Port's requested resource */
123*852ba100SJustin Hibbits     uint16_t            maxFrameLength;     /**< IN. Port's max frame length. */
1240aeed3e9SJustin Hibbits     uint16_t            liodnBase;          /**< IN. Irrelevant for P4080 rev 1.
1250aeed3e9SJustin Hibbits                                                  LIODN base for this port, to be
1260aeed3e9SJustin Hibbits                                                  used together with LIODN offset. */
1270aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortInInitParams;
1280aeed3e9SJustin Hibbits 
1290aeed3e9SJustin Hibbits 
1300aeed3e9SJustin Hibbits /**************************************************************************//**
1310aeed3e9SJustin Hibbits  @Description   Structure for IPC communication between port and FM
1320aeed3e9SJustin Hibbits                 regarding tasks and open DMA resources management.
1330aeed3e9SJustin Hibbits *//***************************************************************************/
1340aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortRsrcParams {
1350aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;     /**< IN. port Id */
1360aeed3e9SJustin Hibbits     uint32_t            val;                /**< IN. Port's requested resource */
1370aeed3e9SJustin Hibbits     uint32_t            extra;              /**< IN. Port's requested resource */
1380aeed3e9SJustin Hibbits     uint8_t             boolInitialConfig;
1390aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortRsrcParams;
1400aeed3e9SJustin Hibbits 
1410aeed3e9SJustin Hibbits 
1420aeed3e9SJustin Hibbits /**************************************************************************//**
1430aeed3e9SJustin Hibbits  @Description   Structure for IPC communication between port and FM
1440aeed3e9SJustin Hibbits                 regarding tasks and open DMA resources management.
1450aeed3e9SJustin Hibbits *//***************************************************************************/
1460aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortFifoParams {
1470aeed3e9SJustin Hibbits     t_FmIpcPortRsrcParams   rsrcParams;
1480aeed3e9SJustin Hibbits     uint32_t                enumPortType;
1490aeed3e9SJustin Hibbits     uint8_t                 boolIndependentMode;
1500aeed3e9SJustin Hibbits     uint8_t                 deqPipelineDepth;
1510aeed3e9SJustin Hibbits     uint8_t                 numOfPools;
1520aeed3e9SJustin Hibbits     uint16_t                secondLargestBufSize;
1530aeed3e9SJustin Hibbits     uint16_t                largestBufSize;
1540aeed3e9SJustin Hibbits     uint8_t                 boolInitialConfig;
1550aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortFifoParams;
1560aeed3e9SJustin Hibbits 
1570aeed3e9SJustin Hibbits /**************************************************************************//**
1580aeed3e9SJustin Hibbits  @Description   Structure for port-FM communication during FM_PORT_Free.
1590aeed3e9SJustin Hibbits *//***************************************************************************/
1600aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortFreeParams {
1610aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;         /**< IN. port Id */
1620aeed3e9SJustin Hibbits     uint32_t            enumPortType;           /**< IN. Port type */
1630aeed3e9SJustin Hibbits     uint8_t             deqPipelineDepth;       /**< IN. Port's requested resource */
1640aeed3e9SJustin Hibbits } _PackedType t_FmIpcPortFreeParams;
1650aeed3e9SJustin Hibbits 
1660aeed3e9SJustin Hibbits /**************************************************************************//**
1670aeed3e9SJustin Hibbits  @Description   Structure for defining DMA status
1680aeed3e9SJustin Hibbits *//***************************************************************************/
1690aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcDmaStatus {
1700aeed3e9SJustin Hibbits     uint8_t    boolCmqNotEmpty;            /**< Command queue is not empty */
1710aeed3e9SJustin Hibbits     uint8_t    boolBusError;               /**< Bus error occurred */
1720aeed3e9SJustin Hibbits     uint8_t    boolReadBufEccError;        /**< Double ECC error on buffer Read */
1730aeed3e9SJustin Hibbits     uint8_t    boolWriteBufEccSysError;    /**< Double ECC error on buffer write from system side */
1740aeed3e9SJustin Hibbits     uint8_t    boolWriteBufEccFmError;     /**< Double ECC error on buffer write from FM side */
175*852ba100SJustin Hibbits     uint8_t    boolSinglePortEccError;     /**< Single port ECC error from FM side */
1760aeed3e9SJustin Hibbits } _PackedType t_FmIpcDmaStatus;
1770aeed3e9SJustin Hibbits 
1780aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcRegisterIntr
1790aeed3e9SJustin Hibbits {
1800aeed3e9SJustin Hibbits     uint8_t         guestId;        /* IN */
1810aeed3e9SJustin Hibbits     uint32_t        event;          /* IN */
1820aeed3e9SJustin Hibbits } _PackedType t_FmIpcRegisterIntr;
1830aeed3e9SJustin Hibbits 
1840aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcIsr
1850aeed3e9SJustin Hibbits {
1860aeed3e9SJustin Hibbits     uint8_t         boolErr;        /* IN */
1870aeed3e9SJustin Hibbits     uint32_t        pendingReg;     /* IN */
1880aeed3e9SJustin Hibbits } _PackedType t_FmIpcIsr;
1890aeed3e9SJustin Hibbits 
1900aeed3e9SJustin Hibbits /**************************************************************************//**
191*852ba100SJustin Hibbits  @Description   structure for returning FM parameters
1920aeed3e9SJustin Hibbits *//***************************************************************************/
193*852ba100SJustin Hibbits typedef _Packed struct t_FmIpcParams {
194*852ba100SJustin Hibbits     uint16_t        fmClkFreq;              /**< OUT: FM Clock frequency */
195*852ba100SJustin Hibbits     uint16_t        fmMacClkFreq;           /**< OUT: FM MAC clock frequence */
196*852ba100SJustin Hibbits     uint8_t         majorRev;               /**< OUT: FM Major revision */
197*852ba100SJustin Hibbits     uint8_t         minorRev;               /**< OUT: FM Minor revision */
198*852ba100SJustin Hibbits } _PackedType t_FmIpcParams;
199*852ba100SJustin Hibbits 
200*852ba100SJustin Hibbits 
201*852ba100SJustin Hibbits /**************************************************************************//**
202*852ba100SJustin Hibbits  @Description   structure for returning Fman Ctrl Code revision information
203*852ba100SJustin Hibbits *//***************************************************************************/
204*852ba100SJustin Hibbits typedef _Packed struct t_FmIpcFmanCtrlCodeRevisionInfo {
205*852ba100SJustin Hibbits     uint16_t        packageRev;             /**< OUT: Package revision */
2060aeed3e9SJustin Hibbits     uint8_t         majorRev;               /**< OUT: Major revision */
2070aeed3e9SJustin Hibbits     uint8_t         minorRev;               /**< OUT: Minor revision */
208*852ba100SJustin Hibbits } _PackedType t_FmIpcFmanCtrlCodeRevisionInfo;
2090aeed3e9SJustin Hibbits 
2100aeed3e9SJustin Hibbits /**************************************************************************//**
2110aeed3e9SJustin Hibbits  @Description   Structure for defining Fm number of Fman controlers
2120aeed3e9SJustin Hibbits *//***************************************************************************/
2130aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcPortNumOfFmanCtrls {
2140aeed3e9SJustin Hibbits     uint8_t             hardwarePortId;         /**< IN. port Id */
2150aeed3e9SJustin Hibbits     uint8_t             numOfFmanCtrls;         /**< IN. Port type */
216*852ba100SJustin Hibbits     t_FmFmanCtrl        orFmanCtrl;             /**< IN. fman controller for order restoration*/
2170aeed3e9SJustin Hibbits } t_FmIpcPortNumOfFmanCtrls;
2180aeed3e9SJustin Hibbits 
2190aeed3e9SJustin Hibbits /**************************************************************************//**
2200aeed3e9SJustin Hibbits  @Description   structure for setting Fman contriller events
2210aeed3e9SJustin Hibbits *//***************************************************************************/
2220aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcFmanEvents {
2230aeed3e9SJustin Hibbits     uint8_t     eventRegId;               /**< IN: Fman controller event register id */
2240aeed3e9SJustin Hibbits     uint32_t    enableEvents;             /**< IN/OUT: required enabled events mask */
2250aeed3e9SJustin Hibbits } _PackedType t_FmIpcFmanEvents;
2260aeed3e9SJustin Hibbits 
227*852ba100SJustin Hibbits typedef _Packed struct t_FmIpcResourceAllocParams {
228*852ba100SJustin Hibbits     uint8_t     guestId;
229*852ba100SJustin Hibbits     uint16_t    base;
230*852ba100SJustin Hibbits     uint16_t    num;
231*852ba100SJustin Hibbits }_PackedType t_FmIpcResourceAllocParams;
232*852ba100SJustin Hibbits 
233*852ba100SJustin Hibbits typedef _Packed struct t_FmIpcVspSetPortWindow {
234*852ba100SJustin Hibbits     uint8_t     hardwarePortId;
235*852ba100SJustin Hibbits     uint8_t     baseStorageProfile;
236*852ba100SJustin Hibbits     uint8_t     log2NumOfProfiles;
237*852ba100SJustin Hibbits }_PackedType t_FmIpcVspSetPortWindow;
238*852ba100SJustin Hibbits 
239*852ba100SJustin Hibbits typedef _Packed struct t_FmIpcSetCongestionGroupPfcPriority {
240*852ba100SJustin Hibbits     uint32_t     congestionGroupId;
241*852ba100SJustin Hibbits     uint8_t      priorityBitMap;
242*852ba100SJustin Hibbits }_PackedType t_FmIpcSetCongestionGroupPfcPriority;
243*852ba100SJustin Hibbits 
244*852ba100SJustin Hibbits #define FM_IPC_MAX_REPLY_BODY_SIZE  20
2450aeed3e9SJustin Hibbits #define FM_IPC_MAX_REPLY_SIZE       (FM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t))
2460aeed3e9SJustin Hibbits #define FM_IPC_MAX_MSG_SIZE         30
247*852ba100SJustin Hibbits 
2480aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcMsg
2490aeed3e9SJustin Hibbits {
2500aeed3e9SJustin Hibbits     uint32_t    msgId;
2510aeed3e9SJustin Hibbits     uint8_t     msgBody[FM_IPC_MAX_MSG_SIZE];
2520aeed3e9SJustin Hibbits } _PackedType t_FmIpcMsg;
2530aeed3e9SJustin Hibbits 
2540aeed3e9SJustin Hibbits typedef _Packed struct t_FmIpcReply
2550aeed3e9SJustin Hibbits {
2560aeed3e9SJustin Hibbits     uint32_t    error;
2570aeed3e9SJustin Hibbits     uint8_t     replyBody[FM_IPC_MAX_REPLY_BODY_SIZE];
2580aeed3e9SJustin Hibbits } _PackedType t_FmIpcReply;
2590aeed3e9SJustin Hibbits 
2600aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
2610aeed3e9SJustin Hibbits #pragma pack(pop)
2620aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
2630aeed3e9SJustin Hibbits 
2640aeed3e9SJustin Hibbits 
2650aeed3e9SJustin Hibbits /***************************************************************************/
2660aeed3e9SJustin Hibbits /************************ FRONT-END-TO-BACK-END*****************************/
2670aeed3e9SJustin Hibbits /***************************************************************************/
2680aeed3e9SJustin Hibbits 
2690aeed3e9SJustin Hibbits /**************************************************************************//**
2700aeed3e9SJustin Hibbits  @Function      FM_GET_TIMESTAMP_SCALE
2710aeed3e9SJustin Hibbits 
2720aeed3e9SJustin Hibbits  @Description   Used by FM front-end.
2730aeed3e9SJustin Hibbits 
2740aeed3e9SJustin Hibbits  @Param[out]    uint32_t Pointer
2750aeed3e9SJustin Hibbits *//***************************************************************************/
2760aeed3e9SJustin Hibbits #define FM_GET_TIMESTAMP_SCALE      1
2770aeed3e9SJustin Hibbits 
2780aeed3e9SJustin Hibbits /**************************************************************************//**
2790aeed3e9SJustin Hibbits  @Function      FM_GET_COUNTER
2800aeed3e9SJustin Hibbits 
2810aeed3e9SJustin Hibbits  @Description   Used by FM front-end.
2820aeed3e9SJustin Hibbits 
2830aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcGetCounter Pointer
2840aeed3e9SJustin Hibbits *//***************************************************************************/
2850aeed3e9SJustin Hibbits #define FM_GET_COUNTER              2
2860aeed3e9SJustin Hibbits 
2870aeed3e9SJustin Hibbits /**************************************************************************//**
2880aeed3e9SJustin Hibbits  @Function      FM_GET_SET_PORT_PARAMS
2890aeed3e9SJustin Hibbits 
2900aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to set and get
2910aeed3e9SJustin Hibbits                 parameters in/from master FM module on FM PORT initialization time.
2920aeed3e9SJustin Hibbits 
2930aeed3e9SJustin Hibbits  @Param[in/out] t_FmIcPortInitParams Pointer
2940aeed3e9SJustin Hibbits *//***************************************************************************/
2950aeed3e9SJustin Hibbits #define FM_GET_SET_PORT_PARAMS      4
2960aeed3e9SJustin Hibbits 
2970aeed3e9SJustin Hibbits /**************************************************************************//**
2980aeed3e9SJustin Hibbits  @Function      FM_FREE_PORT
2990aeed3e9SJustin Hibbits 
3000aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module when a port is freed
3010aeed3e9SJustin Hibbits                 to free all FM PORT resources.
3020aeed3e9SJustin Hibbits 
3030aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
3040aeed3e9SJustin Hibbits *//***************************************************************************/
3050aeed3e9SJustin Hibbits #define FM_FREE_PORT                5
3060aeed3e9SJustin Hibbits 
3070aeed3e9SJustin Hibbits /**************************************************************************//**
3080aeed3e9SJustin Hibbits  @Function      FM_RESET_MAC
3090aeed3e9SJustin Hibbits 
3100aeed3e9SJustin Hibbits  @Description   Used by front-end for the MAC module to reset the MAC registers
3110aeed3e9SJustin Hibbits 
3120aeed3e9SJustin Hibbits  @Param[in]     t_FmIpcMacParams Pointer .
3130aeed3e9SJustin Hibbits *//***************************************************************************/
3140aeed3e9SJustin Hibbits #define FM_RESET_MAC                6
3150aeed3e9SJustin Hibbits 
3160aeed3e9SJustin Hibbits /**************************************************************************//**
3170aeed3e9SJustin Hibbits  @Function      FM_RESUME_STALLED_PORT
3180aeed3e9SJustin Hibbits 
3190aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to
3200aeed3e9SJustin Hibbits                 release a stalled FM Port.
3210aeed3e9SJustin Hibbits 
3220aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
3230aeed3e9SJustin Hibbits *//***************************************************************************/
3240aeed3e9SJustin Hibbits #define FM_RESUME_STALLED_PORT      7
3250aeed3e9SJustin Hibbits 
3260aeed3e9SJustin Hibbits /**************************************************************************//**
3270aeed3e9SJustin Hibbits  @Function      FM_IS_PORT_STALLED
3280aeed3e9SJustin Hibbits 
3290aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to check whether
3300aeed3e9SJustin Hibbits                 an FM port is stalled.
3310aeed3e9SJustin Hibbits 
3320aeed3e9SJustin Hibbits  @Param[in/out] t_FmIcPortIsStalled Pointer
3330aeed3e9SJustin Hibbits *//***************************************************************************/
3340aeed3e9SJustin Hibbits #define FM_IS_PORT_STALLED          8
3350aeed3e9SJustin Hibbits 
3360aeed3e9SJustin Hibbits /**************************************************************************//**
337*852ba100SJustin Hibbits  @Function      FM_GET_PARAMS
3380aeed3e9SJustin Hibbits 
3390aeed3e9SJustin Hibbits  @Description   Used by FM front-end for the PORT module in order to dump
340*852ba100SJustin Hibbits                 return FM parameters.
3410aeed3e9SJustin Hibbits 
3420aeed3e9SJustin Hibbits  @Param[in]     uint8_t Pointer
3430aeed3e9SJustin Hibbits *//***************************************************************************/
344*852ba100SJustin Hibbits #define FM_GET_PARAMS                  10
3450aeed3e9SJustin Hibbits 
3460aeed3e9SJustin Hibbits /**************************************************************************//**
3470aeed3e9SJustin Hibbits  @Function      FM_REGISTER_INTR
3480aeed3e9SJustin Hibbits 
3490aeed3e9SJustin Hibbits  @Description   Used by FM front-end to register an interrupt handler to
3500aeed3e9SJustin Hibbits                 be called upon interrupt for guest.
3510aeed3e9SJustin Hibbits 
3520aeed3e9SJustin Hibbits  @Param[out]    t_FmIpcRegisterIntr Pointer
3530aeed3e9SJustin Hibbits *//***************************************************************************/
3540aeed3e9SJustin Hibbits #define FM_REGISTER_INTR            11
3550aeed3e9SJustin Hibbits 
3560aeed3e9SJustin Hibbits /**************************************************************************//**
3570aeed3e9SJustin Hibbits  @Function      FM_DMA_STAT
3580aeed3e9SJustin Hibbits 
3590aeed3e9SJustin Hibbits  @Description   Used by FM front-end to read the FM DMA status.
3600aeed3e9SJustin Hibbits 
3610aeed3e9SJustin Hibbits  @Param[out]    t_FmIpcDmaStatus Pointer
3620aeed3e9SJustin Hibbits *//***************************************************************************/
3630aeed3e9SJustin Hibbits #define FM_DMA_STAT                 13
3640aeed3e9SJustin Hibbits 
3650aeed3e9SJustin Hibbits /**************************************************************************//**
3660aeed3e9SJustin Hibbits  @Function      FM_ALLOC_FMAN_CTRL_EVENT_REG
3670aeed3e9SJustin Hibbits 
3680aeed3e9SJustin Hibbits  @Description   Used by FM front-end to allocate event register.
3690aeed3e9SJustin Hibbits 
3700aeed3e9SJustin Hibbits  @Param[out]    Event register id Pointer
3710aeed3e9SJustin Hibbits *//***************************************************************************/
3720aeed3e9SJustin Hibbits #define FM_ALLOC_FMAN_CTRL_EVENT_REG 14
3730aeed3e9SJustin Hibbits 
3740aeed3e9SJustin Hibbits /**************************************************************************//**
3750aeed3e9SJustin Hibbits  @Function      FM_FREE_FMAN_CTRL_EVENT_REG
3760aeed3e9SJustin Hibbits 
3770aeed3e9SJustin Hibbits  @Description   Used by FM front-end to free locate event register.
3780aeed3e9SJustin Hibbits 
3790aeed3e9SJustin Hibbits  @Param[in]    uint8_t Pointer - Event register id
3800aeed3e9SJustin Hibbits *//***************************************************************************/
3810aeed3e9SJustin Hibbits #define FM_FREE_FMAN_CTRL_EVENT_REG 15
3820aeed3e9SJustin Hibbits 
3830aeed3e9SJustin Hibbits /**************************************************************************//**
3840aeed3e9SJustin Hibbits  @Function      FM_SET_FMAN_CTRL_EVENTS_ENABLE
3850aeed3e9SJustin Hibbits 
3860aeed3e9SJustin Hibbits  @Description   Used by FM front-end to enable events in the FPM
3870aeed3e9SJustin Hibbits                 Fman controller event register.
3880aeed3e9SJustin Hibbits 
3890aeed3e9SJustin Hibbits  @Param[in]    t_FmIpcFmanEvents Pointer
3900aeed3e9SJustin Hibbits *//***************************************************************************/
3910aeed3e9SJustin Hibbits #define FM_SET_FMAN_CTRL_EVENTS_ENABLE 16
3920aeed3e9SJustin Hibbits 
3930aeed3e9SJustin Hibbits /**************************************************************************//**
3940aeed3e9SJustin Hibbits  @Function      FM_SET_FMAN_CTRL_EVENTS_ENABLE
3950aeed3e9SJustin Hibbits 
3960aeed3e9SJustin Hibbits  @Description   Used by FM front-end to enable events in the FPM
3970aeed3e9SJustin Hibbits                 Fman controller event register.
3980aeed3e9SJustin Hibbits 
3990aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcFmanEvents Pointer
4000aeed3e9SJustin Hibbits *//***************************************************************************/
4010aeed3e9SJustin Hibbits #define FM_GET_FMAN_CTRL_EVENTS_ENABLE 17
4020aeed3e9SJustin Hibbits 
4030aeed3e9SJustin Hibbits /**************************************************************************//**
4040aeed3e9SJustin Hibbits  @Function      FM_SET_MAC_MAX_FRAME
4050aeed3e9SJustin Hibbits 
4060aeed3e9SJustin Hibbits  @Description   Used by FM front-end to set MAC's MTU/RTU's in
4070aeed3e9SJustin Hibbits                 back-end.
4080aeed3e9SJustin Hibbits 
4090aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcMacMaxFrameParams Pointer
4100aeed3e9SJustin Hibbits *//***************************************************************************/
4110aeed3e9SJustin Hibbits #define FM_SET_MAC_MAX_FRAME 18
4120aeed3e9SJustin Hibbits 
4130aeed3e9SJustin Hibbits /**************************************************************************//**
4140aeed3e9SJustin Hibbits  @Function      FM_GET_PHYS_MURAM_BASE
4150aeed3e9SJustin Hibbits 
4160aeed3e9SJustin Hibbits  @Description   Used by FM front-end in order to get MURAM base address
4170aeed3e9SJustin Hibbits 
4180aeed3e9SJustin Hibbits  @Param[in/out] t_FmIpcPhysAddr Pointer
4190aeed3e9SJustin Hibbits *//***************************************************************************/
4200aeed3e9SJustin Hibbits #define FM_GET_PHYS_MURAM_BASE  19
4210aeed3e9SJustin Hibbits 
4220aeed3e9SJustin Hibbits /**************************************************************************//**
4230aeed3e9SJustin Hibbits  @Function      FM_MASTER_IS_ALIVE
4240aeed3e9SJustin Hibbits 
4250aeed3e9SJustin Hibbits  @Description   Used by FM front-end in order to verify Master is up
4260aeed3e9SJustin Hibbits 
4270aeed3e9SJustin Hibbits  @Param[in/out] bool
4280aeed3e9SJustin Hibbits *//***************************************************************************/
4290aeed3e9SJustin Hibbits #define FM_MASTER_IS_ALIVE          20
4300aeed3e9SJustin Hibbits 
4310aeed3e9SJustin Hibbits #define FM_ENABLE_RAM_ECC           21
4320aeed3e9SJustin Hibbits #define FM_DISABLE_RAM_ECC          22
4330aeed3e9SJustin Hibbits #define FM_SET_NUM_OF_FMAN_CTRL     23
4340aeed3e9SJustin Hibbits #define FM_SET_SIZE_OF_FIFO         24
4350aeed3e9SJustin Hibbits #define FM_SET_NUM_OF_TASKS         25
4360aeed3e9SJustin Hibbits #define FM_SET_NUM_OF_OPEN_DMAS     26
437*852ba100SJustin Hibbits #define FM_VSP_ALLOC                27
438*852ba100SJustin Hibbits #define FM_VSP_FREE                 28
439*852ba100SJustin Hibbits #define FM_VSP_SET_PORT_WINDOW      29
440*852ba100SJustin Hibbits #define FM_GET_FMAN_CTRL_CODE_REV   30
441*852ba100SJustin Hibbits #define FM_SET_CONG_GRP_PFC_PRIO    31
4420aeed3e9SJustin Hibbits #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
4430aeed3e9SJustin Hibbits #define FM_10G_TX_ECC_WA            100
4440aeed3e9SJustin Hibbits #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
4450aeed3e9SJustin Hibbits 
4460aeed3e9SJustin Hibbits /***************************************************************************/
4470aeed3e9SJustin Hibbits /************************ BACK-END-TO-FRONT-END*****************************/
4480aeed3e9SJustin Hibbits /***************************************************************************/
4490aeed3e9SJustin Hibbits 
4500aeed3e9SJustin Hibbits /**************************************************************************//**
4510aeed3e9SJustin Hibbits  @Function      FM_GUEST_ISR
4520aeed3e9SJustin Hibbits 
4530aeed3e9SJustin Hibbits  @Description   Used by FM back-end to report an interrupt to the front-end.
4540aeed3e9SJustin Hibbits 
4550aeed3e9SJustin Hibbits  @Param[out]    t_FmIpcIsr Pointer
4560aeed3e9SJustin Hibbits *//***************************************************************************/
4570aeed3e9SJustin Hibbits #define FM_GUEST_ISR                1
4580aeed3e9SJustin Hibbits 
4590aeed3e9SJustin Hibbits 
4600aeed3e9SJustin Hibbits 
4610aeed3e9SJustin Hibbits /** @} */ /* end of FM_IPC_grp group */
4620aeed3e9SJustin Hibbits /** @} */ /* end of FM_grp group */
4630aeed3e9SJustin Hibbits 
4640aeed3e9SJustin Hibbits 
4650aeed3e9SJustin Hibbits #endif /* __FM_IPC_H */
466