1 /*\r
2 *\r
3 * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ \r
4 * \r
5 * \r
6 * Redistribution and use in source and binary forms, with or without \r
7 * modification, are permitted provided that the following conditions \r
8 * are met:\r
9 *\r
10 * Redistributions of source code must retain the above copyright \r
11 * notice, this list of conditions and the following disclaimer.\r
12 *\r
13 * Redistributions in binary form must reproduce the above copyright\r
14 * notice, this list of conditions and the following disclaimer in the \r
15 * documentation and/or other materials provided with the \r
16 * distribution.\r
17 *\r
18 * Neither the name of Texas Instruments Incorporated nor the names of\r
19 * its contributors may be used to endorse or promote products derived\r
20 * from this software without specific prior written permission.\r
21 *\r
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \r
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT \r
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\r
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT \r
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, \r
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT \r
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\r
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE \r
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
33 *\r
34 */\r
35 #ifndef _TCP3D_MAIN_H_\r
36 #define _TCP3D_MAIN_H_\r
37 \r
38 /* XDC includes */\r
39 //#include <xdc/std.h>\r
40 #include <xdc/cfg/global.h>\r
41 #include <xdc/runtime/System.h>\r
42 #include <xdc/runtime/Memory.h>\r
43 #include <xdc/runtime/IHeap.h>\r
44 \r
45 /* Driver includes */\r
46 #include <ti/drv/tcp3d/tcp3d_drv.h>\r
47 #include <ti/drv/tcp3d/src/tcp3d_utils.h>\r
48 \r
49 /* Utility includes */\r
50 #include "tcp3d_codeBlkSeg.h"\r
51 \r
52 /**********************************************************************\r
53 ************************** Test Macros *******************************\r
54 **********************************************************************/\r
55 /**\r
56 * Address mapping is done based on the mapping shown below.\r
57 * Check on the address done to ensure it be in L2SRAM space.\r
58 * \r
59 * L2SRAM : org = 0x00800000, len = 0x100000 (local)\r
60 * GEM0_L2_MEM : org = 0x10800000, len = 0x100000 (global)\r
61 * GEM1_L2_MEM : org = 0x11800000, len = 0x100000 (global)\r
62 * GEM2_L2_MEM : org = 0x12800000, len = 0x100000 (global)\r
63 * GEM3_L2_MEM : org = 0x13800000, len = 0x100000 (global)\r
64 *\r
65 * MSMCSRAM : org = 0x0c000000, len = 0x200000 (global)\r
66 */\r
67 #define L2GLBMAP(coreID, addr) \\r
68 ( ( ((UInt32)(addr) >= 0x00800000) && ((UInt32)(addr) < 0x00900000) ) ? \\r
69 ( (UInt32)(addr) | (UInt32)((0x10 | (coreID & 0x3)) << 24) ) : \\r
70 (UInt32)(addr) ) \r
71 \r
72 /**********************************************************************\r
73 ************************** Test Compile Flags ************************\r
74 **********************************************************************/\r
75 /**\r
76 * Prepare all input config registers outside the Send loop (block size based, etc)\r
77 * except for beta states since they are data dependent.\r
78 */\r
79 #define TEST_PREPARE_ONLY_BETASTATE 1\r
80 \r
81 /**\r
82 * Set this flag to use the fixed input configuration parameters preparation\r
83 * optimization. This flag is useful only if TEST_PREPARE_ONLY_BETASTATE is\r
84 * not used.\r
85 */\r
86 #define TEST_PREPARE_ONLY_CODEBLOCK_PARAM_DEPENDENT 0\r
87 \r
88 /**\r
89 * Check the beta state values with the reference from the file generated \r
90 * with the test vectors.\r
91 */\r
92 #define TEST_BETA_VALUE_CHECK 0\r
93 \r
94 /**********************************************************************\r
95 ************************** Test Definitions **************************\r
96 **********************************************************************/\r
97 /* TCP3D modes */\r
98 #define TEST_MODE_SINGLE CSL_TCP3D_CFG_TCP3_MODE_MODE_SEL_3GPP //0 (NOT SUPPORTED)\r
99 #define TEST_MODE_LTE CSL_TCP3D_CFG_TCP3_MODE_MODE_SEL_LTE //1\r
100 #define TEST_MODE_WIMAX CSL_TCP3D_CFG_TCP3_MODE_MODE_SEL_WIMAX //2\r
101 #define TEST_MODE_SPLIT CSL_TCP3D_CFG_TCP3_MODE_MODE_SEL_HSUPA //3\r
102 \r
103 /* Test True/False flags */\r
104 #define TEST_FALSE 0\r
105 #define TEST_TRUE 1\r
106 \r
107 /* Test Interrupt flags */\r
108 #define TEST_INTR_ENABLE 1\r
109 #define TEST_INTR_DISABLE 0\r
110 \r
111 /**********************************************************************\r
112 ************************** Test Structures ***************************\r
113 **********************************************************************/\r
114 /*\r
115 * Structure that holds the configuration parameters. Used for storing the\r
116 * configuration values read from the file blockXX_cfgreg.dat for a given\r
117 * code block.\r
118 */\r
119 typedef struct cbConfig\r
120 {\r
121 /* Control */\r
122 Int32 mode_sel; //TCP3_MODE\r
123 Int32 lte_crc_init_sel;\r
124 \r
125 /* Input */\r
126 Int32 NumInfoBits; //CFG0\r
127 Int32 SW0_length; //CFG1\r
128 Int32 maxst_en; //CFG2\r
129 Int32 out_flag_en;\r
130 Int32 out_order_sel;\r
131 Int32 ext_scale_en;\r
132 Int32 soft_out_flag_en;\r
133 Int32 soft_out_fmt;\r
134 Int32 min_itr;\r
135 Int32 max_itr;\r
136 Int32 snr_val;\r
137 Int32 snr_rep;\r
138 Int32 stop_sel;\r
139 Int32 crc_iter_pass;\r
140 Int32 crc_sel;\r
141 Int32 maxst_thold; //CFG3\r
142 Int32 maxst_value;\r
143 Int32 ext_scale_0; //CFG8\r
144 Int32 ext_scale_1;\r
145 Int32 ext_scale_2;\r
146 Int32 ext_scale_3;\r
147 Int32 ext_scale_4; //CFG9\r
148 Int32 ext_scale_5;\r
149 Int32 ext_scale_6;\r
150 Int32 ext_scale_7;\r
151 Int32 ext_scale_8; //CFG10\r
152 Int32 ext_scale_9;\r
153 Int32 ext_scale_10;\r
154 Int32 ext_scale_11;\r
155 Int32 ext_scale_12; //CFG11\r
156 Int32 ext_scale_13;\r
157 Int32 ext_scale_14;\r
158 Int32 ext_scale_15;\r
159 } cbConfig;\r
160 \r
161 /*\r
162 * Structure for one code block description.\r
163 */\r
164 typedef struct cbDataDesc\r
165 {\r
166 UInt32 mode;\r
167 UInt32 crcInitVal;\r
168 Int8 tailBits[12];\r
169 Tcp3d_InCfgParams *inCfgParams;\r
170 UInt8 sw0LengthUsed;\r
171 \r
172 UInt32 blockSize;\r
173 UInt32 interFlag;\r
174 UInt32 sdFlag;\r
175 UInt32 stsFlag;\r
176 UInt32 llrOffset;\r
177 UInt32 sdOffset;\r
178 \r
179 UInt32 sizeCFG;\r
180 UInt32 sizeINTER;\r
181 UInt32 sizeLLR;\r
182 UInt32 sizeHD;\r
183 UInt32 sizeSD;\r
184 UInt32 sizeSTS;\r
185 \r
186 UInt32 *inCfg;\r
187 UInt16 *inInter;\r
188 Int8 *inLLR; /* three arrays with offset in llrOffset */\r
189 UInt32 *outHD;\r
190 UInt32 *refHD;\r
191 Int8 *outSD; /* three arrays with offset in sdOffset */\r
192 Int8 *refSD; /* three arrays with offset in sdOffset */\r
193 UInt32 *outSts;\r
194 UInt32 *refSts;\r
195 } cbDataDesc;\r
196 \r
197 /*\r
198 * Structure for one test description. \r
199 */\r
200 typedef struct cbTestDesc\r
201 {\r
202 cbDataDesc **cbData;\r
203 Int32 maxNumCB;\r
204 Int32 mode;\r
205 Int32 doubleBuffer;\r
206 Int32 lteCrcSel;\r
207 } cbTestDesc;\r
208 \r
209 /**********************************************************************\r
210 ************************** Test Global Tables ************************\r
211 **********************************************************************/\r
212 /* interleaver tables (used in tcp3d_inputCongigPrep.c file) */\r
213 extern Int16 TCP3_LteInterleaverTable[220][7];\r
214 extern Int16 TCP3_WimaxInterleaverTable[17][4];\r
215 \r
216 /**********************************************************************\r
217 *********************** Test Global Functions ************************\r
218 **********************************************************************/\r
219 /* interleaver table index calculation function */\r
220 Int32 LTE_interleaver_index(Int32 K);\r
221 Int32 WIMAX_interleaver_index(Int32 K);\r
222 \r
223 /* input config prepare function definitions (see tcp3d_inputCongigPrep.c) */\r
224 Void prepareBlockSizeDepICParams(cbDataDesc *cbPtr);\r
225 Void prepareBetaStateICParams(cbDataDesc *cbPtr, UInt8 mode);\r
226 Void prepareIC(cbDataDesc *cbPtr, UInt32 *tempIC, UInt8 copyFlag);\r
227 Void fillICParams(Tcp3d_InCfgParams *inCfgParams, cbConfig *cbCfg);\r
228 Void checkBetaValues (UInt32 inCfg[]);\r
229 \r
230 /* Test vector functions (see tcp3d_testvector.c) */\r
231 Int getTestSetCB(IHeap_Handle dataHeap, cbTestDesc *cbTestSet, Char *testFolder);\r
232 Void freeTestSetCB(IHeap_Handle dataHeap, cbTestDesc *cbTestSet);\r
233 \r
234 #endif /* _TCP3D_MAIN_H_ */\r