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_pcd_ipc.h
360aeed3e9SJustin Hibbits 
370aeed3e9SJustin Hibbits  @Description   FM PCD Inter-Partition prototypes, structures and definitions.
380aeed3e9SJustin Hibbits *//***************************************************************************/
390aeed3e9SJustin Hibbits #ifndef __FM_PCD_IPC_H
400aeed3e9SJustin Hibbits #define __FM_PCD_IPC_H
410aeed3e9SJustin Hibbits 
420aeed3e9SJustin Hibbits #include "std_ext.h"
430aeed3e9SJustin Hibbits 
440aeed3e9SJustin Hibbits 
450aeed3e9SJustin Hibbits /**************************************************************************//**
460aeed3e9SJustin Hibbits  @Group         FM_grp Frame Manager API
470aeed3e9SJustin Hibbits 
480aeed3e9SJustin Hibbits  @Description   FM API functions, definitions and enums
490aeed3e9SJustin Hibbits 
500aeed3e9SJustin Hibbits  @{
510aeed3e9SJustin Hibbits *//***************************************************************************/
520aeed3e9SJustin Hibbits 
530aeed3e9SJustin Hibbits 
540aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
550aeed3e9SJustin Hibbits #pragma pack(push,1)
560aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
570aeed3e9SJustin Hibbits 
580aeed3e9SJustin Hibbits /**************************************************************************//**
590aeed3e9SJustin Hibbits  @Description   Structure for getting a sw parser address according to a label
600aeed3e9SJustin Hibbits                 Fields commented 'IN' are passed by the port module to be used
610aeed3e9SJustin Hibbits                 by the FM module.
620aeed3e9SJustin Hibbits                 Fields commented 'OUT' will be filled by FM before returning to port.
630aeed3e9SJustin Hibbits *//***************************************************************************/
640aeed3e9SJustin Hibbits typedef _Packed struct t_FmPcdIpcSwPrsLable
650aeed3e9SJustin Hibbits {
66852ba100SJustin Hibbits     uint32_t    enumHdr;                        /**< IN. The existence of this header will invoke
670aeed3e9SJustin Hibbits                                                      the sw parser code. */
680aeed3e9SJustin Hibbits     uint8_t     indexPerHdr;                    /**< IN. Normally 0, if more than one sw parser
690aeed3e9SJustin Hibbits                                                      attachments for the same header, use this
700aeed3e9SJustin Hibbits 
710aeed3e9SJustin Hibbits                                                    index to distinguish between them. */
720aeed3e9SJustin Hibbits } _PackedType t_FmPcdIpcSwPrsLable;
730aeed3e9SJustin Hibbits 
740aeed3e9SJustin Hibbits /**************************************************************************//**
750aeed3e9SJustin Hibbits  @Description   Structure for port-PCD communication.
760aeed3e9SJustin Hibbits                 Fields commented 'IN' are passed by the port module to be used
770aeed3e9SJustin Hibbits                 by the FM module.
780aeed3e9SJustin Hibbits                 Fields commented 'OUT' will be filled by FM before returning to port.
790aeed3e9SJustin Hibbits                 Some fields are optional (depending on configuration) and
800aeed3e9SJustin Hibbits                 will be analized by the port and FM modules accordingly.
810aeed3e9SJustin Hibbits *//***************************************************************************/
82852ba100SJustin Hibbits 
830aeed3e9SJustin Hibbits typedef  struct t_FmPcdIpcKgSchemesParams
840aeed3e9SJustin Hibbits {
85852ba100SJustin Hibbits     uint8_t     guestId;
86852ba100SJustin Hibbits     uint8_t     numOfSchemes;
87852ba100SJustin Hibbits     uint8_t     schemesIds[FM_PCD_KG_NUM_OF_SCHEMES];
880aeed3e9SJustin Hibbits } _PackedType t_FmPcdIpcKgSchemesParams;
890aeed3e9SJustin Hibbits 
900aeed3e9SJustin Hibbits typedef  struct t_FmPcdIpcKgClsPlanParams
910aeed3e9SJustin Hibbits {
92852ba100SJustin Hibbits     uint8_t     guestId;
93852ba100SJustin Hibbits     uint16_t    numOfClsPlanEntries;
94852ba100SJustin Hibbits     uint8_t     clsPlanBase;
950aeed3e9SJustin Hibbits } _PackedType t_FmPcdIpcKgClsPlanParams;
960aeed3e9SJustin Hibbits 
970aeed3e9SJustin Hibbits typedef _Packed struct t_FmPcdIpcPrsIncludePort
980aeed3e9SJustin Hibbits {
99852ba100SJustin Hibbits     uint8_t     hardwarePortId;
100852ba100SJustin Hibbits     bool        include;
1010aeed3e9SJustin Hibbits } _PackedType t_FmPcdIpcPrsIncludePort;
1020aeed3e9SJustin Hibbits 
1030aeed3e9SJustin Hibbits 
1040aeed3e9SJustin Hibbits #define FM_PCD_MAX_REPLY_SIZE           16
1050aeed3e9SJustin Hibbits #define FM_PCD_MAX_MSG_SIZE             36
1060aeed3e9SJustin Hibbits #define FM_PCD_MAX_REPLY_BODY_SIZE      36
1070aeed3e9SJustin Hibbits 
108852ba100SJustin Hibbits typedef _Packed struct {
1090aeed3e9SJustin Hibbits     uint32_t    msgId;
1100aeed3e9SJustin Hibbits     uint8_t     msgBody[FM_PCD_MAX_MSG_SIZE];
1110aeed3e9SJustin Hibbits } _PackedType t_FmPcdIpcMsg;
1120aeed3e9SJustin Hibbits 
113852ba100SJustin Hibbits typedef _Packed struct t_FmPcdIpcReply {
1140aeed3e9SJustin Hibbits     uint32_t    error;
1150aeed3e9SJustin Hibbits     uint8_t     replyBody[FM_PCD_MAX_REPLY_BODY_SIZE];
1160aeed3e9SJustin Hibbits } _PackedType t_FmPcdIpcReply;
1170aeed3e9SJustin Hibbits 
118852ba100SJustin Hibbits typedef _Packed struct t_FmIpcResourceAllocParams {
119852ba100SJustin Hibbits     uint8_t     guestId;
120852ba100SJustin Hibbits     uint16_t    base;
121852ba100SJustin Hibbits     uint16_t    num;
122852ba100SJustin Hibbits }_PackedType t_FmIpcResourceAllocParams;
123852ba100SJustin Hibbits 
1240aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
1250aeed3e9SJustin Hibbits #pragma pack(pop)
1260aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
1270aeed3e9SJustin Hibbits 
1280aeed3e9SJustin Hibbits 
1290aeed3e9SJustin Hibbits 
1300aeed3e9SJustin Hibbits /**************************************************************************//**
1310aeed3e9SJustin Hibbits  @Function      FM_PCD_ALLOC_KG_SCHEMES
1320aeed3e9SJustin Hibbits 
1330aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to allocate KG resources
1340aeed3e9SJustin Hibbits 
1350aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcKgAllocParams Pointer
1360aeed3e9SJustin Hibbits *//***************************************************************************/
1370aeed3e9SJustin Hibbits #define FM_PCD_ALLOC_KG_SCHEMES                 3
1380aeed3e9SJustin Hibbits 
1390aeed3e9SJustin Hibbits /**************************************************************************//**
1400aeed3e9SJustin Hibbits  @Function      FM_PCD_FREE_KG_SCHEMES
1410aeed3e9SJustin Hibbits 
1420aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to Free KG resources
1430aeed3e9SJustin Hibbits 
1440aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer
1450aeed3e9SJustin Hibbits *//***************************************************************************/
1460aeed3e9SJustin Hibbits #define FM_PCD_FREE_KG_SCHEMES                  4
1470aeed3e9SJustin Hibbits 
1480aeed3e9SJustin Hibbits /**************************************************************************//**
1490aeed3e9SJustin Hibbits  @Function      FM_PCD_ALLOC_PROFILES
1500aeed3e9SJustin Hibbits 
1510aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to allocate Policer profiles
1520aeed3e9SJustin Hibbits 
153852ba100SJustin Hibbits  @Param[in/out] t_FmIpcResourceAllocParams Pointer
1540aeed3e9SJustin Hibbits *//***************************************************************************/
1550aeed3e9SJustin Hibbits #define FM_PCD_ALLOC_PROFILES                   5
1560aeed3e9SJustin Hibbits 
1570aeed3e9SJustin Hibbits /**************************************************************************//**
1580aeed3e9SJustin Hibbits  @Function      FM_PCD_FREE_PROFILES
1590aeed3e9SJustin Hibbits 
1600aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to Free Policer profiles
1610aeed3e9SJustin Hibbits 
162852ba100SJustin Hibbits  @Param[in/out] t_FmIpcResourceAllocParams Pointer
1630aeed3e9SJustin Hibbits *//***************************************************************************/
1640aeed3e9SJustin Hibbits #define FM_PCD_FREE_PROFILES                    6
1650aeed3e9SJustin Hibbits 
1660aeed3e9SJustin Hibbits /**************************************************************************//**
167852ba100SJustin Hibbits  @Function      FM_PCD_SET_PORT_PROFILES
168852ba100SJustin Hibbits 
169852ba100SJustin Hibbits  @Description   Used by FM PCD front-end in order to allocate Policer profiles
170852ba100SJustin Hibbits                 for specific port
171852ba100SJustin Hibbits 
172852ba100SJustin Hibbits  @Param[in/out] t_FmIpcResourceAllocParams Pointer
173852ba100SJustin Hibbits *//***************************************************************************/
174852ba100SJustin Hibbits #define FM_PCD_SET_PORT_PROFILES                7
175852ba100SJustin Hibbits 
176852ba100SJustin Hibbits /**************************************************************************//**
177852ba100SJustin Hibbits  @Function      FM_PCD_CLEAR_PORT_PROFILES
178852ba100SJustin Hibbits 
179852ba100SJustin Hibbits  @Description   Used by FM PCD front-end in order to allocate Policer profiles
180852ba100SJustin Hibbits                 for specific port
181852ba100SJustin Hibbits 
182852ba100SJustin Hibbits  @Param[in/out] t_FmIpcResourceAllocParams Pointer
183852ba100SJustin Hibbits *//***************************************************************************/
184852ba100SJustin Hibbits #define FM_PCD_CLEAR_PORT_PROFILES              8
185852ba100SJustin Hibbits 
186852ba100SJustin Hibbits /**************************************************************************//**
1870aeed3e9SJustin Hibbits  @Function      FM_PCD_GET_PHYS_MURAM_BASE
1880aeed3e9SJustin Hibbits 
1890aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to get MURAM base address
1900aeed3e9SJustin Hibbits 
1910aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIcPhysAddr Pointer
1920aeed3e9SJustin Hibbits *//***************************************************************************/
193852ba100SJustin Hibbits #define FM_PCD_GET_PHYS_MURAM_BASE              9
1940aeed3e9SJustin Hibbits 
1950aeed3e9SJustin Hibbits /**************************************************************************//**
1960aeed3e9SJustin Hibbits  @Function      FM_PCD_GET_SW_PRS_OFFSET
1970aeed3e9SJustin Hibbits 
1980aeed3e9SJustin Hibbits  @Description   Used by FM front-end to get the SW parser offset of the start of
1990aeed3e9SJustin Hibbits                 code relevant to a given label.
2000aeed3e9SJustin Hibbits 
2010aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcSwPrsLable Pointer
2020aeed3e9SJustin Hibbits *//***************************************************************************/
203852ba100SJustin Hibbits #define FM_PCD_GET_SW_PRS_OFFSET                10
2040aeed3e9SJustin Hibbits 
2050aeed3e9SJustin Hibbits /**************************************************************************//**
2060aeed3e9SJustin Hibbits  @Function      FM_PCD_MASTER_IS_ENABLED
2070aeed3e9SJustin Hibbits 
2080aeed3e9SJustin Hibbits  @Description   Used by FM front-end in order to verify
2090aeed3e9SJustin Hibbits                 PCD enablement.
2100aeed3e9SJustin Hibbits 
2110aeed3e9SJustin Hibbits  @Param[in]     bool Pointer
2120aeed3e9SJustin Hibbits *//***************************************************************************/
2130aeed3e9SJustin Hibbits #define FM_PCD_MASTER_IS_ENABLED                15
2140aeed3e9SJustin Hibbits 
2150aeed3e9SJustin Hibbits /**************************************************************************//**
2160aeed3e9SJustin Hibbits  @Function      FM_PCD_GUEST_DISABLE
2170aeed3e9SJustin Hibbits 
2180aeed3e9SJustin Hibbits  @Description   Used by FM front-end to inform back-end when
2190aeed3e9SJustin Hibbits                 front-end PCD is disabled
2200aeed3e9SJustin Hibbits 
2210aeed3e9SJustin Hibbits  @Param[in]     None
2220aeed3e9SJustin Hibbits *//***************************************************************************/
2230aeed3e9SJustin Hibbits #define FM_PCD_GUEST_DISABLE                    16
2240aeed3e9SJustin Hibbits 
2250aeed3e9SJustin Hibbits /**************************************************************************//**
2260aeed3e9SJustin Hibbits  @Function      FM_PCD_FREE_KG_CLSPLAN
2270aeed3e9SJustin Hibbits 
2280aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to Free KG classification plan entries
2290aeed3e9SJustin Hibbits 
2300aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
2310aeed3e9SJustin Hibbits *//***************************************************************************/
2320aeed3e9SJustin Hibbits #define FM_PCD_FREE_KG_CLSPLAN                  22
2330aeed3e9SJustin Hibbits 
2340aeed3e9SJustin Hibbits /**************************************************************************//**
2350aeed3e9SJustin Hibbits  @Function      FM_PCD_ALLOC_KG_CLSPLAN
2360aeed3e9SJustin Hibbits 
2370aeed3e9SJustin Hibbits  @Description   Used by FM PCD front-end in order to allocate KG classification plan entries
2380aeed3e9SJustin Hibbits 
2390aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
2400aeed3e9SJustin Hibbits *//***************************************************************************/
2410aeed3e9SJustin Hibbits #define FM_PCD_ALLOC_KG_CLSPLAN                 23
2420aeed3e9SJustin Hibbits 
2430aeed3e9SJustin Hibbits /**************************************************************************//**
2440aeed3e9SJustin Hibbits  @Function      FM_PCD_MASTER_IS_ALIVE
2450aeed3e9SJustin Hibbits 
2460aeed3e9SJustin Hibbits  @Description   Used by FM front-end to check that back-end exists
2470aeed3e9SJustin Hibbits 
2480aeed3e9SJustin Hibbits  @Param[in]     None
2490aeed3e9SJustin Hibbits *//***************************************************************************/
2500aeed3e9SJustin Hibbits #define FM_PCD_MASTER_IS_ALIVE                  24
2510aeed3e9SJustin Hibbits 
2520aeed3e9SJustin Hibbits /**************************************************************************//**
2530aeed3e9SJustin Hibbits  @Function      FM_PCD_GET_COUNTER
2540aeed3e9SJustin Hibbits 
2550aeed3e9SJustin Hibbits  @Description   Used by FM front-end to read PCD counters
2560aeed3e9SJustin Hibbits 
2570aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcGetCounter Pointer
2580aeed3e9SJustin Hibbits *//***************************************************************************/
2590aeed3e9SJustin Hibbits #define FM_PCD_GET_COUNTER                      25
2600aeed3e9SJustin Hibbits 
2610aeed3e9SJustin Hibbits /**************************************************************************//**
2620aeed3e9SJustin Hibbits  @Function      FM_PCD_PRS_INC_PORT_STATS
2630aeed3e9SJustin Hibbits 
2640aeed3e9SJustin Hibbits  @Description   Used by FM front-end to set/clear statistics for port
2650aeed3e9SJustin Hibbits 
2660aeed3e9SJustin Hibbits  @Param[in/out] t_FmPcdIpcPrsIncludePort Pointer
2670aeed3e9SJustin Hibbits *//***************************************************************************/
2680aeed3e9SJustin Hibbits #define FM_PCD_PRS_INC_PORT_STATS               26
269852ba100SJustin Hibbits 
270852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
271852ba100SJustin Hibbits /* TODO - doc */
272852ba100SJustin Hibbits #define FM_PCD_ALLOC_SP                         27
273852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
274852ba100SJustin Hibbits 
275852ba100SJustin Hibbits 
2760aeed3e9SJustin Hibbits /** @} */ /* end of FM_PCD_IPC_grp group */
2770aeed3e9SJustin Hibbits /** @} */ /* end of FM_grp group */
2780aeed3e9SJustin Hibbits 
2790aeed3e9SJustin Hibbits 
2800aeed3e9SJustin Hibbits #endif /* __FM_PCD_IPC_H */
281