1 /*
2 * Copyright 2008-2012 Freescale Semiconductor Inc.
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 /******************************************************************************
35 @File fm_sp_common.h
36
37 @Description FM SP ...
38 *//***************************************************************************/
39 #ifndef __FM_SP_COMMON_H
40 #define __FM_SP_COMMON_H
41
42 #include "std_ext.h"
43 #include "error_ext.h"
44 #include "list_ext.h"
45
46 #include "fm_ext.h"
47 #include "fm_pcd_ext.h"
48 #include "fsl_fman.h"
49
50 /**************************************************************************//**
51 @Description defaults
52 *//***************************************************************************/
53 #define DEFAULT_FM_SP_bufferPrefixContent_privDataSize 0
54 #define DEFAULT_FM_SP_bufferPrefixContent_passPrsResult FALSE
55 #define DEFAULT_FM_SP_bufferPrefixContent_passTimeStamp FALSE
56 #define DEFAULT_FM_SP_bufferPrefixContent_allOtherPCDInfo FALSE
57 #define DEFAULT_FM_SP_bufferPrefixContent_dataAlign 64
58
59 /**************************************************************************//**
60 @Description structure for defining internal context copying
61 *//***************************************************************************/
62 typedef struct
63 {
64 uint16_t extBufOffset; /**< Offset in External buffer to which internal
65 context is copied to (Rx) or taken from (Tx, Op). */
66 uint8_t intContextOffset; /**< Offset within internal context to copy from
67 (Rx) or to copy to (Tx, Op). */
68 uint16_t size; /**< Internal offset size to be copied */
69 } t_FmSpIntContextDataCopy;
70
71 /**************************************************************************//**
72 @Description struct for defining external buffer margins
73 *//***************************************************************************/
74 typedef struct {
75 uint16_t startMargins; /**< Number of bytes to be left at the beginning
76 of the external buffer (must be divisible by 16) */
77 uint16_t endMargins; /**< number of bytes to be left at the end
78 of the external buffer(must be divisible by 16) */
79 } t_FmSpBufMargins;
80
81 typedef struct {
82 uint32_t dataOffset;
83 uint32_t prsResultOffset;
84 uint32_t timeStampOffset;
85 uint32_t hashResultOffset;
86 uint32_t pcdInfoOffset;
87 uint32_t manipOffset;
88 } t_FmSpBufferOffsets;
89
90
91 t_Error FmSpBuildBufferStructure(t_FmSpIntContextDataCopy *p_FmPortIntContextDataCopy,
92 t_FmBufferPrefixContent *p_BufferPrefixContent,
93 t_FmSpBufMargins *p_FmPortBufMargins,
94 t_FmSpBufferOffsets *p_FmPortBufferOffsets,
95 uint8_t *internalBufferOffset);
96
97 t_Error FmSpCheckIntContextParams(t_FmSpIntContextDataCopy *p_FmSpIntContextDataCopy);
98 t_Error FmSpCheckBufPoolsParams(t_FmExtPools *p_FmExtPools,
99 t_FmBackupBmPools *p_FmBackupBmPools,
100 t_FmBufPoolDepletion *p_FmBufPoolDepletion);
101 t_Error FmSpCheckBufMargins(t_FmSpBufMargins *p_FmSpBufMargins);
102 void FmSpSetBufPoolsInAscOrderOfBufSizes(t_FmExtPools *p_FmExtPools, uint8_t *orderedArray, uint16_t *sizesArray);
103
104 t_Error FmPcdSpAllocProfiles(t_Handle h_FmPcd,
105 uint8_t hardwarePortId,
106 uint16_t numOfStorageProfiles,
107 uint16_t *base,
108 uint8_t *log2Num);
109 t_Error FmPcdSpGetAbsoluteProfileId(t_Handle h_FmPcd,
110 t_Handle h_FmPort,
111 uint16_t relativeProfile,
112 uint16_t *p_AbsoluteId);
113 void SpInvalidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId);
114 void SpValidateProfileSw(t_Handle h_FmPcd, uint16_t absoluteProfileId);
115
116
117 #endif /* __FM_SP_COMMON_H */
Cache object: f793155f57d02a8747342885984d9554
|