comparison L1/cust1/l1_rf61.c @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:75a11d740a02
1 /************* Revision Controle System Header *************
2 * GSM Layer 1 software
3 *
4 * Filename l1_rf61.c
5 * Version 1.0
6 * Date June 12th, 2005
7 *
8 ************* Revision Controle System Header *************/
9
10 T_RF rf =
11 {
12 RF_LOCOSTO, //RF revision
13 RF_HW_BAND_SUPPORT, // radio_band_support E-GSM/DCS + PCS
14
15 { //RX structure
16 { //AGC structure
17 140, // low_agc_noise_thr;
18 110, // high_agc_sat_thr;
19 0, // low_agc;
20 23, // high_agc;
21 //IL2AGC tables
22 { // below is: il2agc_pwr[121];
23 // il2agc_max[121];
24 // il2agc_av[121];
25 // il2agc_pwr
26 // Note this is shared between PCN and EGSM.
27 0, /* EGSM_MAX IL=0 */
28 0, /* EGSM_MAX IL=-1 */
29 0, /* EGSM_MAX IL=-2 */
30 0, /* EGSM_MAX IL=-3 */
31 0, /* EGSM_MAX IL=-4 */
32 0, /* EGSM_MAX IL=-5 */
33 0, /* EGSM_MAX IL=-6 */
34 0, /* EGSM_MAX IL=-7 */
35 0, /* EGSM_MAX IL=-8 */
36 0, /* EGSM_MAX IL=-9 */
37 0, /* EGSM_MAX IL=-10 */
38 0, /* EGSM_MAX IL=-11 */
39 0, /* EGSM_MAX IL=-12 */
40 0, /* EGSM_MAX IL=-13 */
41 0, /* EGSM_MAX IL=-14 */
42 0, /* EGSM_MAX IL=-15 */
43 0, /* EGSM_MAX IL=-16 */
44 0, /* EGSM_MAX IL=-17 */
45 0, /* EGSM_MAX IL=-18 */
46 0, /* EGSM_MAX IL=-19 */
47 0, /* EGSM_MAX IL=-20 */
48 0, /* EGSM_MAX IL=-21 */
49 0, /* EGSM_MAX IL=-22 */
50 0, /* EGSM_MAX IL=-23 */
51 0, /* EGSM_MAX IL=-24 */
52 0, /* EGSM_MAX IL=-25 */
53 0, /* EGSM_MAX IL=-26 */
54 0, /* EGSM_MAX IL=-27 */
55 0, /* EGSM_MAX IL=-28 */
56 0, /* EGSM_MAX IL=-29 */
57 0, /* EGSM_MAX IL=-30 */
58 0, /* EGSM_MAX IL=-31 */
59 0, /* EGSM_MAX IL=-32 */
60 0, /* EGSM_MAX IL=-33 */
61 0, /* EGSM_MAX IL=-34 */
62 0, /* EGSM_MAX IL=-35 */
63 0, /* EGSM_MAX IL=-36 */
64 0, /* EGSM_MAX IL=-37 */
65 0, /* EGSM_MAX IL=-38 */
66 0, /* EGSM_MAX IL=-39 */
67 0, /* EGSM_MAX IL=-40 */
68 0, /* EGSM_MAX IL=-41 */
69 0, /* EGSM_MAX IL=-42 */
70 5, /* EGSM_MAX IL=-43 */
71 5, /* EGSM_MAX IL=-44 */
72 0, /* EGSM_MAX IL=-45 */
73 0, /* EGSM_MAX IL=-46 */
74 0, /* EGSM_MAX IL=-47 */
75 0, /* EGSM_MAX IL=-48 */
76 0, /* EGSM_MAX IL=-49 */
77 0, /* EGSM_MAX IL=-50 */
78 0, /* EGSM_MAX IL=-51 */
79 0, /* EGSM_MAX IL=-52 */
80 0, /* EGSM_MAX IL=-53 */
81 0, /* EGSM_MAX IL=-54 */
82 0, /* EGSM_MAX IL=-55 */
83 0, /* EGSM_MAX IL=-56 */
84 0, /* EGSM_MAX IL=-57 */
85 0, /* EGSM_MAX IL=-58 */
86 0, /* EGSM_MAX IL=-59 */
87 0, /* EGSM_MAX IL=-60 */
88 0, /* EGSM_MAX IL=-61 */
89 0, /* EGSM_MAX IL=-62 */
90 0, /* EGSM_MAX IL=-63 */
91 0, /* EGSM_MAX IL=-64 */
92 0, /* EGSM_MAX IL=-65 */
93 0, /* EGSM_MAX IL=-66 */
94 0, /* EGSM_MAX IL=-67 */
95 0, /* EGSM_MAX IL=-68 */
96 0, /* EGSM_MAX IL=-69 */
97 0, /* EGSM_MAX IL=-70 */
98 0, /* EGSM_MAX IL=-71 */
99 0, /* EGSM_MAX IL=-72 */
100 0, /* EGSM_MAX IL=-73 */
101 0, /* EGSM_MAX IL=-74 */
102 5, /* EGSM_MAX IL=-75 */
103 5, /* EGSM_MAX IL=-76 */
104 8, /* EGSM_MAX IL=-77 */
105 8, /* EGSM_MAX IL=-78 */
106 11, /* EGSM_MAX IL=-79 */
107 11, /* EGSM_MAX IL=-80 */
108 11, /* EGSM_MAX IL=-81 */
109 11, /* EGSM_MAX IL=-82 */
110 11, /* EGSM_MAX IL=-83 */
111 11, /* EGSM_MAX IL=-84 */
112 14, /* EGSM_MAX IL=-85 */
113 14, /* EGSM_MAX IL=-86 */
114 14, /* EGSM_MAX IL=-87 */
115 14, /* EGSM_MAX IL=-88 */
116 14, /* EGSM_MAX IL=-89 */
117 14, /* EGSM_MAX IL=-90 */
118 14, /* EGSM_MAX IL=-91 */
119 14, /* EGSM_MAX IL=-92 */
120 14, /* EGSM_MAX IL=-93 */
121 14, /* EGSM_MAX IL=-94 */
122 17, /* EGSM_MAX IL=-95 */
123 17, /* EGSM_MAX IL=-96 */
124 20, /* EGSM_MAX IL=-97 */
125 20, /* EGSM_MAX IL=-98 */
126 20, /* EGSM_MAX IL=-99 */
127 20, /* EGSM_MAX IL=-100 */
128 23, /* EGSM_MAX IL=-101 */
129 23, /* EGSM_MAX IL=-102 */
130 23, /* EGSM_MAX IL=-103 */
131 23, /* EGSM_MAX IL=-104 */
132 23, /* EGSM_MAX IL=-105 */
133 23, /* EGSM_MAX IL=-106 */
134 23, /* EGSM_MAX IL=-107 */
135 23, /* EGSM_MAX IL=-108 */
136 23, /* EGSM_MAX IL=-109 */
137 23, /* EGSM_MAX IL=-110 */
138 23, /* EGSM_MAX IL=-111 */
139 23, /* EGSM_MAX IL=-112 */
140 23, /* EGSM_MAX IL=-113 */
141 23, /* EGSM_MAX IL=-114 */
142 23, /* EGSM_MAX IL=-115 */
143 23, /* EGSM_MAX IL=-116 */
144 23, /* EGSM_MAX IL=-117 */
145 23, /* EGSM_MAX IL=-118 */
146 23, /* EGSM_MAX IL=-119 */
147 23 /* EGSM_MAX IL=-120 */
148 },
149 { // il2agc_max
150 // Note this is shared between PCN and EGSM.
151 0, /* EGSM_MAX IL=0 */
152 0, /* EGSM_MAX IL=-1 */
153 0, /* EGSM_MAX IL=-2 */
154 0, /* EGSM_MAX IL=-3 */
155 0, /* EGSM_MAX IL=-4 */
156 0, /* EGSM_MAX IL=-5 */
157 0, /* EGSM_MAX IL=-6 */
158 0, /* EGSM_MAX IL=-7 */
159 0, /* EGSM_MAX IL=-8 */
160 0, /* EGSM_MAX IL=-9 */
161 0, /* EGSM_MAX IL=-10 */
162 0, /* EGSM_MAX IL=-11 */
163 0, /* EGSM_MAX IL=-12 */
164 0, /* EGSM_MAX IL=-13 */
165 0, /* EGSM_MAX IL=-14 */
166 0, /* EGSM_MAX IL=-15 */
167 0, /* EGSM_MAX IL=-16 */
168 0, /* EGSM_MAX IL=-17 */
169 0, /* EGSM_MAX IL=-18 */
170 0, /* EGSM_MAX IL=-19 */
171 0, /* EGSM_MAX IL=-20 */
172 0, /* EGSM_MAX IL=-21 */
173 0, /* EGSM_MAX IL=-22 */
174 0, /* EGSM_MAX IL=-23 */
175 0, /* EGSM_MAX IL=-24 */
176 0, /* EGSM_MAX IL=-25 */
177 0, /* EGSM_MAX IL=-26 */
178 0, /* EGSM_MAX IL=-27 */
179 0, /* EGSM_MAX IL=-28 */
180 0, /* EGSM_MAX IL=-29 */
181 0, /* EGSM_MAX IL=-30 */
182 0, /* EGSM_MAX IL=-31 */
183 0, /* EGSM_MAX IL=-32 */
184 0, /* EGSM_MAX IL=-33 */
185 0, /* EGSM_MAX IL=-34 */
186 0, /* EGSM_MAX IL=-35 */
187 0, /* EGSM_MAX IL=-36 */
188 0, /* EGSM_MAX IL=-37 */
189 0, /* EGSM_MAX IL=-38 */
190 0, /* EGSM_MAX IL=-39 */
191 0, /* EGSM_MAX IL=-40 */
192 0, /* EGSM_MAX IL=-41 */
193 0, /* EGSM_MAX IL=-42 */
194 5, /* EGSM_MAX IL=-43 */
195 5, /* EGSM_MAX IL=-44 */
196 0, /* EGSM_MAX IL=-45 */
197 0, /* EGSM_MAX IL=-46 */
198 0, /* EGSM_MAX IL=-47 */
199 0, /* EGSM_MAX IL=-48 */
200 0, /* EGSM_MAX IL=-49 */
201 0, /* EGSM_MAX IL=-50 */
202 0, /* EGSM_MAX IL=-51 */
203 0, /* EGSM_MAX IL=-52 */
204 0, /* EGSM_MAX IL=-53 */
205 0, /* EGSM_MAX IL=-54 */
206 0, /* EGSM_MAX IL=-55 */
207 0, /* EGSM_MAX IL=-56 */
208 0, /* EGSM_MAX IL=-57 */
209 0, /* EGSM_MAX IL=-58 */
210 0, /* EGSM_MAX IL=-59 */
211 0, /* EGSM_MAX IL=-60 */
212 0, /* EGSM_MAX IL=-61 */
213 0, /* EGSM_MAX IL=-62 */
214 0, /* EGSM_MAX IL=-63 */
215 0, /* EGSM_MAX IL=-64 */
216 0, /* EGSM_MAX IL=-65 */
217 0, /* EGSM_MAX IL=-66 */
218 0, /* EGSM_MAX IL=-67 */
219 0, /* EGSM_MAX IL=-68 */
220 0, /* EGSM_MAX IL=-69 */
221 0, /* EGSM_MAX IL=-70 */
222 0, /* EGSM_MAX IL=-71 */
223 0, /* EGSM_MAX IL=-72 */
224 0, /* EGSM_MAX IL=-73 */
225 0, /* EGSM_MAX IL=-74 */
226 5, /* EGSM_MAX IL=-75 */
227 5, /* EGSM_MAX IL=-76 */
228 8, /* EGSM_MAX IL=-77 */
229 8, /* EGSM_MAX IL=-78 */
230 11, /* EGSM_MAX IL=-79 */
231 11, /* EGSM_MAX IL=-80 */
232 11, /* EGSM_MAX IL=-81 */
233 11, /* EGSM_MAX IL=-82 */
234 11, /* EGSM_MAX IL=-83 */
235 11, /* EGSM_MAX IL=-84 */
236 14, /* EGSM_MAX IL=-85 */
237 14, /* EGSM_MAX IL=-86 */
238 14, /* EGSM_MAX IL=-87 */
239 14, /* EGSM_MAX IL=-88 */
240 14, /* EGSM_MAX IL=-89 */
241 14, /* EGSM_MAX IL=-90 */
242 14, /* EGSM_MAX IL=-91 */
243 14, /* EGSM_MAX IL=-92 */
244 14, /* EGSM_MAX IL=-93 */
245 14, /* EGSM_MAX IL=-94 */
246 17, /* EGSM_MAX IL=-95 */
247 17, /* EGSM_MAX IL=-96 */
248 20, /* EGSM_MAX IL=-97 */
249 20, /* EGSM_MAX IL=-98 */
250 20, /* EGSM_MAX IL=-99 */
251 20, /* EGSM_MAX IL=-100 */
252 23, /* EGSM_MAX IL=-101 */
253 23, /* EGSM_MAX IL=-102 */
254 23, /* EGSM_MAX IL=-103 */
255 23, /* EGSM_MAX IL=-104 */
256 23, /* EGSM_MAX IL=-105 */
257 23, /* EGSM_MAX IL=-106 */
258 23, /* EGSM_MAX IL=-107 */
259 23, /* EGSM_MAX IL=-108 */
260 23, /* EGSM_MAX IL=-109 */
261 23, /* EGSM_MAX IL=-110 */
262 23, /* EGSM_MAX IL=-111 */
263 23, /* EGSM_MAX IL=-112 */
264 23, /* EGSM_MAX IL=-113 */
265 23, /* EGSM_MAX IL=-114 */
266 23, /* EGSM_MAX IL=-115 */
267 23, /* EGSM_MAX IL=-116 */
268 23, /* EGSM_MAX IL=-117 */
269 23, /* EGSM_MAX IL=-118 */
270 23, /* EGSM_MAX IL=-119 */
271 23 /* EGSM_MAX IL=-120 */
272 },
273 { // il2agc_av
274 // Note this is shared between PCN and EGSM.
275 0, /* EGSM_MAX IL=0 */
276 0, /* EGSM_MAX IL=-1 */
277 0, /* EGSM_MAX IL=-2 */
278 0, /* EGSM_MAX IL=-3 */
279 0, /* EGSM_MAX IL=-4 */
280 0, /* EGSM_MAX IL=-5 */
281 0, /* EGSM_MAX IL=-6 */
282 0, /* EGSM_MAX IL=-7 */
283 0, /* EGSM_MAX IL=-8 */
284 0, /* EGSM_MAX IL=-9 */
285 0, /* EGSM_MAX IL=-10 */
286 0, /* EGSM_MAX IL=-11 */
287 0, /* EGSM_MAX IL=-12 */
288 0, /* EGSM_MAX IL=-13 */
289 0, /* EGSM_MAX IL=-14 */
290 0, /* EGSM_MAX IL=-15 */
291 0, /* EGSM_MAX IL=-16 */
292 0, /* EGSM_MAX IL=-17 */
293 0, /* EGSM_MAX IL=-18 */
294 0, /* EGSM_MAX IL=-19 */
295 0, /* EGSM_MAX IL=-20 */
296 0, /* EGSM_MAX IL=-21 */
297 0, /* EGSM_MAX IL=-22 */
298 0, /* EGSM_MAX IL=-23 */
299 0, /* EGSM_MAX IL=-24 */
300 0, /* EGSM_MAX IL=-25 */
301 0, /* EGSM_MAX IL=-26 */
302 0, /* EGSM_MAX IL=-27 */
303 0, /* EGSM_MAX IL=-28 */
304 0, /* EGSM_MAX IL=-29 */
305 0, /* EGSM_MAX IL=-30 */
306 0, /* EGSM_MAX IL=-31 */
307 0, /* EGSM_MAX IL=-32 */
308 0, /* EGSM_MAX IL=-33 */
309 0, /* EGSM_MAX IL=-34 */
310 0, /* EGSM_MAX IL=-35 */
311 0, /* EGSM_MAX IL=-36 */
312 0, /* EGSM_MAX IL=-37 */
313 0, /* EGSM_MAX IL=-38 */
314 0, /* EGSM_MAX IL=-39 */
315 0, /* EGSM_MAX IL=-40 */
316 0, /* EGSM_MAX IL=-41 */
317 0, /* EGSM_MAX IL=-42 */
318 5, /* EGSM_MAX IL=-43 */
319 5, /* EGSM_MAX IL=-44 */
320 0, /* EGSM_MAX IL=-45 */
321 0, /* EGSM_MAX IL=-46 */
322 0, /* EGSM_MAX IL=-47 */
323 0, /* EGSM_MAX IL=-48 */
324 0, /* EGSM_MAX IL=-49 */
325 0, /* EGSM_MAX IL=-50 */
326 0, /* EGSM_MAX IL=-51 */
327 0, /* EGSM_MAX IL=-52 */
328 0, /* EGSM_MAX IL=-53 */
329 0, /* EGSM_MAX IL=-54 */
330 0, /* EGSM_MAX IL=-55 */
331 0, /* EGSM_MAX IL=-56 */
332 0, /* EGSM_MAX IL=-57 */
333 0, /* EGSM_MAX IL=-58 */
334 0, /* EGSM_MAX IL=-59 */
335 0, /* EGSM_MAX IL=-60 */
336 0, /* EGSM_MAX IL=-61 */
337 0, /* EGSM_MAX IL=-62 */
338 0, /* EGSM_MAX IL=-63 */
339 0, /* EGSM_MAX IL=-64 */
340 0, /* EGSM_MAX IL=-65 */
341 0, /* EGSM_MAX IL=-66 */
342 0, /* EGSM_MAX IL=-67 */
343 0, /* EGSM_MAX IL=-68 */
344 0, /* EGSM_MAX IL=-69 */
345 0, /* EGSM_MAX IL=-70 */
346 0, /* EGSM_MAX IL=-71 */
347 0, /* EGSM_MAX IL=-72 */
348 0, /* EGSM_MAX IL=-73 */
349 0, /* EGSM_MAX IL=-74 */
350 5, /* EGSM_MAX IL=-75 */
351 5, /* EGSM_MAX IL=-76 */
352 8, /* EGSM_MAX IL=-77 */
353 8, /* EGSM_MAX IL=-78 */
354 11, /* EGSM_MAX IL=-79 */
355 11, /* EGSM_MAX IL=-80 */
356 11, /* EGSM_MAX IL=-81 */
357 11, /* EGSM_MAX IL=-82 */
358 11, /* EGSM_MAX IL=-83 */
359 11, /* EGSM_MAX IL=-84 */
360 14, /* EGSM_MAX IL=-85 */
361 14, /* EGSM_MAX IL=-86 */
362 14, /* EGSM_MAX IL=-87 */
363 14, /* EGSM_MAX IL=-88 */
364 14, /* EGSM_MAX IL=-89 */
365 14, /* EGSM_MAX IL=-90 */
366 14, /* EGSM_MAX IL=-91 */
367 14, /* EGSM_MAX IL=-92 */
368 14, /* EGSM_MAX IL=-93 */
369 14, /* EGSM_MAX IL=-94 */
370 17, /* EGSM_MAX IL=-95 */
371 17, /* EGSM_MAX IL=-96 */
372 20, /* EGSM_MAX IL=-97 */
373 20, /* EGSM_MAX IL=-98 */
374 20, /* EGSM_MAX IL=-99 */
375 20, /* EGSM_MAX IL=-100 */
376 23, /* EGSM_MAX IL=-101 */
377 23, /* EGSM_MAX IL=-102 */
378 23, /* EGSM_MAX IL=-103 */
379 23, /* EGSM_MAX IL=-104 */
380 23, /* EGSM_MAX IL=-105 */
381 23, /* EGSM_MAX IL=-106 */
382 23, /* EGSM_MAX IL=-107 */
383 23, /* EGSM_MAX IL=-108 */
384 23, /* EGSM_MAX IL=-109 */
385 23, /* EGSM_MAX IL=-110 */
386 23, /* EGSM_MAX IL=-111 */
387 23, /* EGSM_MAX IL=-112 */
388 23, /* EGSM_MAX IL=-113 */
389 23, /* EGSM_MAX IL=-114 */
390 23, /* EGSM_MAX IL=-115 */
391 23, /* EGSM_MAX IL=-116 */
392 23, /* EGSM_MAX IL=-117 */
393 23, /* EGSM_MAX IL=-118 */
394 23, /* EGSM_MAX IL=-119 */
395 23 /* EGSM_MAX IL=-120 */
396 }
397 },
398 },
399 {
400 {0, 0}, // ramp up and down delays
401 GUARD_BITS, // number of guard bits needed for ramp up
402 PRG_TX // propagation delay PRG_TX
403 },
404 { //AFC parameters
405 EEPROM_AFC,
406 C_Psi_sta_inv, // (1/C_Psi_sta)
407 C_Psi_st, // C_Psi_sta * 0.8 F0.16
408 C_Psi_st_32, // F0.32
409 C_Psi_st_inv // (1/C_Psi_st)
410
411 #if (VCXO_ALGO==1)
412 ,C_AFC_DAC_CENTER, // VCXO startup parameter - best guess
413 C_AFC_DAC_MIN, // VCXO startup parameter - 15ppm
414 C_AFC_DAC_MAX, // VCXO startup parameter + 15ppm
415 C_AFC_SNR_THR // snr - Default threshold value
416 #endif
417 }
418 };
419
420 #if (L1_FF_MULTIBAND == 0)
421 T_RF_BAND rf_band[GSM_BANDS]; //uninitialised rf struct for bands
422 #else
423 T_RF_BAND rf_band[RF_NB_SUPPORTED_BANDS];
424 #endif
425
426
427 const T_RF_BAND rf_900 =
428 {
429 { //RX structure
430 //T_RX_CAL_PARAMS rx_cal_params
431 {
432 229, //g_magic
433 54, //lna_gain_max * 2
434 40, //lna_th_high
435 44 //lna_th_low
436 },
437 { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE];
438 // Remark: ARFCN=0 (GSM-E) is maintained by 1st GSM subbband.
439 // upper_bound, agc_calib
440 { 10, 0}, // sub-band1 up to arfcn = 10, Agc calibration = 0db
441 { 30, 0}, // sub-band2 up to arfcn = 30, Agc calibration = 0db
442 { 51, 0}, // sub-band3 up to arfcn = 51, Agc calibration = 0db
443 { 71, 0}, // etc.
444 { 90, 0}, //
445 { 112, 0}, //
446 { 124, 0}, //
447 { 991, 0}, //
448 { 992, 0}, //
449 {1023, 0}, //
450 },
451 { //RX temperature compensation
452 { -15 , 0 },
453 { -5 , 0 },
454 { 6 , 0 },
455 { 16 , 0 },
456 { 25 , 0 },
457 { 35 , 0 },
458 { 45 , 0 },
459 { 56 , 0 },
460 { 66 , 0 },
461 { 75 , 0 },
462 { 100 , 0 }
463 }
464 },
465 { //TX structure
466 {// gsm900 T_LEVEL_TX
467 {457, 0, 0}, // 0
468 {457, 0, 0}, // 1
469 {457, 0, 0}, // 2
470 {457, 0, 0}, // 3
471 {457, 0, 0}, // 4
472 {457, 0, 0}, // 5 Highest power
473 {400, 1, 0}, // 6
474 {325, 2, 0}, // 7
475 {270, 3, 0}, // 8
476 {220, 4, 0}, // 9
477 {180, 5, 0}, // 10
478 {155, 6, 0}, // 11
479 {130, 7, 0}, // 12
480 {110, 8, 0}, // 13
481 { 95, 9, 0}, // 14
482 { 80, 10, 0}, // 15
483 { 70, 11, 0}, // 16
484 { 62, 12, 0}, // 17
485 { 55, 13, 0}, // 18
486 { 50, 14, 0}, // 19 Lowest power
487 { 50, 14, 0}, // 20
488 { 50, 14, 0}, // 21
489 { 50, 14, 0}, // 22
490 { 50, 14, 0}, // 23
491 { 50, 14, 0}, // 24
492 { 50, 14, 0}, // 25
493 { 50, 14, 0}, // 26
494 { 50, 14, 0}, // 27
495 { 50, 14, 0}, // 28
496 { 50, 14, 0}, // 29
497 { 50, 14, 0}, // 30
498 { 50, 14, 0}, // 31
499 },
500 #if(REL99 && FF_PRF)// needs proper values from RF
501 {// gsm900 levels_power_reduction
502 {457, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB
503 {457, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB
504 {457, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB
505 {457, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB
506 },
507 #endif
508 {// Channel Calibration Tables
509 {// arfcn, tx_chan_cal
510 { 20, 128 }, // Calibration Table 0
511 { 100, 128 },
512 { 124, 128 },
513 { 586, 128 },
514 { 661, 128 },
515 { 736, 128 },
516 { 885, 128 },
517 { 1023, 128 }
518 },
519 {// arfcn, tx_chan_cal
520 { 40, 128 }, // Calibration Table 1
521 { 80, 128 },
522 { 124, 128 },
523 { 586, 128 },
524 { 661, 128 },
525 { 736, 128 },
526 { 885, 128 },
527 { 1023, 128 }
528 },
529 {// arfcn, tx_chan_cal
530 { 40, 128 }, // Calibration Table 2
531 { 80, 128 },
532 { 124, 128 },
533 { 586, 128 },
534 { 661, 128 },
535 { 736, 128 },
536 { 885, 128 },
537 { 1023, 128 }
538 },
539 {// arfcn, tx_chan_cal
540 { 40, 128 }, // Calibration Table 3
541 { 80, 128 },
542 { 124, 128 },
543 { 586, 128 },
544 { 661, 128 },
545 { 736, 128 },
546 { 885, 128 },
547 { 1023, 128 }
548 }
549 },
550 { // GSM Power Ramp Values
551 {
552 {// Ramp-Up #0 profile - Power Level 5
553 0,0,0,0,0,0,10,14,17,25,
554 37,64,95,127,160,191,218,238,251,255
555 },
556 {// Ramp-Down #0 profile
557 255,251,238,218,191,160,127,95,64,37,
558 17,4,0,0,0,0,0,0,0,0
559 },
560 },
561 {
562 {// Ramp-Up #1 profile - Power Level 6
563 0,0,0,0,0,0,10,14,21,29,
564 37,64,95,127,160,191,218,238,251,255
565 },
566 {// Ramp-Down #1 profile
567 255,251,238,218,191,160,127,95,64,37,
568 17,4,0,0,0,0,0,0,0,0
569 },
570 },
571 {
572 {// Ramp-Up #2 profile - Power Level 7
573 0,0,0,0,0,0,10,14,21,29,
574 37,64,95,127,160,191,218,238,251,255
575 },
576 {// Ramp-Down #2 profile
577 255,251,238,218,191,160,127,95,64,37,
578 17,4,0,0,0,0,0,0,0,0
579 },
580 },
581 {
582 {// Ramp-Up #3 profile - Power Level 8
583 0,0,0,0,0,0,10,14,21,29,
584 37,64,95,127,160,191,218,238,251,255
585 },
586 {// Ramp-Down #3 profile
587 255,251,238,218,191,160,127,95,64,37,
588 17,4,0,0,0,0,0,0,0,0
589 },
590 },
591 {
592 {// Ramp-Up #4 profile - Power Level 9
593 0,0,0,0,0,0,10,14,17,25,
594 37,64,95,127,160,191,218,238,251,255
595 },
596 {// Ramp-Down #4 profile
597 255,251,238,218,191,160,127,95,64,37,
598 17,4,0,0,0,0,0,0,0,0
599 },
600 },
601 {
602 {// Ramp-Up #5 profile - Power Level 10
603 0,0,0,0,0,0,10,14,21,29,
604 37,64,95,127,160,191,218,238,251,255
605 },
606 {// Ramp-Down #5 profile
607 255,251,238,218,191,160,127,95,64,37,
608 17,4,0,0,0,0,0,0,0,0
609 },
610 },
611 {
612 {// Ramp-Up #6 profile - Power Level 11
613 0,0,0,0,0,0,10,14,21,29,
614 37,64,95,127,160,191,218,238,251,255
615 },
616 {// Ramp-Down #6 profile
617 255,251,238,218,191,160,127,95,64,37,
618 17,4,0,0,0,0,0,0,0,0
619 },
620 },
621 {
622 {// Ramp-Up #7 profile - Power Level 12
623 0,0,0,0,0,0,10,14,21,29,
624 37,64,95,127,160,191,218,238,251,255
625 },
626 {// Ramp-Down #7 profile
627 255,251,238,218,191,160,127,95,64,37,
628 17,4,0,0,0,0,0,0,0,0
629 },
630 },
631 {
632 {// Ramp-Up #8 profile - Power Level 13
633 0,0,0,0,0,0,10,14,17,25,
634 37,64,95,127,160,191,218,238,251,255
635 },
636 {// Ramp-Down #8 profile
637 255,251,238,218,191,160,127,95,64,37,
638 17,4,0,0,0,0,0,0,0,0
639 },
640 },
641 {
642 {// Ramp-Up #9 profile - Power Level 14
643 0,0,0,0,0,0,10,14,21,29,
644 37,64,95,127,160,191,218,238,251,255
645 },
646 {// Ramp-Down #9 profile
647 255,251,238,218,191,160,127,95,64,37,
648 17,4,0,0,0,0,0,0,0,0
649 },
650 },
651 {
652 {// Ramp-Up #10 profile - Power Level 15
653 0,0,0,0,0,0,10,14,21,29,
654 37,64,95,127,160,191,218,238,251,255
655 },
656 {// Ramp-Down #10 profile
657 255,251,238,218,191,160,127,95,64,37,
658 17,4,0,0,0,0,0,0,0,0
659 },
660 },
661 {
662 {// Ramp-Up #11 profile - Power Level 16
663 0,0,0,0,0,0,10,14,21,29,
664 37,64,95,127,160,191,218,238,251,255
665 },
666 {// Ramp-Down #11 profile
667 255,251,238,218,191,160,127,95,64,37,
668 17,4,0,0,0,0,0,0,0,0
669 },
670 },
671 {
672 {// Ramp-Up #12 profile - Power Level 17
673 0,0,0,0,0,0,10,14,17,25,
674 37,64,95,127,160,191,218,238,251,255
675 },
676 {// Ramp-Down #12 profile
677 255,251,238,218,191,160,127,95,64,37,
678 17,4,0,0,0,0,0,0,0,0
679 },
680 },
681 {
682 {// Ramp-Up #13 profile - Power Level 18
683 0,0,0,0,0,0,10,14,21,29,
684 37,64,95,127,160,191,218,238,251,255
685 },
686 {// Ramp-Down #13 profile
687 255,251,238,218,191,160,127,95,64,37,
688 17,4,0,0,0,0,0,0,0,0
689 },
690 },
691 {
692 {// Ramp-Up #14 profile - Power Level 19
693 0,0,0,0,0,0,10,14,21,29,
694 37,64,95,127,160,191,218,238,251,255
695 },
696 {// Ramp-Down #14 profile
697 255,251,238,218,191,160,127,95,64,37,
698 17,4,0,0,0,0,0,0,0,0
699 },
700 },
701 {
702 {// Ramp-Up #15 profile - Power Level 19
703 0,0,0,0,0,0,10,14,21,29,
704 37,64,95,127,160,191,218,238,251,255
705 },
706 {// Ramp-Down #15 profile
707 255,251,238,218,191,160,127,95,64,37,
708 17,4,0,0,0,0,0,0,0,0
709 },
710 },
711 },
712 { //TX temperature compensation
713 #if (ORDER2_TX_TEMP_CAL==1)
714 { -11, 0, 0, 0 },
715 { +9, 0, 0, 0 },
716 { +39, 0, 0, 0 },
717 { +59, 0, 0, 0 },
718 { 127, 0, 0, 0 }
719 #else
720 { -11, 0 },
721 { +9, 0 },
722 { +39, 0 },
723 { +59, 0 },
724 { 127, 0 }
725 #endif
726 },
727 },
728 //IQ swap
729 SWAP_IQ_GSM,
730 };
731
732 const T_RF_BAND rf_1800 =
733 {
734 { //RX structure
735 { //T_RX_CAL_PARAMS rx_cal_params
736 229, //g_magic
737 54, //lna gain * 2
738 40, //lna_th_high
739 44 //lna_th_low
740 },
741 { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE];
742 /*--------------*/
743 /*-- DCS band --*/
744 /*--------------*/
745 { 548, 0}, //
746 { 622, 0}, //
747 { 680, 0}, //
748 { 745, 0}, //
749 { 812, 0}, //
750 { 860, 0}, //
751 { 885, 0}, //
752 { 991, 0}, //
753 { 992, 0}, //
754 {1023, 0}, //
755 },
756 { //RX temperature compensation
757 { -15 , 0 },
758 { -5 , 0 },
759 { 6 , 0 },
760 { 16 , 0 },
761 { 25 , 0 },
762 { 35 , 0 },
763 { 45 , 0 },
764 { 56 , 0 },
765 { 66 , 0 },
766 { 75 , 0 },
767 { 100 , 0 }
768 }
769 },
770 { //TX structure
771 {// dcs1800 T_LEVEL_TX
772 {424, 0, 0}, // 0 Highest power
773 {375, 1, 0}, // 1
774 {310, 2, 0}, // 2
775 {255, 3, 0}, // 3
776 {210, 4, 0}, // 4
777 {180, 5, 0}, // 5
778 {152, 6, 0}, // 6
779 {130, 7, 0}, // 7
780 {112, 8, 0}, // 8
781 {98, 9, 0}, // 9
782 {85, 10, 0}, // 10
783 {75, 11, 0}, // 11
784 {66, 12, 0}, // 12
785 {58, 13, 0}, // 13
786 {52, 14, 0}, // 14
787 {47, 15, 0}, // 15 Lowest power
788 {47, 15, 0}, // 16
789 {47, 15, 0}, // 17
790 {47, 15, 0}, // 18
791 {47, 15, 0}, // 19
792 {47, 15, 0}, // 20
793 {47, 15, 0}, // 21
794 {47, 15, 0}, // 22
795 {47, 15, 0}, // 23
796 {47, 15, 0}, // 24
797 {47, 15, 0}, // 25
798 {47, 15, 0}, // 26
799 {47, 15, 0}, // 27
800 {47, 15, 0}, // 28
801 {424, 0, 0}, // 29 Highest power
802 {424, 0, 0}, // 30 Highest power
803 {424, 0, 0}, // 31 Highest power
804 },
805 #if(REL99 && FF_PRF)// needs proper values from RF
806 {// 1800 levels_power_reduction
807 {424, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB
808 {424, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB
809 {424, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB
810 {424, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB
811 },
812 #endif
813 {// Channel Calibration Tables
814 {// arfcn, tx_chan_cal
815 { 554, 128 }, // Calibration Table 0
816 { 722, 128 },
817 { 746, 128 },
818 { 774, 128 },
819 { 808, 128 },
820 { 851, 128 },
821 { 870, 128 },
822 { 885, 128 }
823 },
824 {
825 { 554, 128 }, // Calibration Table 1
826 { 722, 128 },
827 { 746, 128 },
828 { 774, 128 },
829 { 808, 128 },
830 { 851, 128 },
831 { 870, 128 },
832 { 885, 128 }
833 },
834 {// arfcn, tx_chan_cal
835 { 554, 128 }, // Calibration Table 2
836 { 722, 128 },
837 { 746, 128 },
838 { 774, 128 },
839 { 808, 128 },
840 { 851, 128 },
841 { 870, 128 },
842 { 885, 128 }
843 },
844 {// arfcn, tx_chan_cal
845 { 554, 128 }, // Calibration Table 3
846 { 722, 128 },
847 { 746, 128 },
848 { 774, 128 },
849 { 808, 128 },
850 { 851, 128 },
851 { 870, 128 },
852 { 885, 128 }
853 }
854 },
855 { // DCS Power Ramp Values
856 {
857 {// Ramp-Up #0 profile - Power Level 0
858 0,0,0,0,0,0,10,14,17,25,
859 37,64,95,127,160,191,218,238,251,255
860 },
861 {// Ramp-Down #0 profile
862 255,251,238,218,191,160,127,95,64,37,
863 17,4,0,0,0,0,0,0,0,0
864 },
865 },
866 {
867 {// Ramp-Up #1 profile - Power Level 1
868 0,0,0,0,0,0,10,14,21,29,
869 37,64,95,127,160,191,218,238,251,255
870 },
871 {// Ramp-Down #1 profile
872 255,251,238,218,191,160,127,95,64,37,
873 17,4,0,0,0,0,0,0,0,0
874 },
875 },
876 {
877 {// Ramp-Up #2 profile - Power Level 2
878 0,0,0,0,0,0,10,14,21,29,
879 37,64,95,127,160,191,218,238,251,255
880 },
881 {// Ramp-Down #2 profile
882 255,251,238,218,191,160,127,95,64,37,
883 17,4,0,0,0,0,0,0,0,0
884 },
885 },
886 {
887 {// Ramp-Up #3 profile - Power Level 3
888 0,0,0,0,0,0,10,14,21,29,
889 37,64,95,127,160,191,218,238,251,255
890 },
891 {// Ramp-Down #3 profile
892 255,251,238,218,191,160,127,95,64,37,
893 17,4,0,0,0,0,0,0,0,0
894 },
895 },
896 {
897 {// Ramp-Up #4 profile - Power Level 4
898 0,0,0,0,0,0,10,14,17,25,
899 37,64,95,127,160,191,218,238,251,255
900 },
901 {// Ramp-Down #4 profile
902 255,251,238,218,191,160,127,95,64,37,
903 17,4,0,0,0,0,0,0,0,0
904 },
905 },
906 {
907 {// Ramp-Up #5 profile - Power Level 5
908 0,0,0,0,0,0,10,14,21,29,
909 37,64,95,127,160,191,218,238,251,255
910 },
911 {// Ramp-Down #5 profile
912 255,251,238,218,191,160,127,95,64,37,
913 17,4,0,0,0,0,0,0,0,0
914 },
915 },
916 {
917 {// Ramp-Up #6 profile - Power Level 6
918 0,0,0,0,0,0,10,14,21,29,
919 37,64,95,127,160,191,218,238,251,255
920 },
921 {// Ramp-Down #6 profile
922 255,251,238,218,191,160,127,95,64,37,
923 17,4,0,0,0,0,0,0,0,0
924 },
925 },
926 {
927 {// Ramp-Up #7 profile - Power Level 7
928 0,0,0,0,0,0,10,14,21,29,
929 37,64,95,127,160,191,218,238,251,255
930 },
931 {// Ramp-Down #7 profile
932 255,251,238,218,191,160,127,95,64,37,
933 17,4,0,0,0,0,0,0,0,0
934 },
935 },
936 {
937 {// Ramp-Up #8 profile - Power Level 8
938 0,0,0,0,0,0,10,14,17,25,
939 37,64,95,127,160,191,218,238,251,255
940 },
941 {// Ramp-Down #8 profile
942 255,251,238,218,191,160,127,95,64,37,
943 17,4,0,0,0,0,0,0,0,0
944 },
945 },
946 {
947 {// Ramp-Up #9 profile - Power Level 9
948 0,0,0,0,0,0,10,14,21,29,
949 37,64,95,127,160,191,218,238,251,255
950 },
951 {// Ramp-Down #9 profile
952 255,251,238,218,191,160,127,95,64,37,
953 17,4,0,0,0,0,0,0,0,0
954 },
955 },
956 {
957 {// Ramp-Up #10 profile - Power Level 10
958 0,0,0,0,0,0,10,14,21,29,
959 37,64,95,127,160,191,218,238,251,255
960 },
961 {// Ramp-Down #10 profile
962 255,251,238,218,191,160,127,95,64,37,
963 17,4,0,0,0,0,0,0,0,0
964 },
965 },
966 {
967 {// Ramp-Up #11 profile - Power Level 11
968 0,0,0,0,0,0,10,14,21,29,
969 37,64,95,127,160,191,218,238,251,255
970 },
971 {// Ramp-Down #11 profile
972 255,251,238,218,191,160,127,95,64,37,
973 17,4,0,0,0,0,0,0,0,0
974 },
975 },
976 {
977 {// Ramp-Up #12 profile - Power Level 12
978 0,0,0,0,0,0,10,14,17,25,
979 37,64,95,127,160,191,218,238,251,255
980 },
981 {// Ramp-Down #12 profile
982 255,251,238,218,191,160,127,95,64,37,
983 17,4,0,0,0,0,0,0,0,0
984 },
985 },
986 {
987 {// Ramp-Up #13 profile - Power Level 13
988 0,0,0,0,0,0,10,14,21,29,
989 37,64,95,127,160,191,218,238,251,255
990 },
991 {// Ramp-Down #13 profile
992 255,251,238,218,191,160,127,95,64,37,
993 17,4,0,0,0,0,0,0,0,0
994 },
995 },
996 {
997 {// Ramp-Up #14 profile - Power Level 14
998 0,0,0,0,0,0,10,14,21,29,
999 37,64,95,127,160,191,218,238,251,255
1000
1001 },
1002 {// Ramp-Down #14 profile
1003 255,251,238,218,191,160,127,95,64,37,
1004 17,4,0,0,0,0,0,0,0,0
1005 },
1006 },
1007 {
1008 {// Ramp-Up #15 profile - Power Level 15
1009 0,0,0,0,0,0,10,14,21,29,
1010 37,64,95,127,160,191,218,238,251,255
1011 },
1012 {// Ramp-Down #15 profile
1013 255,251,238,218,191,160,127,95,64,37,
1014 17,4,0,0,0,0,0,0,0,0
1015 },
1016 },
1017 },
1018 { //TX temperature compensation
1019 #if (ORDER2_TX_TEMP_CAL==1)
1020 { -11, 0, 0, 0 },
1021 { +9, 0, 0, 0 },
1022 { +39, 0, 0, 0 },
1023 { +59, 0, 0, 0 },
1024 { 127, 0, 0, 0 }
1025 #else
1026 { -11, 0 },
1027 { +9, 0 },
1028 { +39, 0 },
1029 { +59, 0 },
1030 { 127, 0 }
1031 #endif
1032 },
1033 },
1034 //IQ swap
1035 SWAP_IQ_DCS
1036 };
1037
1038 //copy from gsm900
1039 const T_RF_BAND rf_850 =
1040 {
1041 { //RX structure
1042 //T_RX_CAL_PARAMS rx_cal_params
1043 {
1044
1045 229, //g_magic
1046 54, //lna_gain_max * 2
1047 40, //lna_th_high
1048 44 //lna_th_low
1049 },
1050 { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE];
1051 // Remark: ARFCN=0 (GSM-E) is maintained by 1st GSM subbband.
1052 // upper_bound, agc_calib
1053 { 10, 0}, // sub-band1 up to arfcn = 10, Agc calibration = 0db
1054 { 30, 0}, // sub-band2 up to arfcn = 30, Agc calibration = 0db
1055 { 51, 0}, // sub-band3 up to arfcn = 51, Agc calibration = 0db
1056 { 71, 0}, // etc.
1057 { 90, 0}, //
1058 { 112, 0}, //
1059 { 124, 0}, //
1060 { 991, 0}, //
1061 { 992, 0}, //
1062 {1023, 0}, //
1063 },
1064 { //RX temperature compensation
1065 { -15 , 0 },
1066 { -5 , 0 },
1067 { 6 , 0 },
1068 { 16 , 0 },
1069 { 25 , 0 },
1070 { 35 , 0 },
1071 { 45 , 0 },
1072 { 56 , 0 },
1073 { 66 , 0 },
1074 { 75 , 0 },
1075 { 100 , 0 }
1076 }
1077 },
1078 { //TX structure
1079 {// gsm850 T_LEVEL_TX
1080 {486, 0, 0}, // 0
1081 {486, 0, 0}, // 1
1082 {486, 0, 0}, // 2
1083 {486, 0, 0}, // 3
1084 {486, 0, 0}, // 4
1085 {486, 0, 0}, // 5 Highest power
1086 {400, 1, 0}, // 6
1087 {330, 2, 0}, // 7
1088 {270, 3, 0}, // 8
1089 {223, 4, 0}, // 9
1090 {186, 5, 0}, // 10
1091 {158, 6, 0}, // 11
1092 {133, 7, 0}, // 12
1093 {114, 8, 0}, // 13
1094 {97, 9, 0}, // 14
1095 {84, 10, 0}, // 15
1096 {73, 11, 0}, // 16
1097 {64, 12, 0}, // 17
1098 {57, 13, 0}, // 18
1099 {52, 14, 0}, // 19 Lowest power
1100 {52, 14, 0}, // 20
1101 {52, 14, 0}, // 21
1102 {52, 14, 0}, // 22
1103 {52, 14, 0}, // 23
1104 {52, 14, 0}, // 24
1105 {52, 14, 0}, // 25
1106 {52, 14, 0}, // 26
1107 {52, 14, 0}, // 27
1108 {52, 14, 0}, // 28
1109 {52, 14, 0}, // 29
1110 {52, 14, 0}, // 30
1111 {52, 14, 0}, // 31
1112 },
1113 #if(REL99 && FF_PRF)// needs proper values from RF
1114 {// gsm850 levels_power_reduction
1115 {486, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB
1116 {486, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB
1117 {486, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB
1118 {486, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB
1119 },
1120 #endif
1121 {// Channel Calibration Tables
1122 {// arfcn, tx_chan_cal
1123 { 40, 128 }, // Calibration Table 0
1124 { 80, 128 },
1125 { 124, 128 },
1126 { 586, 128 },
1127 { 661, 128 },
1128 { 736, 128 },
1129 { 885, 128 },
1130 { 1023, 128 }
1131 },
1132 {// arfcn, tx_chan_cal
1133 { 554, 130 }, // Calibration Table 1
1134 { 722, 128 },
1135 { 746, 129 },
1136 { 774, 131 },
1137 { 808, 132 },
1138 { 851, 134 },
1139 { 870, 138 },
1140 { 885, 140 }
1141 },
1142 {// arfcn, tx_chan_cal
1143 { 40, 128 }, // Calibration Table 2
1144 { 80, 128 },
1145 { 124, 128 },
1146 { 586, 128 },
1147 { 661, 128 },
1148 { 736, 128 },
1149 { 885, 128 },
1150 { 1023, 128 }
1151 },
1152 {// arfcn, tx_chan_cal
1153 { 40, 128 }, // Calibration Table 3
1154 { 80, 128 },
1155 { 124, 128 },
1156 { 586, 128 },
1157 { 661, 128 },
1158 { 736, 128 },
1159 { 885, 128 },
1160 { 1023, 128 }
1161 }
1162 },
1163 { // gsm850 Power Ramp Values
1164 {
1165 {// Ramp-Up #0 profile - Power Level 5
1166 0,0,0,0,0,0,10,14,17,25,
1167 37,64,95,127,160,191,218,238,251,255
1168 },
1169 {// Ramp-Down #0 profile
1170 255,251,238,218,191,160,127,95,64,37,
1171 17,4,0,0,0,0,0,0,0,0
1172 },
1173 },
1174 {
1175 {// Ramp-Up #1 profile - Power Level 6
1176 0,0,0,0,0,0,10,14,21,29,
1177 37,64,95,127,160,191,218,238,251,255
1178 },
1179 {// Ramp-Down #1 profile
1180 255,251,238,218,191,160,127,95,64,37,
1181 17,4,0,0,0,0,0,0,0,0
1182 },
1183 },
1184 {
1185 {// Ramp-Up #2 profile - Power Level 7
1186 0,0,0,0,0,0,10,14,21,29,
1187 37,64,95,127,160,191,218,238,251,255
1188 },
1189 {// Ramp-Down #2 profile
1190 255,251,238,218,191,160,127,95,64,37,
1191 17,4,0,0,0,0,0,0,0,0
1192 },
1193 },
1194 {
1195 {// Ramp-Up #3 profile - Power Level 8
1196 0,0,0,0,0,0,10,14,21,29,
1197 37,64,95,127,160,191,218,238,251,255
1198 },
1199 {// Ramp-Down #3 profile
1200 255,251,238,218,191,160,127,95,64,37,
1201 17,4,0,0,0,0,0,0,0,0
1202 },
1203 },
1204 {
1205 {// Ramp-Up #4 profile - Power Level 9
1206 0,0,0,0,0,0,10,14,17,25,
1207 37,64,95,127,160,191,218,238,251,255
1208 },
1209 {// Ramp-Down #4 profile
1210 255,251,238,218,191,160,127,95,64,37,
1211 17,4,0,0,0,0,0,0,0,0
1212 },
1213 },
1214 {
1215 {// Ramp-Up #5 profile - Power Level 10
1216 0,0,0,0,0,0,10,14,21,29,
1217 37,64,95,127,160,191,218,238,251,255
1218 },
1219 {// Ramp-Down #5 profile
1220 255,251,238,218,191,160,127,95,64,37,
1221 17,4,0,0,0,0,0,0,0,0
1222 },
1223 },
1224 {
1225 {// Ramp-Up #6 profile - Power Level 11
1226 0,0,0,0,0,0,10,14,21,29,
1227 37,64,95,127,160,191,218,238,251,255
1228 },
1229 {// Ramp-Down #6 profile
1230 255,251,238,218,191,160,127,95,64,37,
1231 17,4,0,0,0,0,0,0,0,0
1232 },
1233 },
1234 {
1235 {// Ramp-Up #7 profile - Power Level 12
1236 0,0,0,0,0,0,10,14,21,29,
1237 37,64,95,127,160,191,218,238,251,255
1238 },
1239 {// Ramp-Down #7 profile
1240 255,251,238,218,191,160,127,95,64,37,
1241 17,4,0,0,0,0,0,0,0,0
1242 },
1243 },
1244 {
1245 {// Ramp-Up #8 profile - Power Level 13
1246 0,0,0,0,0,0,10,14,17,25,
1247 37,64,95,127,160,191,218,238,251,255
1248 },
1249 {// Ramp-Down #8 profile
1250 255,251,238,218,191,160,127,95,64,37,
1251 17,4,0,0,0,0,0,0,0,0
1252 },
1253 },
1254 {
1255 {// Ramp-Up #9 profile - Power Level 14
1256 0,0,0,0,0,0,10,14,21,29,
1257 37,64,95,127,160,191,218,238,251,255
1258 },
1259 {// Ramp-Down #9 profile
1260 255,251,238,218,191,160,127,95,64,37,
1261 17,4,0,0,0,0,0,0,0,0
1262 },
1263 },
1264 {
1265 {// Ramp-Up #10 profile - Power Level 15
1266 0,0,0,0,0,0,10,14,21,29,
1267 37,64,95,127,160,191,218,238,251,255
1268 },
1269 {// Ramp-Down #10 profile
1270 255,251,238,218,191,160,127,95,64,37,
1271 17,4,0,0,0,0,0,0,0,0
1272 },
1273 },
1274 {
1275 {// Ramp-Up #11 profile - Power Level 16
1276 0,0,0,0,0,0,10,14,21,29,
1277 37,64,95,127,160,191,218,238,251,255
1278 },
1279 {// Ramp-Down #11 profile
1280 255,251,238,218,191,160,127,95,64,37,
1281 17,4,0,0,0,0,0,0,0,0
1282 },
1283 },
1284 {
1285 {// Ramp-Up #12 profile - Power Level 17
1286 0,0,0,0,0,0,10,14,17,25,
1287 37,64,95,127,160,191,218,238,251,255
1288 },
1289 {// Ramp-Down #12 profile
1290 255,251,238,218,191,160,127,95,64,37,
1291 17,4,0,0,0,0,0,0,0,0
1292 },
1293 },
1294 {
1295 {// Ramp-Up #13 profile - Power Level 18
1296 0,0,0,0,0,0,10,14,21,29,
1297 37,64,95,127,160,191,218,238,251,255
1298 },
1299 {// Ramp-Down #13 profile
1300 255,251,238,218,191,160,127,95,64,37,
1301 17,4,0,0,0,0,0,0,0,0
1302 },
1303 },
1304 {
1305 {// Ramp-Up #14 profile - Power Level 19
1306 0,0,0,0,0,0,10,14,21,29,
1307 37,64,95,127,160,191,218,238,251,255
1308 },
1309 {// Ramp-Down #14 profile
1310 255,251,238,218,191,160,127,95,64,37,
1311 17,4,0,0,0,0,0,0,0,0
1312 },
1313 },
1314 {
1315 {// Ramp-Up #15 profile - Power Level 19
1316 0,0,0,0,0,0,10,14,21,29,
1317 37,64,95,127,160,191,218,238,251,255
1318 },
1319 {// Ramp-Down #15 profile
1320 255,251,238,218,191,160,127,95,64,37,
1321 17,4,0,0,0,0,0,0,0,0
1322 },
1323 },
1324 },
1325 { //TX temperature compensation
1326 #if (ORDER2_TX_TEMP_CAL==1)
1327 { -11, 0, 0, 0 },
1328 { +9, 0, 0, 0 },
1329 { +39, 0, 0, 0 },
1330 { +59, 0, 0, 0 },
1331 { 127, 0, 0, 0 }
1332 #else
1333 { -11, 0 },
1334 { +9, 0 },
1335 { +39, 0 },
1336 { +59, 0 },
1337 { 127, 0 }
1338 #endif
1339 },
1340 },
1341 //IQ swap
1342 SWAP_IQ_GSM850,
1343 };
1344
1345 //copy from dcs1800
1346 const T_RF_BAND rf_1900 =
1347 {
1348 { //RX structure
1349 { //T_RX_CAL_PARAMS rx_cal_params
1350 229, //g_magic
1351 54, //lna gain * 2
1352 40, //lna_th_high
1353 44 //lna_th_low
1354 },
1355 { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE];
1356 /*--------------*/
1357 /*-- PCS band --*/
1358 /*--------------*/
1359 { 548, 0}, //
1360 { 622, 0}, //
1361 { 680, 0}, //
1362 { 745, 0}, //
1363 { 812, 0}, //
1364 { 860, 0}, //
1365 { 885, 0}, //
1366 { 991, 0}, //
1367 { 992, 0}, //
1368 {1023, 0}, //
1369 },
1370 { //RX temperature compensation
1371 { -15 , 0 },
1372 { -5 , 0 },
1373 { 6 , 0 },
1374 { 16 , 0 },
1375 { 25 , 0 },
1376 { 35 , 0 },
1377 { 45 , 0 },
1378 { 56 , 0 },
1379 { 66 , 0 },
1380 { 75 , 0 },
1381 { 100 , 0 }
1382 }
1383 },
1384 { //TX structure
1385 {// pcs1900 T_LEVEL_TX
1386 {438, 0, 0}, // 0 Highest power
1387 {380, 1, 0}, // 1
1388 {310, 2, 0}, // 2
1389 {255, 3, 0}, // 3
1390 {213, 4, 0}, // 4
1391 {180, 5, 0}, // 5
1392 {152, 6, 0}, // 6
1393 {130, 7, 0}, // 7
1394 {112, 8, 0}, // 8
1395 {98, 9, 0}, // 9
1396 {87, 10, 0}, // 10
1397 {77, 11, 0}, // 11
1398 {68, 12, 0}, // 12
1399 {60, 13, 0}, // 13
1400 {53, 14, 0}, // 14
1401 {48, 15, 0}, // 15 Lowest power
1402 {48, 15, 0}, // 16
1403 {48, 15, 0}, // 17
1404 {48, 15, 0}, // 18
1405 {48, 15, 0}, // 19
1406 {48, 15, 0}, // 20
1407 {48, 15, 0}, // 21
1408 {48, 15, 0}, // 22
1409 {48, 15, 0}, // 23
1410 {48, 15, 0}, // 24
1411 {48, 15, 0}, // 25
1412 {48, 15, 0}, // 26
1413 {48, 15, 0}, // 27
1414 {48, 15, 0}, // 28
1415 {438, 0, 0}, // 29 Highest power
1416 {438, 0, 0}, // 30 Highest power
1417 {438, 0, 0}, // 31 Highest power
1418 },
1419 #if(REL99 && FF_PRF)// needs proper values from RF
1420 {// PCS1900 band levels_power_reduction
1421 {438, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB
1422 {438, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB
1423 {438, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB
1424 {438, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB
1425 },
1426 #endif
1427 {// Channel Calibration Tables
1428 {// arfcn, tx_chan_cal
1429 { 554, 128 }, // Calibration Table 0
1430 { 722, 128 },
1431 { 746, 128 },
1432 { 774, 128 },
1433 { 808, 128 },
1434 { 810, 128 },
1435 { 810, 128 },
1436 { 810, 128 }
1437 },
1438 {
1439 { 554, 128 }, // Calibration Table 1
1440 { 722, 128 },
1441 { 746, 128 },
1442 { 774, 128 },
1443 { 808, 128 },
1444 { 810, 128 },
1445 { 810, 128 },
1446 { 810, 128 }
1447 },
1448 {// arfcn, tx_chan_cal
1449 { 554, 128 }, // Calibration Table 2
1450 { 722, 128 },
1451 { 746, 128 },
1452 { 774, 128 },
1453 { 808, 128 },
1454 { 810, 128 },
1455 { 810, 128 },
1456 { 810, 128 }
1457 },
1458 {// arfcn, tx_chan_cal
1459 { 554, 128 }, // Calibration Table 3
1460 { 722, 128 },
1461 { 746, 128 },
1462 { 774, 128 },
1463 { 808, 128 },
1464 { 810, 128 },
1465 { 810, 128 },
1466 { 810, 128 }
1467 }
1468 },
1469 { // PCS Power Ramp Values
1470 {
1471 {// Ramp-Up #0 profile - Power Level 0
1472 0,0,0,0,0,0,10,14,21,29,
1473 37,64,95,127,160,191,218,238,251,255
1474 },
1475 {// Ramp-Down #0 profile
1476 255,240,228,220,185,160,127,95,64,37,
1477 17,14,0,0,0,0,0,0,0,0
1478 },
1479 },
1480 {
1481 {// Ramp-Up #1 profile - Power Level 1
1482 0,0,0,0,0,0,10,14,21,29,
1483 37,64,95,127,160,191,218,238,251,255
1484 },
1485 {// Ramp-Down #1 profile
1486 255,240,228,220,185,160,127,95,64,37,
1487 17,14,0,0,0,0,0,0,0,0
1488 },
1489 },
1490 {
1491 {// Ramp-Up #2 profile - Power Level 2
1492 0,0,0,0,0,0,10,14,21,29,
1493 37,64,95,127,160,191,218,238,251,255
1494 },
1495 {// Ramp-Down #2 profile
1496 255,240,228,220,185,160,127,95,64,37,
1497 17,14,0,0,0,0,0,0,0,0
1498 },
1499 },
1500 {
1501 {// Ramp-Up #3 profile - Power Level 3
1502 0,0,0,0,0,0,10,14,21,29,
1503 37,64,95,127,160,191,218,238,251,255
1504 },
1505 {// Ramp-Down #3 profile
1506 255,240,228,220,185,160,127,95,64,37,
1507 17,14,0,0,0,0,0,0,0,0
1508 },
1509 },
1510 {
1511 {// Ramp-Up #4 profile - Power Level 4
1512 0,0,0,0,0,0,10,14,21,29,
1513 37,64,95,127,160,191,218,238,251,255
1514 },
1515 {// Ramp-Down #4 profile
1516 255,240,228,220,185,160,127,95,64,37,
1517 17,14,0,0,0,0,0,0,0,0
1518 },
1519 },
1520 {
1521 {// Ramp-Up #5 profile - Power Level 5
1522 0,0,0,0,0,0,10,14,21,29,
1523 37,64,95,127,160,191,218,238,251,255
1524 },
1525 {// Ramp-Down #5 profile
1526 255,240,228,220,185,160,127,95,64,37,
1527 17,14,0,0,0,0,0,0,0,0
1528 },
1529 },
1530 {
1531 {// Ramp-Up #6 profile - Power Level 6
1532 0,0,0,0,0,0,10,14,21,29,
1533 37,64,95,127,160,191,218,238,251,255
1534 },
1535 {// Ramp-Down #6 profile
1536 255,240,228,220,185,160,127,95,64,37,
1537 17,14,0,0,0,0,0,0,0,0
1538 },
1539 },
1540 {
1541 {// Ramp-Up #7 profile - Power Level 7
1542 0,0,0,0,0,0,10,14,21,29,
1543 37,64,95,127,160,191,218,238,251,255
1544 },
1545 {// Ramp-Down #7 profile
1546 255,240,228,220,185,160,127,95,64,37,
1547 17,14,0,0,0,0,0,0,0,0
1548 },
1549 },
1550 {
1551 {// Ramp-Up #8 profile - Power Level 8
1552 0,0,0,0,0,0,10,14,21,29,
1553 37,64,95,127,160,191,218,238,251,255
1554 },
1555 {// Ramp-Down #8 profile
1556 255,240,228,220,185,160,127,95,64,37,
1557 17,14,0,0,0,0,0,0,0,0
1558 },
1559 },
1560 {
1561 {// Ramp-Up #9 profile - Power Level 9
1562 0,0,0,0,0,0,10,14,21,29,
1563 37,64,95,127,160,191,218,238,251,255
1564 },
1565 {// Ramp-Down #9 profile
1566 255,240,228,220,185,160,127,95,64,37,
1567 17,14,0,0,0,0,0,0,0,0
1568 },
1569 },
1570 {
1571 {// Ramp-Up #10 profile - Power Level 10
1572 0,0,0,0,0,0,10,14,21,29,
1573 37,64,95,127,160,191,218,238,251,255
1574 },
1575 {// Ramp-Down #10 profile
1576 255,240,228,220,185,160,127,95,64,37,
1577 17,14,0,0,0,0,0,0,0,0
1578 },
1579 },
1580 {
1581 {// Ramp-Up #11 profile - Power Level 11
1582 0,0,0,0,0,0,10,14,21,29,
1583 37,64,95,127,160,191,218,238,251,255
1584 },
1585 {// Ramp-Down #11 profile
1586 255,240,228,220,185,160,127,95,64,37,
1587 17,14,0,0,0,0,0,0,0,0
1588 },
1589 },
1590 {
1591 {// Ramp-Up #12 profile - Power Level 12
1592 0,0,0,0,0,0,10,14,21,29,
1593 37,64,95,127,160,191,218,238,251,255
1594 },
1595 {// Ramp-Down #12 profile
1596 255,240,228,220,185,160,127,95,64,37,
1597 17,14,0,0,0,0,0,0,0,0
1598 },
1599 },
1600 {
1601 {// Ramp-Up #13 profile - Power Level 13
1602 0,0,0,0,0,0,10,14,21,29,
1603 37,64,95,127,160,191,218,238,251,255
1604 },
1605 {// Ramp-Down #13 profile
1606 255,240,228,220,185,160,127,95,64,37,
1607 17,14,0,0,0,0,0,0,0,0
1608 },
1609 },
1610 {
1611 {// Ramp-Up #14 profile - Power Level 14
1612 0,0,0,0,0,0,10,14,21,29,
1613 37,64,95,127,160,191,218,238,251,255
1614 },
1615 {// Ramp-Down #14 profile
1616 255,240,228,220,185,160,127,95,64,37,
1617 17,14,0,0,0,0,0,0,0,0
1618 },
1619 },
1620 {
1621 {// Ramp-Up #15 profile - Power Level 15
1622 0,0,0,0,0,0,10,14,21,29,
1623 37,64,95,127,160,191,218,238,251,255
1624 },
1625 {// Ramp-Down #15 profile
1626 255,240,228,220,185,160,127,95,64,37,
1627 17,14,0,0,0,0,0,0,0,0
1628 },
1629 },
1630 },
1631 { //TX temperature compensation
1632 #if (ORDER2_TX_TEMP_CAL==1)
1633 { -11, 0, 0, 0 },
1634 { +9, 0, 0, 0 },
1635 { +39, 0, 0, 0 },
1636 { +59, 0, 0, 0 },
1637 { 127, 0, 0, 0 }
1638 #else
1639 { -11, 0 },
1640 { +9, 0 },
1641 { +39, 0 },
1642 { +59, 0 },
1643 { 127, 0 }
1644 #endif
1645 },
1646 },
1647 //IQ swap
1648 SWAP_IQ_PCS
1649 };
1650
1651
1652
1653
1654
1655 UWORD16 drp_wrapper[DRP_WRAPPER_TABLE_SIZE]=
1656 {
1657 C_APCCTRL2,
1658 C_APCDEL1,
1659 C_APCDEL2
1660 };
1661
1662
1663
1664 /*------------------------------------------*/
1665 /* Gain table */
1666 /* specified in the TRF6053 spec */
1667 /* 2 dB steps - LNA always ON */
1668 /*------------------------------------------*/
1669 UWORD16 AGC_TABLE[AGC_TABLE_SIZE] =
1670 {
1671 ABE_0_DB,
1672 ABE_0_DB,
1673 ABE_2_DB,
1674 ABE_2_DB,
1675 ABE_2_DB,
1676 ABE_5_DB,
1677 ABE_5_DB,
1678 ABE_5_DB,
1679 ABE_8_DB,
1680 ABE_8_DB,
1681 ABE_8_DB,
1682 ABE_11_DB,
1683 ABE_11_DB,
1684 ABE_11_DB,
1685 ABE_14_DB,
1686 ABE_14_DB,
1687 ABE_14_DB,
1688 ABE_17_DB,
1689 ABE_17_DB,
1690 ABE_17_DB,
1691 ABE_20_DB,
1692 ABE_20_DB,
1693 ABE_20_DB,
1694 ABE_23_DB
1695 };
1696
1697 // structure for ADC conversion (4 Internal channel + 5 Ext channels max.)
1698 T_ADC adc;
1699
1700 // MADC calibration structure
1701 T_ADCCAL adc_cal=
1702 { // a: 0,..,8
1703 // b, 0,..,8
1704 // cal_a = 4*1750 is the Typical value 1.75 V ref voltage , divide by 4
1705 7000, 8750, 7000, 7000, 7000, 7000, 7000, 256, 7000,
1706 0, 0, 0, 0, 0, 0, 0, 0, 0
1707 };
1708
1709 // table which converts ADC value into RF temperature
1710 const T_TEMP temperature[TEMP_TABLE_SIZE] =
1711 {
1712 7, -35,
1713 7, -34,
1714 8, -33,
1715 8, -32,
1716 9, -31,
1717 9, -30,
1718 10, -29,
1719 11, -28,
1720 11, -27,
1721 12, -26,
1722 13, -25,
1723 14, -24,
1724 14, -23,
1725 15, -22,
1726 16, -21,
1727 17, -20,
1728 18, -19,
1729 19, -18,
1730 21, -17,
1731 22, -16,
1732 23, -15,
1733 24, -14,
1734 26, -13,
1735 27, -12,
1736 29, -11,
1737 30, -10,
1738 32, -9,
1739 34, -8,
1740 36, -7,
1741 37, -6,
1742 39, -5,
1743 41, -4,
1744 44, -3,
1745 46, -2,
1746 48, -1,
1747 51, 0,
1748 53, 1,
1749 56, 2,
1750 59, 3,
1751 61, 4,
1752 64, 5,
1753 68, 6,
1754 71, 7,
1755 74, 8,
1756 78, 9,
1757 81, 10,
1758 85, 11,
1759 89, 12,
1760 93, 13,
1761 97, 14,
1762 101, 15,
1763 105, 16,
1764 110, 17,
1765 115, 18,
1766 119, 19,
1767 124, 20,
1768 130, 21,
1769 135, 22,
1770 140, 23,
1771 146, 24,
1772 152, 25,
1773 158, 26,
1774 164, 27,
1775 170, 28,
1776 176, 29,
1777 183, 30,
1778 190, 31,
1779 197, 32,
1780 204, 33,
1781 211, 34,
1782 219, 35,
1783 226, 36,
1784 234, 37,
1785 242, 38,
1786 250, 39,
1787 259, 40,
1788 267, 41,
1789 276, 42,
1790 285, 43,
1791 294, 44,
1792 303, 45,
1793 312, 46,
1794 322, 47,
1795 331, 48,
1796 341, 49,
1797 351, 50,
1798 361, 51,
1799 371, 52,
1800 382, 53,
1801 392, 54,
1802 403, 55,
1803 413, 56,
1804 424, 57,
1805 435, 58,
1806 446, 59,
1807 458, 60,
1808 469, 61,
1809 480, 62,
1810 492, 63,
1811 503, 64,
1812 515, 65,
1813 527, 66,
1814 539, 67,
1815 550, 68,
1816 562, 69,
1817 574, 70,
1818 586, 71,
1819 598, 72,
1820 611, 73,
1821 623, 74,
1822 635, 75,
1823 647, 76,
1824 659, 77,
1825 671, 78,
1826 683, 79,
1827 696, 80,
1828 708, 81,
1829 720, 82,
1830 732, 83,
1831 744, 84,
1832 756, 85,
1833 768, 86,
1834 780, 87,
1835 792, 88,
1836 804, 89,
1837 816, 90,
1838 827, 91,
1839 839, 92,
1840 851, 93,
1841 862, 94,
1842 873, 95
1843 };
1844
1845
1846 /*------------------------------------------*/
1847 /* ABB Initialization words */
1848 /*------------------------------------------*/
1849 #if (ANLG_FAM == 11)
1850 UWORD8 abb[ABB_TABLE_SIZE] =
1851 {
1852 C_VULGAIN,
1853 C_VDLGAIN,
1854 C_SIDETONE,
1855 C_CTRL1,
1856 C_CTRL2,
1857 C_CTRL3,
1858 C_CTRL4,
1859 C_CTRL5,
1860 C_CTRL6,
1861 C_POPAUTO,
1862 C_OUTEN1,
1863 C_OUTEN2,
1864 C_OUTEN3,
1865 C_AULGA,
1866 C_AURGA
1867 };
1868 #endif
1869
1870 #if (L1_FF_MULTIBAND == 0)
1871 #else
1872 /* The physical RF bands are enumerated in order of increasing frequencies */
1873 /* The same order must be used in l1_rf61, l1_cust, and l1_const */
1874 const T_MULTIBAND_RF multiband_rf[RF_NB_SUPPORTED_BANDS + 1] =
1875 {
1876 /*power_class, tx_turning_point, max_txpwr, gsm_band_identifier, name*/
1877 #if (GSM900_SUPPORTED == 1)
1878 { 4, 0, 19, RF_GSM900, "900"},
1879 #endif /* if(GSM900_SUPPORTED == 1)*/
1880 #if (GSM850_SUPPORTED == 1)
1881 { 4, 0, 19, RF_GSM850, "850"},
1882 #endif /*if (GSM850_SUPPORTED == 1)*/
1883 #if (DCS1800_SUPPORTED == 1)
1884 { 1, 28, 15, RF_DCS1800, "1800"},
1885 #endif /*if (DCS1800_SUPPORTED == 1)*/
1886 #if (PCS1900_SUPPORTED == 1)
1887 {1, 21, 15, RF_PCS1900, "1900"},
1888 #endif /*if (PCS1900_SUPPORTED == 1)*/
1889 } ;
1890
1891 /* Array for mapping from subband index into physical band index */
1892 const WORD8 rf_subband2band[RF_NB_SUBBANDS] =
1893 {
1894 #if (GSM900_SUPPORTED == 1)
1895 RF_GSM900,
1896 RF_GSM900,
1897 #endif
1898 #if (GSM850_SUPPORTED == 1)
1899 RF_GSM850,
1900 #endif
1901 #if (DCS1800_SUPPORTED == 1)
1902 RF_DCS1800,
1903 #endif
1904 #if (PCS1900_SUPPORTED == 1)
1905 RF_PCS1900,
1906 #endif
1907 };
1908
1909 const T_MULTIBAND_CONVERT multiband_convert[RF_NB_SUBBANDS] =
1910 { /*first_rf_freq, last_rf_freq, first_l1_freq, l1freq2rffreq */
1911 #if (GSM900_SUPPORTED == 1)
1912 { RF_FREQ_1ST_900L, RF_FREQ_1ST_900L+NB_CHAN_900L, L1_FREQ_1ST_900L, RF_FREQ_1ST_900L-L1_FREQ_1ST_900L},
1913 { RF_FREQ_1ST_900H, RF_FREQ_1ST_900H+NB_CHAN_900H, L1_FREQ_1ST_900H, RF_FREQ_1ST_900H-L1_FREQ_1ST_900H},
1914 #endif
1915 #if (GSM850_SUPPORTED == 1)
1916 { RF_FREQ_1ST_850, RF_FREQ_1ST_850+NB_CHAN_850, L1_FREQ_1ST_850, RF_FREQ_1ST_850-L1_FREQ_1ST_850},
1917 #endif
1918 #if (DCS1800_SUPPORTED == 1)
1919 { RF_FREQ_1ST_1800, RF_FREQ_1ST_1800+NB_CHAN_1800, L1_FREQ_1ST_1800, RF_FREQ_1ST_1800-L1_FREQ_1ST_1800},
1920 #endif
1921 #if (PCS1900_SUPPORTED == 1)
1922 { RF_FREQ_1ST_1900, RF_FREQ_1ST_1900+NB_CHAN_1900, L1_FREQ_1ST_1900, RF_FREQ_1ST_1900-L1_FREQ_1ST_1900},
1923 #endif
1924 };
1925
1926 /*-------------------------------------------------------*/
1927 /* rf_convert_l1freq_to_l1subband */
1928 /*-------------------------------------------------------*/
1929 /* Parameters : l1freq, the l1 radio_freq to convert */
1930 /* */
1931 /* Return : The l1 subband index l1freq belongs to */
1932 /* */
1933 /* Functionality : compare l1freq with the band ranges, */
1934 /* return the l1 band index where match is found */
1935 /*-------------------------------------------------------*/
1936 UWORD8 rf_convert_l1freq_to_l1subband(UWORD16 l1_freq)
1937 {
1938 WORD32 subband_idx;
1939 for(subband_idx = RF_NB_SUBBANDS -1; subband_idx>=0; subband_idx--)
1940 {
1941 if(l1_freq >= multiband_convert[subband_idx].first_l1_freq)
1942 return ((UWORD8)subband_idx);
1943 }
1944 l1_multiband_error_handler(l1_freq);
1945 return 0;
1946 }
1947
1948 /*-------------------------------------------------------*/
1949 /* rf_convert_rffreq_to_l1subband */
1950 /*-------------------------------------------------------*/
1951 /* Parameters : rffreq, the physical rf freq channel */
1952 /* number to convert */
1953 /* */
1954 /* Return : The l1 subband index rf_freq belongs to */
1955 /* */
1956 /* Functionality : compare rf_freq with the band ranges, */
1957 /* return the l1 band index where match is found */
1958 /*-------------------------------------------------------*/
1959 UWORD8 rf_convert_rffreq_to_l1subband(UWORD16 rf_freq)
1960 {
1961 WORD32 subband_idx;
1962 for(subband_idx = RF_NB_SUBBANDS -1; subband_idx>=0; subband_idx--)
1963 {
1964 if((rf_freq >= multiband_convert[subband_idx].first_rf_freq)&&
1965 (rf_freq < multiband_convert[subband_idx].last_rf_freq))
1966 return ((UWORD8)subband_idx);
1967 }
1968 l1_multiband_error_handler(rf_freq);
1969 return 0;
1970 }
1971
1972 /*-------------------------------------------------------*/
1973 /* rf_convert_l1freq_to_band_idx */
1974 /*-------------------------------------------------------*/
1975 /* Parameters : l1freq, the l1 radio_freq to convert */
1976 /* */
1977 /* Return : The physical index of the band of l1freq */
1978 /* */
1979 /* Functionality : compare l1freq with the band ranges, */
1980 /* return the rf_band_index of the l1_band_index */
1981 /* where match is found */
1982 /*-------------------------------------------------------*/
1983 WORD8 rf_convert_l1freq_to_rf_band_idx(UWORD16 l1_freq)
1984 {
1985 return rf_subband2band[rf_convert_l1freq_to_l1subband(l1_freq)];
1986 }
1987
1988 /*-------------------------------------------------------*/
1989 /* rf_convert_l1freq_to_rffreq */
1990 /*-------------------------------------------------------*/
1991 /* Parameters : l1freq, the l1 radio_freq to convert */
1992 /* */
1993 /* Return : ARFCN, absolute radio frequency channel */
1994 /* number and in *bandidx the band index */
1995 /* Functionality : identify band index and look up ARFCN */
1996 /*-------------------------------------------------------*/
1997 UWORD16 rf_convert_l1freq_to_rffreq(UWORD16 l1_freq )
1998 {
1999 WORD32 subband_idx = rf_convert_l1freq_to_l1subband(l1_freq);
2000 return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq);
2001 }
2002
2003 /*-------------------------------------------------------*/
2004 /* rf_convert_l1freq_to_arfcn_and_bandidx */
2005 /*-------------------------------------------------------*/
2006 /* Parameters : l1freq, the l1 radio_freq to convert */
2007 /* */
2008 /* Return : ARFCN, absolute radio frequency channel */
2009 /* number and in *bandidx the RF band index */
2010 /* Functionality : identify band index and look up ARFCN */
2011 /*-------------------------------------------------------*/
2012
2013 /*-------------------------------------------------------*/
2014 /* rf_convert_l1freq_to_rffreq_and_bandidx */
2015 /*-------------------------------------------------------*/
2016 /* Parameters : l1freq, the l1 radio_freq to convert */
2017 /* */
2018 /* Return : ARFCN, absolute radio frequency channel */
2019 /* number and in *bandidx the band index */
2020 /* Functionality : identify band index and look up ARFCN */
2021 /*-------------------------------------------------------*/
2022 UWORD16 rf_convert_l1freq_to_rffreq_rfband(UWORD16 l1_freq, WORD8 *rf_band_index)
2023 {
2024 WORD32 subband_idx = rf_convert_l1freq_to_l1subband(l1_freq);
2025 *rf_band_index = rf_subband2band[subband_idx];
2026 return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq);
2027 }
2028
2029 /*-------------------------------------------------------*/
2030 /* rf_convert_l1freq_to_arfcn_and_bandidx */
2031 /*-------------------------------------------------------*/
2032 /* Parameters : l1freq, the l1 radio_freq to convert */
2033 /* */
2034 /* Return : ARFCN, absolute radio frequency channel */
2035 /* number and in *bandidx the RF band index */
2036 /* Functionality : identify band index and look up ARFCN */
2037 /*-------------------------------------------------------*/
2038 UWORD16 rf_convert_l1freq_to_arfcn_rfband(UWORD16 l1_freq, WORD8 *rf_band_index)
2039 {
2040 WORD32 subband_idx = rf_convert_l1freq_to_l1subband(l1_freq);
2041 *rf_band_index = rf_subband2band[subband_idx];
2042 #if (PCS1900_SUPPORTED)
2043 if(RF_PCS1900 == rf_subband2band[subband_idx])
2044 return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq-512);
2045 else
2046 #endif
2047 return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq);
2048 }
2049
2050 UWORD16 rf_convert_rffreq_to_l1freq(UWORD16 rf_freq)
2051 {
2052 WORD32 subband_idx = rf_convert_rffreq_to_l1subband(rf_freq);
2053 return(rf_freq - multiband_convert[subband_idx].l1freq2rffreq);
2054 }
2055
2056 /*-------------------------------------------------------*/
2057 /* rf_convert_rffreq_to_l1freq_rfband */
2058 /*-------------------------------------------------------*/
2059 /* Parameters : rffreq, the physical rf channel number */
2060 /* to convert */
2061 /* */
2062 /* Return : l1freq, l1 internal frequency number */
2063 /* and in *bandidx the RF band index */
2064 /* Functionality : identify band index and look up ARFCN */
2065 /*-------------------------------------------------------*/
2066 UWORD16 rf_convert_rffreq_to_l1freq_rfband(UWORD16 rf_freq, WORD8 *rf_band_index)
2067 {
2068 WORD32 subband_idx = rf_convert_rffreq_to_l1subband(rf_freq);
2069 *rf_band_index = (WORD8)subband_idx;
2070 return(rf_freq - multiband_convert[subband_idx].l1freq2rffreq);
2071 }
2072
2073 #if(PCS1900_SUPPORTED)
2074 extern UWORD16 tm_std_band;
2075 #endif
2076 UWORD16 rf_convert_tmarfcn_to_l1freq(UWORD16 tm_arfcn, WORD8 *error_flag)
2077 {
2078 *error_flag = 0;
2079 #if(GSM900_SUPPORTED)
2080 if(NB_CHAN_900L> tm_arfcn)
2081 return (tm_arfcn + L1_FREQ_1ST_900L- RF_FREQ_1ST_900L);
2082 if((ARFCN_1ST_900H <= tm_arfcn)&&(ARFCN_1ST_900H + NB_CHAN_900H > tm_arfcn))
2083 return (tm_arfcn + L1_FREQ_1ST_900H- RF_FREQ_1ST_900H);
2084 #endif
2085 #if(GSM850_SUPPORTED)
2086 if((ARFCN_1ST_850 <= tm_arfcn)||(ARFCN_1ST_850+NB_CHAN_850 > tm_arfcn))
2087 return(tm_arfcn + L1_FREQ_1ST_850- RF_FREQ_1ST_850);
2088 #endif
2089 #if(PCS1900_SUPPORTED)
2090 if((RF_FREQ_1ST_1900<=tm_arfcn)&&((RF_FREQ_1ST_1900+NB_CHAN_1900)>tm_arfcn))
2091 return (tm_arfcn + L1_FREQ_1ST_1900 - RF_FREQ_1ST_1900); /* PCS RF_FREQ format */
2092 if(((3 == (tm_std_band & 0xff))||(8==(tm_std_band & 0xff))) &&
2093 (ARFCN_1ST_1900 <= tm_arfcn) && (ARFCN_1ST_1900+NB_CHAN_1900 > tm_arfcn))
2094 return(tm_arfcn+L1_FREQ_1ST_1900-ARFCN_1ST_1900); /* PCS Legacy compatible*/
2095 if((1000+ARFCN_1ST_1900 <= tm_arfcn)&&
2096 (1000+ARFCN_1ST_1900+NB_CHAN_1900 >= tm_arfcn))
2097 return(tm_arfcn+L1_FREQ_1ST_1900-ARFCN_1ST_1900-1000); /*ARFCN+1000 format*/
2098 #endif
2099 #if(DCS1800_SUPPORTED)
2100 if((ARFCN_1ST_1800 <= tm_arfcn)||(ARFCN_1ST_1800+NB_CHAN_1800 > tm_arfcn))
2101 return(tm_arfcn + L1_FREQ_1ST_1800- RF_FREQ_1ST_1800);
2102 #endif
2103 *error_flag = 1;
2104 return (tm_arfcn);
2105 }
2106 #endif// if(L1_FF_MULTIBAND == 1)
2107
2108