1/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc.
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *     * Redistributions of source code must retain the above copyright
7 *       notice, this list of conditions and the following disclaimer.
8 *     * Redistributions in binary form must reproduce the above copyright
9 *       notice, this list of conditions and the following disclaimer in the
10 *       documentation and/or other materials provided with the distribution.
11 *     * Neither the name of Freescale Semiconductor nor the
12 *       names of its contributors may be used to endorse or promote products
13 *       derived from this software without specific prior written permission.
14 *
15 *
16 * ALTERNATIVELY, this software may be distributed under the terms of the
17 * GNU General Public License ("GPL") as published by the Free Software
18 * Foundation, either version 2 of that License or (at your option) any
19 * later version.
20 *
21 * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
22 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
25 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/**************************************************************************//**
34 @File          fm_pcd_ipc.h
35
36 @Description   FM PCD Inter-Partition prototypes, structures and definitions.
37*//***************************************************************************/
38#ifndef __FM_PCD_IPC_H
39#define __FM_PCD_IPC_H
40
41#include "std_ext.h"
42
43
44/**************************************************************************//**
45 @Group         FM_grp Frame Manager API
46
47 @Description   FM API functions, definitions and enums
48
49 @{
50*//***************************************************************************/
51
52
53#if defined(__MWERKS__) && !defined(__GNUC__)
54#pragma pack(push,1)
55#endif /* defined(__MWERKS__) && ... */
56#define MEM_MAP_START
57
58/**************************************************************************//**
59 @Description   Structure for getting a sw parser address according to a label
60                Fields commented 'IN' are passed by the port module to be used
61                by the FM module.
62                Fields commented 'OUT' will be filled by FM before returning to port.
63*//***************************************************************************/
64typedef _Packed struct t_FmPcdIpcSwPrsLable
65{
66    uint32_t    enumHdr;                        /**< IN. The existance of this header will envoke
67                                                     the sw parser code. */
68    uint8_t     indexPerHdr;                    /**< IN. Normally 0, if more than one sw parser
69                                                     attachments for the same header, use this
70
71                                                   index to distinguish between them. */
72} _PackedType t_FmPcdIpcSwPrsLable;
73
74/**************************************************************************//**
75 @Description   Structure for port-PCD communication.
76                Fields commented 'IN' are passed by the port module to be used
77                by the FM module.
78                Fields commented 'OUT' will be filled by FM before returning to port.
79                Some fields are optional (depending on configuration) and
80                will be analized by the port and FM modules accordingly.
81*//***************************************************************************/
82typedef  struct t_FmPcdIpcKgSchemesParams
83{
84    uint8_t     guestId;                                    /**< IN */
85    uint8_t     numOfSchemes;                               /**< IN */
86    uint8_t     schemesIds[FM_PCD_KG_NUM_OF_SCHEMES];       /**< OUT */
87} _PackedType t_FmPcdIpcKgSchemesParams;
88
89typedef  struct t_FmPcdIpcKgClsPlanParams
90{
91    uint8_t     guestId;                                    /**< IN */
92    uint16_t    numOfClsPlanEntries;                        /**< IN */
93    uint8_t     clsPlanBase;                                /**< IN in alloc only */
94} _PackedType t_FmPcdIpcKgClsPlanParams;
95
96typedef _Packed struct t_FmPcdIpcPlcrAllocParams
97{
98    uint16_t num;
99    uint8_t  hardwarePortId;
100    uint16_t plcrProfilesBase;
101} _PackedType t_FmPcdIpcPlcrAllocParams;
102
103typedef _Packed struct t_FmPcdIpcSharedPlcrAllocParams
104{
105    uint16_t  num;                                    /**< IN */
106    //uint16_t  profilesIds[FM_PCD_PLCR_NUM_ENTRIES];   /**< OUT */
107    uint32_t    sharedProfilesMask[8];
108} _PackedType t_FmPcdIpcSharedPlcrAllocParams;
109
110typedef _Packed struct t_FmPcdIpcPrsIncludePort
111{
112    uint8_t hardwarePortId;     /* IN */
113    bool    include;            /* IN */
114} _PackedType t_FmPcdIpcPrsIncludePort;
115
116
117#define FM_PCD_MAX_REPLY_SIZE           16
118#define FM_PCD_MAX_MSG_SIZE             36
119#define FM_PCD_MAX_REPLY_BODY_SIZE      36
120
121typedef _Packed struct
122{
123    uint32_t    msgId;
124    uint8_t     msgBody[FM_PCD_MAX_MSG_SIZE];
125} _PackedType t_FmPcdIpcMsg;
126
127typedef _Packed struct t_FmPcdIpcReply
128{
129    uint32_t    error;
130    uint8_t     replyBody[FM_PCD_MAX_REPLY_BODY_SIZE];
131} _PackedType t_FmPcdIpcReply;
132
133#define MEM_MAP_END
134#if defined(__MWERKS__) && !defined(__GNUC__)
135#pragma pack(pop)
136#endif /* defined(__MWERKS__) && ... */
137
138
139
140/**************************************************************************//**
141 @Function      FM_PCD_ALLOC_KG_SCHEMES
142
143 @Description   Used by FM PCD front-end in order to allocate KG resources
144
145 @Param[in/out] t_FmPcdIpcKgAllocParams Pointer
146*//***************************************************************************/
147#define FM_PCD_ALLOC_KG_SCHEMES                 3
148
149/**************************************************************************//**
150 @Function      FM_PCD_FREE_KG_SCHEMES
151
152 @Description   Used by FM PCD front-end in order to Free KG resources
153
154 @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer
155*//***************************************************************************/
156#define FM_PCD_FREE_KG_SCHEMES                  4
157
158/**************************************************************************//**
159 @Function      FM_PCD_ALLOC_PROFILES
160
161 @Description   Used by FM PCD front-end in order to allocate Policer profiles
162
163 @Param[in/out] t_FmPcdIpcKgSchemesParams Pointer
164*//***************************************************************************/
165#define FM_PCD_ALLOC_PROFILES                   5
166
167/**************************************************************************//**
168 @Function      FM_PCD_FREE_PROFILES
169
170 @Description   Used by FM PCD front-end in order to Free Policer profiles
171
172 @Param[in/out] t_FmPcdIpcPlcrAllocParams Pointer
173*//***************************************************************************/
174#define FM_PCD_FREE_PROFILES                    6
175
176/**************************************************************************//**
177 @Function      FM_PCD_GET_PHYS_MURAM_BASE
178
179 @Description   Used by FM PCD front-end in order to get MURAM base address
180
181 @Param[in/out] t_FmPcdIcPhysAddr Pointer
182*//***************************************************************************/
183#define FM_PCD_GET_PHYS_MURAM_BASE              7
184
185/**************************************************************************//**
186 @Function      FM_PCD_GET_SW_PRS_OFFSET
187
188 @Description   Used by FM front-end to get the SW parser offset of the start of
189                code relevant to a given label.
190
191 @Param[in/out] t_FmPcdIpcSwPrsLable Pointer
192*//***************************************************************************/
193#define FM_PCD_GET_SW_PRS_OFFSET                8
194
195/**************************************************************************//**
196 @Function      FM_PCD_ALLOC_SHARED_PROFILES
197
198 @Description   Used by FM PCD front-end in order to allocate shared profiles
199
200 @Param[in/out] t_FmPcdIpcSharedPlcrAllocParams Pointer
201*//***************************************************************************/
202#define FM_PCD_ALLOC_SHARED_PROFILES            9
203
204/**************************************************************************//**
205 @Function      FM_PCD_FREE_SHARED_PROFILES
206
207 @Description   Used by FM PCD front-end in order to free shared profiles
208
209 @Param[in/out] t_FmPcdIpcSharedPlcrAllocParams Pointer
210*//***************************************************************************/
211#define FM_PCD_FREE_SHARED_PROFILES             10
212
213/**************************************************************************//**
214 @Function      FM_PCD_MASTER_IS_ENABLED
215
216 @Description   Used by FM front-end in order to verify
217                PCD enablement.
218
219 @Param[in]     bool Pointer
220*//***************************************************************************/
221#define FM_PCD_MASTER_IS_ENABLED                15
222
223/**************************************************************************//**
224 @Function      FM_PCD_GUEST_DISABLE
225
226 @Description   Used by FM front-end to inform back-end when
227                front-end PCD is disabled
228
229 @Param[in]     None
230*//***************************************************************************/
231#define FM_PCD_GUEST_DISABLE                    16
232
233/**************************************************************************//**
234 @Function      FM_PCD_DUMP_REGS
235
236 @Description   Used by FM front-end to dump all PCD registers
237
238 @Param[in]     None
239*//***************************************************************************/
240#define FM_PCD_DUMP_REGS                        17
241
242/**************************************************************************//**
243 @Function      FM_PCD_KG_DUMP_REGS
244
245 @Description   Used by FM front-end to dump KG registers
246
247 @Param[in]     None
248*//***************************************************************************/
249#define FM_PCD_KG_DUMP_REGS                     18
250
251/**************************************************************************//**
252 @Function      FM_PCD_PLCR_DUMP_REGS
253
254 @Description   Used by FM front-end to dump PLCR registers
255
256 @Param[in]     None
257*//***************************************************************************/
258#define FM_PCD_PLCR_DUMP_REGS                   19
259
260/**************************************************************************//**
261 @Function      FM_PCD_PLCR_PROFILE_DUMP_REGS
262
263 @Description   Used by FM front-end to dump PLCR specified profile registers
264
265 @Param[in]     t_Handle Pointer
266*//***************************************************************************/
267#define FM_PCD_PLCR_PROFILE_DUMP_REGS           20
268
269/**************************************************************************//**
270 @Function      FM_PCD_PRS_DUMP_REGS
271
272 @Description   Used by FM front-end to dump PRS registers
273
274 @Param[in]     None
275*//***************************************************************************/
276#define FM_PCD_PRS_DUMP_REGS                    21
277
278/**************************************************************************//**
279 @Function      FM_PCD_FREE_KG_CLSPLAN
280
281 @Description   Used by FM PCD front-end in order to Free KG classification plan entries
282
283 @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
284*//***************************************************************************/
285#define FM_PCD_FREE_KG_CLSPLAN                     22
286
287/**************************************************************************//**
288 @Function      FM_PCD_ALLOC_KG_CLSPLAN
289
290 @Description   Used by FM PCD front-end in order to allocate KG classification plan entries
291
292 @Param[in/out] t_FmPcdIpcKgClsPlanParams Pointer
293*//***************************************************************************/
294#define FM_PCD_ALLOC_KG_CLSPLAN                    23
295
296/**************************************************************************//**
297 @Function      FM_PCD_MASTER_IS_ALIVE
298
299 @Description   Used by FM front-end to check that back-end exists
300
301 @Param[in]     None
302*//***************************************************************************/
303#define FM_PCD_MASTER_IS_ALIVE                  24
304
305/**************************************************************************//**
306 @Function      FM_PCD_GET_COUNTER
307
308 @Description   Used by FM front-end to read PCD counters
309
310 @Param[in/out] t_FmPcdIpcGetCounter Pointer
311*//***************************************************************************/
312#define FM_PCD_GET_COUNTER                      25
313
314/**************************************************************************//**
315 @Function      FM_PCD_PRS_INC_PORT_STATS
316
317 @Description   Used by FM front-end to set/clear statistics for port
318
319 @Param[in/out] t_FmPcdIpcPrsIncludePort Pointer
320*//***************************************************************************/
321#define FM_PCD_PRS_INC_PORT_STATS               26
322/** @} */ /* end of FM_PCD_IPC_grp group */
323/** @} */ /* end of FM_grp group */
324
325
326#endif /* __FM_PCD_IPC_H */
327