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