FreeCalypso > hg > freecalypso-sw
view gsm-fw/L1/cust1/l1_rf61.c @ 923:10b4bed10192
gsm-fw/L1: fix for the DSP patch corruption bug
The L1 code we got from the LoCosto fw contains a feature for DSP CPU load
measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier
DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the
code dealing with that feature is conditionalized as #if (DSP >= 38),
but one spot was missed, and the MCU code was writing into an API word
dealing with this feature. In TCS211 this DSP API word happens to be
used by the DSP code patch, hence that write was corrupting the patched
DSP code.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 19 Oct 2015 17:13:56 +0000 |
parents | eafadfee35b2 |
children |
line wrap: on
line source
/************* Revision Controle System Header ************* * GSM Layer 1 software * * Filename l1_rf61.c * Version 1.0 * Date June 12th, 2005 * ************* Revision Controle System Header *************/ T_RF rf = { RF_LOCOSTO, //RF revision RF_HW_BAND_SUPPORT, // radio_band_support E-GSM/DCS + PCS { //RX structure { //AGC structure 140, // low_agc_noise_thr; 110, // high_agc_sat_thr; 0, // low_agc; 23, // high_agc; //IL2AGC tables { // below is: il2agc_pwr[121]; // il2agc_max[121]; // il2agc_av[121]; // il2agc_pwr // Note this is shared between PCN and EGSM. 0, /* EGSM_MAX IL=0 */ 0, /* EGSM_MAX IL=-1 */ 0, /* EGSM_MAX IL=-2 */ 0, /* EGSM_MAX IL=-3 */ 0, /* EGSM_MAX IL=-4 */ 0, /* EGSM_MAX IL=-5 */ 0, /* EGSM_MAX IL=-6 */ 0, /* EGSM_MAX IL=-7 */ 0, /* EGSM_MAX IL=-8 */ 0, /* EGSM_MAX IL=-9 */ 0, /* EGSM_MAX IL=-10 */ 0, /* EGSM_MAX IL=-11 */ 0, /* EGSM_MAX IL=-12 */ 0, /* EGSM_MAX IL=-13 */ 0, /* EGSM_MAX IL=-14 */ 0, /* EGSM_MAX IL=-15 */ 0, /* EGSM_MAX IL=-16 */ 0, /* EGSM_MAX IL=-17 */ 0, /* EGSM_MAX IL=-18 */ 0, /* EGSM_MAX IL=-19 */ 0, /* EGSM_MAX IL=-20 */ 0, /* EGSM_MAX IL=-21 */ 0, /* EGSM_MAX IL=-22 */ 0, /* EGSM_MAX IL=-23 */ 0, /* EGSM_MAX IL=-24 */ 0, /* EGSM_MAX IL=-25 */ 0, /* EGSM_MAX IL=-26 */ 0, /* EGSM_MAX IL=-27 */ 0, /* EGSM_MAX IL=-28 */ 0, /* EGSM_MAX IL=-29 */ 0, /* EGSM_MAX IL=-30 */ 0, /* EGSM_MAX IL=-31 */ 0, /* EGSM_MAX IL=-32 */ 0, /* EGSM_MAX IL=-33 */ 0, /* EGSM_MAX IL=-34 */ 0, /* EGSM_MAX IL=-35 */ 0, /* EGSM_MAX IL=-36 */ 0, /* EGSM_MAX IL=-37 */ 0, /* EGSM_MAX IL=-38 */ 0, /* EGSM_MAX IL=-39 */ 0, /* EGSM_MAX IL=-40 */ 0, /* EGSM_MAX IL=-41 */ 0, /* EGSM_MAX IL=-42 */ 5, /* EGSM_MAX IL=-43 */ 5, /* EGSM_MAX IL=-44 */ 0, /* EGSM_MAX IL=-45 */ 0, /* EGSM_MAX IL=-46 */ 0, /* EGSM_MAX IL=-47 */ 0, /* EGSM_MAX IL=-48 */ 0, /* EGSM_MAX IL=-49 */ 0, /* EGSM_MAX IL=-50 */ 0, /* EGSM_MAX IL=-51 */ 0, /* EGSM_MAX IL=-52 */ 0, /* EGSM_MAX IL=-53 */ 0, /* EGSM_MAX IL=-54 */ 0, /* EGSM_MAX IL=-55 */ 0, /* EGSM_MAX IL=-56 */ 0, /* EGSM_MAX IL=-57 */ 0, /* EGSM_MAX IL=-58 */ 0, /* EGSM_MAX IL=-59 */ 0, /* EGSM_MAX IL=-60 */ 0, /* EGSM_MAX IL=-61 */ 0, /* EGSM_MAX IL=-62 */ 0, /* EGSM_MAX IL=-63 */ 0, /* EGSM_MAX IL=-64 */ 0, /* EGSM_MAX IL=-65 */ 0, /* EGSM_MAX IL=-66 */ 0, /* EGSM_MAX IL=-67 */ 0, /* EGSM_MAX IL=-68 */ 0, /* EGSM_MAX IL=-69 */ 0, /* EGSM_MAX IL=-70 */ 0, /* EGSM_MAX IL=-71 */ 0, /* EGSM_MAX IL=-72 */ 0, /* EGSM_MAX IL=-73 */ 0, /* EGSM_MAX IL=-74 */ 5, /* EGSM_MAX IL=-75 */ 5, /* EGSM_MAX IL=-76 */ 8, /* EGSM_MAX IL=-77 */ 8, /* EGSM_MAX IL=-78 */ 11, /* EGSM_MAX IL=-79 */ 11, /* EGSM_MAX IL=-80 */ 11, /* EGSM_MAX IL=-81 */ 11, /* EGSM_MAX IL=-82 */ 11, /* EGSM_MAX IL=-83 */ 11, /* EGSM_MAX IL=-84 */ 14, /* EGSM_MAX IL=-85 */ 14, /* EGSM_MAX IL=-86 */ 14, /* EGSM_MAX IL=-87 */ 14, /* EGSM_MAX IL=-88 */ 14, /* EGSM_MAX IL=-89 */ 14, /* EGSM_MAX IL=-90 */ 14, /* EGSM_MAX IL=-91 */ 14, /* EGSM_MAX IL=-92 */ 14, /* EGSM_MAX IL=-93 */ 14, /* EGSM_MAX IL=-94 */ 17, /* EGSM_MAX IL=-95 */ 17, /* EGSM_MAX IL=-96 */ 20, /* EGSM_MAX IL=-97 */ 20, /* EGSM_MAX IL=-98 */ 20, /* EGSM_MAX IL=-99 */ 20, /* EGSM_MAX IL=-100 */ 23, /* EGSM_MAX IL=-101 */ 23, /* EGSM_MAX IL=-102 */ 23, /* EGSM_MAX IL=-103 */ 23, /* EGSM_MAX IL=-104 */ 23, /* EGSM_MAX IL=-105 */ 23, /* EGSM_MAX IL=-106 */ 23, /* EGSM_MAX IL=-107 */ 23, /* EGSM_MAX IL=-108 */ 23, /* EGSM_MAX IL=-109 */ 23, /* EGSM_MAX IL=-110 */ 23, /* EGSM_MAX IL=-111 */ 23, /* EGSM_MAX IL=-112 */ 23, /* EGSM_MAX IL=-113 */ 23, /* EGSM_MAX IL=-114 */ 23, /* EGSM_MAX IL=-115 */ 23, /* EGSM_MAX IL=-116 */ 23, /* EGSM_MAX IL=-117 */ 23, /* EGSM_MAX IL=-118 */ 23, /* EGSM_MAX IL=-119 */ 23 /* EGSM_MAX IL=-120 */ }, { // il2agc_max // Note this is shared between PCN and EGSM. 0, /* EGSM_MAX IL=0 */ 0, /* EGSM_MAX IL=-1 */ 0, /* EGSM_MAX IL=-2 */ 0, /* EGSM_MAX IL=-3 */ 0, /* EGSM_MAX IL=-4 */ 0, /* EGSM_MAX IL=-5 */ 0, /* EGSM_MAX IL=-6 */ 0, /* EGSM_MAX IL=-7 */ 0, /* EGSM_MAX IL=-8 */ 0, /* EGSM_MAX IL=-9 */ 0, /* EGSM_MAX IL=-10 */ 0, /* EGSM_MAX IL=-11 */ 0, /* EGSM_MAX IL=-12 */ 0, /* EGSM_MAX IL=-13 */ 0, /* EGSM_MAX IL=-14 */ 0, /* EGSM_MAX IL=-15 */ 0, /* EGSM_MAX IL=-16 */ 0, /* EGSM_MAX IL=-17 */ 0, /* EGSM_MAX IL=-18 */ 0, /* EGSM_MAX IL=-19 */ 0, /* EGSM_MAX IL=-20 */ 0, /* EGSM_MAX IL=-21 */ 0, /* EGSM_MAX IL=-22 */ 0, /* EGSM_MAX IL=-23 */ 0, /* EGSM_MAX IL=-24 */ 0, /* EGSM_MAX IL=-25 */ 0, /* EGSM_MAX IL=-26 */ 0, /* EGSM_MAX IL=-27 */ 0, /* EGSM_MAX IL=-28 */ 0, /* EGSM_MAX IL=-29 */ 0, /* EGSM_MAX IL=-30 */ 0, /* EGSM_MAX IL=-31 */ 0, /* EGSM_MAX IL=-32 */ 0, /* EGSM_MAX IL=-33 */ 0, /* EGSM_MAX IL=-34 */ 0, /* EGSM_MAX IL=-35 */ 0, /* EGSM_MAX IL=-36 */ 0, /* EGSM_MAX IL=-37 */ 0, /* EGSM_MAX IL=-38 */ 0, /* EGSM_MAX IL=-39 */ 0, /* EGSM_MAX IL=-40 */ 0, /* EGSM_MAX IL=-41 */ 0, /* EGSM_MAX IL=-42 */ 5, /* EGSM_MAX IL=-43 */ 5, /* EGSM_MAX IL=-44 */ 0, /* EGSM_MAX IL=-45 */ 0, /* EGSM_MAX IL=-46 */ 0, /* EGSM_MAX IL=-47 */ 0, /* EGSM_MAX IL=-48 */ 0, /* EGSM_MAX IL=-49 */ 0, /* EGSM_MAX IL=-50 */ 0, /* EGSM_MAX IL=-51 */ 0, /* EGSM_MAX IL=-52 */ 0, /* EGSM_MAX IL=-53 */ 0, /* EGSM_MAX IL=-54 */ 0, /* EGSM_MAX IL=-55 */ 0, /* EGSM_MAX IL=-56 */ 0, /* EGSM_MAX IL=-57 */ 0, /* EGSM_MAX IL=-58 */ 0, /* EGSM_MAX IL=-59 */ 0, /* EGSM_MAX IL=-60 */ 0, /* EGSM_MAX IL=-61 */ 0, /* EGSM_MAX IL=-62 */ 0, /* EGSM_MAX IL=-63 */ 0, /* EGSM_MAX IL=-64 */ 0, /* EGSM_MAX IL=-65 */ 0, /* EGSM_MAX IL=-66 */ 0, /* EGSM_MAX IL=-67 */ 0, /* EGSM_MAX IL=-68 */ 0, /* EGSM_MAX IL=-69 */ 0, /* EGSM_MAX IL=-70 */ 0, /* EGSM_MAX IL=-71 */ 0, /* EGSM_MAX IL=-72 */ 0, /* EGSM_MAX IL=-73 */ 0, /* EGSM_MAX IL=-74 */ 5, /* EGSM_MAX IL=-75 */ 5, /* EGSM_MAX IL=-76 */ 8, /* EGSM_MAX IL=-77 */ 8, /* EGSM_MAX IL=-78 */ 11, /* EGSM_MAX IL=-79 */ 11, /* EGSM_MAX IL=-80 */ 11, /* EGSM_MAX IL=-81 */ 11, /* EGSM_MAX IL=-82 */ 11, /* EGSM_MAX IL=-83 */ 11, /* EGSM_MAX IL=-84 */ 14, /* EGSM_MAX IL=-85 */ 14, /* EGSM_MAX IL=-86 */ 14, /* EGSM_MAX IL=-87 */ 14, /* EGSM_MAX IL=-88 */ 14, /* EGSM_MAX IL=-89 */ 14, /* EGSM_MAX IL=-90 */ 14, /* EGSM_MAX IL=-91 */ 14, /* EGSM_MAX IL=-92 */ 14, /* EGSM_MAX IL=-93 */ 14, /* EGSM_MAX IL=-94 */ 17, /* EGSM_MAX IL=-95 */ 17, /* EGSM_MAX IL=-96 */ 20, /* EGSM_MAX IL=-97 */ 20, /* EGSM_MAX IL=-98 */ 20, /* EGSM_MAX IL=-99 */ 20, /* EGSM_MAX IL=-100 */ 23, /* EGSM_MAX IL=-101 */ 23, /* EGSM_MAX IL=-102 */ 23, /* EGSM_MAX IL=-103 */ 23, /* EGSM_MAX IL=-104 */ 23, /* EGSM_MAX IL=-105 */ 23, /* EGSM_MAX IL=-106 */ 23, /* EGSM_MAX IL=-107 */ 23, /* EGSM_MAX IL=-108 */ 23, /* EGSM_MAX IL=-109 */ 23, /* EGSM_MAX IL=-110 */ 23, /* EGSM_MAX IL=-111 */ 23, /* EGSM_MAX IL=-112 */ 23, /* EGSM_MAX IL=-113 */ 23, /* EGSM_MAX IL=-114 */ 23, /* EGSM_MAX IL=-115 */ 23, /* EGSM_MAX IL=-116 */ 23, /* EGSM_MAX IL=-117 */ 23, /* EGSM_MAX IL=-118 */ 23, /* EGSM_MAX IL=-119 */ 23 /* EGSM_MAX IL=-120 */ }, { // il2agc_av // Note this is shared between PCN and EGSM. 0, /* EGSM_MAX IL=0 */ 0, /* EGSM_MAX IL=-1 */ 0, /* EGSM_MAX IL=-2 */ 0, /* EGSM_MAX IL=-3 */ 0, /* EGSM_MAX IL=-4 */ 0, /* EGSM_MAX IL=-5 */ 0, /* EGSM_MAX IL=-6 */ 0, /* EGSM_MAX IL=-7 */ 0, /* EGSM_MAX IL=-8 */ 0, /* EGSM_MAX IL=-9 */ 0, /* EGSM_MAX IL=-10 */ 0, /* EGSM_MAX IL=-11 */ 0, /* EGSM_MAX IL=-12 */ 0, /* EGSM_MAX IL=-13 */ 0, /* EGSM_MAX IL=-14 */ 0, /* EGSM_MAX IL=-15 */ 0, /* EGSM_MAX IL=-16 */ 0, /* EGSM_MAX IL=-17 */ 0, /* EGSM_MAX IL=-18 */ 0, /* EGSM_MAX IL=-19 */ 0, /* EGSM_MAX IL=-20 */ 0, /* EGSM_MAX IL=-21 */ 0, /* EGSM_MAX IL=-22 */ 0, /* EGSM_MAX IL=-23 */ 0, /* EGSM_MAX IL=-24 */ 0, /* EGSM_MAX IL=-25 */ 0, /* EGSM_MAX IL=-26 */ 0, /* EGSM_MAX IL=-27 */ 0, /* EGSM_MAX IL=-28 */ 0, /* EGSM_MAX IL=-29 */ 0, /* EGSM_MAX IL=-30 */ 0, /* EGSM_MAX IL=-31 */ 0, /* EGSM_MAX IL=-32 */ 0, /* EGSM_MAX IL=-33 */ 0, /* EGSM_MAX IL=-34 */ 0, /* EGSM_MAX IL=-35 */ 0, /* EGSM_MAX IL=-36 */ 0, /* EGSM_MAX IL=-37 */ 0, /* EGSM_MAX IL=-38 */ 0, /* EGSM_MAX IL=-39 */ 0, /* EGSM_MAX IL=-40 */ 0, /* EGSM_MAX IL=-41 */ 0, /* EGSM_MAX IL=-42 */ 5, /* EGSM_MAX IL=-43 */ 5, /* EGSM_MAX IL=-44 */ 0, /* EGSM_MAX IL=-45 */ 0, /* EGSM_MAX IL=-46 */ 0, /* EGSM_MAX IL=-47 */ 0, /* EGSM_MAX IL=-48 */ 0, /* EGSM_MAX IL=-49 */ 0, /* EGSM_MAX IL=-50 */ 0, /* EGSM_MAX IL=-51 */ 0, /* EGSM_MAX IL=-52 */ 0, /* EGSM_MAX IL=-53 */ 0, /* EGSM_MAX IL=-54 */ 0, /* EGSM_MAX IL=-55 */ 0, /* EGSM_MAX IL=-56 */ 0, /* EGSM_MAX IL=-57 */ 0, /* EGSM_MAX IL=-58 */ 0, /* EGSM_MAX IL=-59 */ 0, /* EGSM_MAX IL=-60 */ 0, /* EGSM_MAX IL=-61 */ 0, /* EGSM_MAX IL=-62 */ 0, /* EGSM_MAX IL=-63 */ 0, /* EGSM_MAX IL=-64 */ 0, /* EGSM_MAX IL=-65 */ 0, /* EGSM_MAX IL=-66 */ 0, /* EGSM_MAX IL=-67 */ 0, /* EGSM_MAX IL=-68 */ 0, /* EGSM_MAX IL=-69 */ 0, /* EGSM_MAX IL=-70 */ 0, /* EGSM_MAX IL=-71 */ 0, /* EGSM_MAX IL=-72 */ 0, /* EGSM_MAX IL=-73 */ 0, /* EGSM_MAX IL=-74 */ 5, /* EGSM_MAX IL=-75 */ 5, /* EGSM_MAX IL=-76 */ 8, /* EGSM_MAX IL=-77 */ 8, /* EGSM_MAX IL=-78 */ 11, /* EGSM_MAX IL=-79 */ 11, /* EGSM_MAX IL=-80 */ 11, /* EGSM_MAX IL=-81 */ 11, /* EGSM_MAX IL=-82 */ 11, /* EGSM_MAX IL=-83 */ 11, /* EGSM_MAX IL=-84 */ 14, /* EGSM_MAX IL=-85 */ 14, /* EGSM_MAX IL=-86 */ 14, /* EGSM_MAX IL=-87 */ 14, /* EGSM_MAX IL=-88 */ 14, /* EGSM_MAX IL=-89 */ 14, /* EGSM_MAX IL=-90 */ 14, /* EGSM_MAX IL=-91 */ 14, /* EGSM_MAX IL=-92 */ 14, /* EGSM_MAX IL=-93 */ 14, /* EGSM_MAX IL=-94 */ 17, /* EGSM_MAX IL=-95 */ 17, /* EGSM_MAX IL=-96 */ 20, /* EGSM_MAX IL=-97 */ 20, /* EGSM_MAX IL=-98 */ 20, /* EGSM_MAX IL=-99 */ 20, /* EGSM_MAX IL=-100 */ 23, /* EGSM_MAX IL=-101 */ 23, /* EGSM_MAX IL=-102 */ 23, /* EGSM_MAX IL=-103 */ 23, /* EGSM_MAX IL=-104 */ 23, /* EGSM_MAX IL=-105 */ 23, /* EGSM_MAX IL=-106 */ 23, /* EGSM_MAX IL=-107 */ 23, /* EGSM_MAX IL=-108 */ 23, /* EGSM_MAX IL=-109 */ 23, /* EGSM_MAX IL=-110 */ 23, /* EGSM_MAX IL=-111 */ 23, /* EGSM_MAX IL=-112 */ 23, /* EGSM_MAX IL=-113 */ 23, /* EGSM_MAX IL=-114 */ 23, /* EGSM_MAX IL=-115 */ 23, /* EGSM_MAX IL=-116 */ 23, /* EGSM_MAX IL=-117 */ 23, /* EGSM_MAX IL=-118 */ 23, /* EGSM_MAX IL=-119 */ 23 /* EGSM_MAX IL=-120 */ } }, }, { {0, 0}, // ramp up and down delays GUARD_BITS, // number of guard bits needed for ramp up PRG_TX // propagation delay PRG_TX }, { //AFC parameters EEPROM_AFC, C_Psi_sta_inv, // (1/C_Psi_sta) C_Psi_st, // C_Psi_sta * 0.8 F0.16 C_Psi_st_32, // F0.32 C_Psi_st_inv // (1/C_Psi_st) #if (VCXO_ALGO==1) ,C_AFC_DAC_CENTER, // VCXO startup parameter - best guess C_AFC_DAC_MIN, // VCXO startup parameter - 15ppm C_AFC_DAC_MAX, // VCXO startup parameter + 15ppm C_AFC_SNR_THR // snr - Default threshold value #endif } }; #if (L1_FF_MULTIBAND == 0) T_RF_BAND rf_band[GSM_BANDS]; //uninitialised rf struct for bands #else T_RF_BAND rf_band[RF_NB_SUPPORTED_BANDS]; #endif const T_RF_BAND rf_900 = { { //RX structure //T_RX_CAL_PARAMS rx_cal_params { 229, //g_magic 54, //lna_gain_max * 2 40, //lna_th_high 44 //lna_th_low }, { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE]; // Remark: ARFCN=0 (GSM-E) is maintained by 1st GSM subbband. // upper_bound, agc_calib { 10, 0}, // sub-band1 up to arfcn = 10, Agc calibration = 0db { 30, 0}, // sub-band2 up to arfcn = 30, Agc calibration = 0db { 51, 0}, // sub-band3 up to arfcn = 51, Agc calibration = 0db { 71, 0}, // etc. { 90, 0}, // { 112, 0}, // { 124, 0}, // { 991, 0}, // { 992, 0}, // {1023, 0}, // }, { //RX temperature compensation { -15 , 0 }, { -5 , 0 }, { 6 , 0 }, { 16 , 0 }, { 25 , 0 }, { 35 , 0 }, { 45 , 0 }, { 56 , 0 }, { 66 , 0 }, { 75 , 0 }, { 100 , 0 } } }, { //TX structure {// gsm900 T_LEVEL_TX {457, 0, 0}, // 0 {457, 0, 0}, // 1 {457, 0, 0}, // 2 {457, 0, 0}, // 3 {457, 0, 0}, // 4 {457, 0, 0}, // 5 Highest power {400, 1, 0}, // 6 {325, 2, 0}, // 7 {270, 3, 0}, // 8 {220, 4, 0}, // 9 {180, 5, 0}, // 10 {155, 6, 0}, // 11 {130, 7, 0}, // 12 {110, 8, 0}, // 13 { 95, 9, 0}, // 14 { 80, 10, 0}, // 15 { 70, 11, 0}, // 16 { 62, 12, 0}, // 17 { 55, 13, 0}, // 18 { 50, 14, 0}, // 19 Lowest power { 50, 14, 0}, // 20 { 50, 14, 0}, // 21 { 50, 14, 0}, // 22 { 50, 14, 0}, // 23 { 50, 14, 0}, // 24 { 50, 14, 0}, // 25 { 50, 14, 0}, // 26 { 50, 14, 0}, // 27 { 50, 14, 0}, // 28 { 50, 14, 0}, // 29 { 50, 14, 0}, // 30 { 50, 14, 0}, // 31 }, #if(REL99 && FF_PRF)// needs proper values from RF {// gsm900 levels_power_reduction {457, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB {457, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB {457, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB {457, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB }, #endif {// Channel Calibration Tables {// arfcn, tx_chan_cal { 20, 128 }, // Calibration Table 0 { 100, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } }, {// arfcn, tx_chan_cal { 40, 128 }, // Calibration Table 1 { 80, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } }, {// arfcn, tx_chan_cal { 40, 128 }, // Calibration Table 2 { 80, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } }, {// arfcn, tx_chan_cal { 40, 128 }, // Calibration Table 3 { 80, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } } }, { // GSM Power Ramp Values { {// Ramp-Up #0 profile - Power Level 5 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #0 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #1 profile - Power Level 6 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #1 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #2 profile - Power Level 7 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #2 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #3 profile - Power Level 8 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #3 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #4 profile - Power Level 9 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #4 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #5 profile - Power Level 10 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #5 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #6 profile - Power Level 11 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #6 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #7 profile - Power Level 12 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #7 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #8 profile - Power Level 13 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #8 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #9 profile - Power Level 14 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #9 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #10 profile - Power Level 15 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #10 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #11 profile - Power Level 16 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #11 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #12 profile - Power Level 17 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #12 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #13 profile - Power Level 18 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #13 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #14 profile - Power Level 19 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #14 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #15 profile - Power Level 19 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #15 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, }, { //TX temperature compensation #if (ORDER2_TX_TEMP_CAL==1) { -11, 0, 0, 0 }, { +9, 0, 0, 0 }, { +39, 0, 0, 0 }, { +59, 0, 0, 0 }, { 127, 0, 0, 0 } #else { -11, 0 }, { +9, 0 }, { +39, 0 }, { +59, 0 }, { 127, 0 } #endif }, }, //IQ swap SWAP_IQ_GSM, }; const T_RF_BAND rf_1800 = { { //RX structure { //T_RX_CAL_PARAMS rx_cal_params 229, //g_magic 54, //lna gain * 2 40, //lna_th_high 44 //lna_th_low }, { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE]; /*--------------*/ /*-- DCS band --*/ /*--------------*/ { 548, 0}, // { 622, 0}, // { 680, 0}, // { 745, 0}, // { 812, 0}, // { 860, 0}, // { 885, 0}, // { 991, 0}, // { 992, 0}, // {1023, 0}, // }, { //RX temperature compensation { -15 , 0 }, { -5 , 0 }, { 6 , 0 }, { 16 , 0 }, { 25 , 0 }, { 35 , 0 }, { 45 , 0 }, { 56 , 0 }, { 66 , 0 }, { 75 , 0 }, { 100 , 0 } } }, { //TX structure {// dcs1800 T_LEVEL_TX {424, 0, 0}, // 0 Highest power {375, 1, 0}, // 1 {310, 2, 0}, // 2 {255, 3, 0}, // 3 {210, 4, 0}, // 4 {180, 5, 0}, // 5 {152, 6, 0}, // 6 {130, 7, 0}, // 7 {112, 8, 0}, // 8 {98, 9, 0}, // 9 {85, 10, 0}, // 10 {75, 11, 0}, // 11 {66, 12, 0}, // 12 {58, 13, 0}, // 13 {52, 14, 0}, // 14 {47, 15, 0}, // 15 Lowest power {47, 15, 0}, // 16 {47, 15, 0}, // 17 {47, 15, 0}, // 18 {47, 15, 0}, // 19 {47, 15, 0}, // 20 {47, 15, 0}, // 21 {47, 15, 0}, // 22 {47, 15, 0}, // 23 {47, 15, 0}, // 24 {47, 15, 0}, // 25 {47, 15, 0}, // 26 {47, 15, 0}, // 27 {47, 15, 0}, // 28 {424, 0, 0}, // 29 Highest power {424, 0, 0}, // 30 Highest power {424, 0, 0}, // 31 Highest power }, #if(REL99 && FF_PRF)// needs proper values from RF {// 1800 levels_power_reduction {424, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB {424, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB {424, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB {424, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB }, #endif {// Channel Calibration Tables {// arfcn, tx_chan_cal { 554, 128 }, // Calibration Table 0 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 851, 128 }, { 870, 128 }, { 885, 128 } }, { { 554, 128 }, // Calibration Table 1 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 851, 128 }, { 870, 128 }, { 885, 128 } }, {// arfcn, tx_chan_cal { 554, 128 }, // Calibration Table 2 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 851, 128 }, { 870, 128 }, { 885, 128 } }, {// arfcn, tx_chan_cal { 554, 128 }, // Calibration Table 3 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 851, 128 }, { 870, 128 }, { 885, 128 } } }, { // DCS Power Ramp Values { {// Ramp-Up #0 profile - Power Level 0 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #0 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #1 profile - Power Level 1 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #1 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #2 profile - Power Level 2 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #2 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #3 profile - Power Level 3 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #3 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #4 profile - Power Level 4 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #4 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #5 profile - Power Level 5 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #5 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #6 profile - Power Level 6 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #6 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #7 profile - Power Level 7 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #7 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #8 profile - Power Level 8 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #8 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #9 profile - Power Level 9 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #9 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #10 profile - Power Level 10 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #10 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #11 profile - Power Level 11 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #11 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #12 profile - Power Level 12 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #12 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #13 profile - Power Level 13 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #13 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #14 profile - Power Level 14 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #14 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #15 profile - Power Level 15 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #15 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, }, { //TX temperature compensation #if (ORDER2_TX_TEMP_CAL==1) { -11, 0, 0, 0 }, { +9, 0, 0, 0 }, { +39, 0, 0, 0 }, { +59, 0, 0, 0 }, { 127, 0, 0, 0 } #else { -11, 0 }, { +9, 0 }, { +39, 0 }, { +59, 0 }, { 127, 0 } #endif }, }, //IQ swap SWAP_IQ_DCS }; //copy from gsm900 const T_RF_BAND rf_850 = { { //RX structure //T_RX_CAL_PARAMS rx_cal_params { 229, //g_magic 54, //lna_gain_max * 2 40, //lna_th_high 44 //lna_th_low }, { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE]; // Remark: ARFCN=0 (GSM-E) is maintained by 1st GSM subbband. // upper_bound, agc_calib { 10, 0}, // sub-band1 up to arfcn = 10, Agc calibration = 0db { 30, 0}, // sub-band2 up to arfcn = 30, Agc calibration = 0db { 51, 0}, // sub-band3 up to arfcn = 51, Agc calibration = 0db { 71, 0}, // etc. { 90, 0}, // { 112, 0}, // { 124, 0}, // { 991, 0}, // { 992, 0}, // {1023, 0}, // }, { //RX temperature compensation { -15 , 0 }, { -5 , 0 }, { 6 , 0 }, { 16 , 0 }, { 25 , 0 }, { 35 , 0 }, { 45 , 0 }, { 56 , 0 }, { 66 , 0 }, { 75 , 0 }, { 100 , 0 } } }, { //TX structure {// gsm850 T_LEVEL_TX {486, 0, 0}, // 0 {486, 0, 0}, // 1 {486, 0, 0}, // 2 {486, 0, 0}, // 3 {486, 0, 0}, // 4 {486, 0, 0}, // 5 Highest power {400, 1, 0}, // 6 {330, 2, 0}, // 7 {270, 3, 0}, // 8 {223, 4, 0}, // 9 {186, 5, 0}, // 10 {158, 6, 0}, // 11 {133, 7, 0}, // 12 {114, 8, 0}, // 13 {97, 9, 0}, // 14 {84, 10, 0}, // 15 {73, 11, 0}, // 16 {64, 12, 0}, // 17 {57, 13, 0}, // 18 {52, 14, 0}, // 19 Lowest power {52, 14, 0}, // 20 {52, 14, 0}, // 21 {52, 14, 0}, // 22 {52, 14, 0}, // 23 {52, 14, 0}, // 24 {52, 14, 0}, // 25 {52, 14, 0}, // 26 {52, 14, 0}, // 27 {52, 14, 0}, // 28 {52, 14, 0}, // 29 {52, 14, 0}, // 30 {52, 14, 0}, // 31 }, #if(REL99 && FF_PRF)// needs proper values from RF {// gsm850 levels_power_reduction {486, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB {486, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB {486, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB {486, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB }, #endif {// Channel Calibration Tables {// arfcn, tx_chan_cal { 40, 128 }, // Calibration Table 0 { 80, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } }, {// arfcn, tx_chan_cal { 554, 130 }, // Calibration Table 1 { 722, 128 }, { 746, 129 }, { 774, 131 }, { 808, 132 }, { 851, 134 }, { 870, 138 }, { 885, 140 } }, {// arfcn, tx_chan_cal { 40, 128 }, // Calibration Table 2 { 80, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } }, {// arfcn, tx_chan_cal { 40, 128 }, // Calibration Table 3 { 80, 128 }, { 124, 128 }, { 586, 128 }, { 661, 128 }, { 736, 128 }, { 885, 128 }, { 1023, 128 } } }, { // gsm850 Power Ramp Values { {// Ramp-Up #0 profile - Power Level 5 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #0 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #1 profile - Power Level 6 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #1 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #2 profile - Power Level 7 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #2 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #3 profile - Power Level 8 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #3 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #4 profile - Power Level 9 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #4 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #5 profile - Power Level 10 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #5 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #6 profile - Power Level 11 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #6 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #7 profile - Power Level 12 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #7 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #8 profile - Power Level 13 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #8 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #9 profile - Power Level 14 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #9 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #10 profile - Power Level 15 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #10 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #11 profile - Power Level 16 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #11 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #12 profile - Power Level 17 0,0,0,0,0,0,10,14,17,25, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #12 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #13 profile - Power Level 18 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #13 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #14 profile - Power Level 19 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #14 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #15 profile - Power Level 19 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #15 profile 255,251,238,218,191,160,127,95,64,37, 17,4,0,0,0,0,0,0,0,0 }, }, }, { //TX temperature compensation #if (ORDER2_TX_TEMP_CAL==1) { -11, 0, 0, 0 }, { +9, 0, 0, 0 }, { +39, 0, 0, 0 }, { +59, 0, 0, 0 }, { 127, 0, 0, 0 } #else { -11, 0 }, { +9, 0 }, { +39, 0 }, { +59, 0 }, { 127, 0 } #endif }, }, //IQ swap SWAP_IQ_GSM850, }; //copy from dcs1800 const T_RF_BAND rf_1900 = { { //RX structure { //T_RX_CAL_PARAMS rx_cal_params 229, //g_magic 54, //lna gain * 2 40, //lna_th_high 44 //lna_th_low }, { //T_RF_AGC_BAND agc_bands[RF_RX_CAL_CHAN_SIZE]; /*--------------*/ /*-- PCS band --*/ /*--------------*/ { 548, 0}, // { 622, 0}, // { 680, 0}, // { 745, 0}, // { 812, 0}, // { 860, 0}, // { 885, 0}, // { 991, 0}, // { 992, 0}, // {1023, 0}, // }, { //RX temperature compensation { -15 , 0 }, { -5 , 0 }, { 6 , 0 }, { 16 , 0 }, { 25 , 0 }, { 35 , 0 }, { 45 , 0 }, { 56 , 0 }, { 66 , 0 }, { 75 , 0 }, { 100 , 0 } } }, { //TX structure {// pcs1900 T_LEVEL_TX {438, 0, 0}, // 0 Highest power {380, 1, 0}, // 1 {310, 2, 0}, // 2 {255, 3, 0}, // 3 {213, 4, 0}, // 4 {180, 5, 0}, // 5 {152, 6, 0}, // 6 {130, 7, 0}, // 7 {112, 8, 0}, // 8 {98, 9, 0}, // 9 {87, 10, 0}, // 10 {77, 11, 0}, // 11 {68, 12, 0}, // 12 {60, 13, 0}, // 13 {53, 14, 0}, // 14 {48, 15, 0}, // 15 Lowest power {48, 15, 0}, // 16 {48, 15, 0}, // 17 {48, 15, 0}, // 18 {48, 15, 0}, // 19 {48, 15, 0}, // 20 {48, 15, 0}, // 21 {48, 15, 0}, // 22 {48, 15, 0}, // 23 {48, 15, 0}, // 24 {48, 15, 0}, // 25 {48, 15, 0}, // 26 {48, 15, 0}, // 27 {48, 15, 0}, // 28 {438, 0, 0}, // 29 Highest power {438, 0, 0}, // 30 Highest power {438, 0, 0}, // 31 Highest power }, #if(REL99 && FF_PRF)// needs proper values from RF {// PCS1900 band levels_power_reduction {438, 0, 0}, // for uplink 1 timeslot = no power reduction ie 0,0 dB {438, 0, 0}, // for 2 uplink timeslot = reduction between 0,0 dB to 3,0 dB {438, 0, 0}, // for 3 uplink timeslot = reduction between 1,8 dB to 4,8 dB {438, 0, 0}, // for 4 uplink timselot = reduction between 3,0 dB to 6,0 dB }, #endif {// Channel Calibration Tables {// arfcn, tx_chan_cal { 554, 128 }, // Calibration Table 0 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 810, 128 }, { 810, 128 }, { 810, 128 } }, { { 554, 128 }, // Calibration Table 1 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 810, 128 }, { 810, 128 }, { 810, 128 } }, {// arfcn, tx_chan_cal { 554, 128 }, // Calibration Table 2 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 810, 128 }, { 810, 128 }, { 810, 128 } }, {// arfcn, tx_chan_cal { 554, 128 }, // Calibration Table 3 { 722, 128 }, { 746, 128 }, { 774, 128 }, { 808, 128 }, { 810, 128 }, { 810, 128 }, { 810, 128 } } }, { // PCS Power Ramp Values { {// Ramp-Up #0 profile - Power Level 0 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #0 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #1 profile - Power Level 1 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #1 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #2 profile - Power Level 2 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #2 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #3 profile - Power Level 3 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #3 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #4 profile - Power Level 4 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #4 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #5 profile - Power Level 5 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #5 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #6 profile - Power Level 6 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #6 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #7 profile - Power Level 7 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #7 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #8 profile - Power Level 8 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #8 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #9 profile - Power Level 9 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #9 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #10 profile - Power Level 10 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #10 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #11 profile - Power Level 11 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #11 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #12 profile - Power Level 12 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #12 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #13 profile - Power Level 13 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #13 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #14 profile - Power Level 14 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #14 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, { {// Ramp-Up #15 profile - Power Level 15 0,0,0,0,0,0,10,14,21,29, 37,64,95,127,160,191,218,238,251,255 }, {// Ramp-Down #15 profile 255,240,228,220,185,160,127,95,64,37, 17,14,0,0,0,0,0,0,0,0 }, }, }, { //TX temperature compensation #if (ORDER2_TX_TEMP_CAL==1) { -11, 0, 0, 0 }, { +9, 0, 0, 0 }, { +39, 0, 0, 0 }, { +59, 0, 0, 0 }, { 127, 0, 0, 0 } #else { -11, 0 }, { +9, 0 }, { +39, 0 }, { +59, 0 }, { 127, 0 } #endif }, }, //IQ swap SWAP_IQ_PCS }; UWORD16 drp_wrapper[DRP_WRAPPER_TABLE_SIZE]= { C_APCCTRL2, C_APCDEL1, C_APCDEL2 }; /*------------------------------------------*/ /* Gain table */ /* specified in the TRF6053 spec */ /* 2 dB steps - LNA always ON */ /*------------------------------------------*/ UWORD16 AGC_TABLE[AGC_TABLE_SIZE] = { ABE_0_DB, ABE_0_DB, ABE_2_DB, ABE_2_DB, ABE_2_DB, ABE_5_DB, ABE_5_DB, ABE_5_DB, ABE_8_DB, ABE_8_DB, ABE_8_DB, ABE_11_DB, ABE_11_DB, ABE_11_DB, ABE_14_DB, ABE_14_DB, ABE_14_DB, ABE_17_DB, ABE_17_DB, ABE_17_DB, ABE_20_DB, ABE_20_DB, ABE_20_DB, ABE_23_DB }; // structure for ADC conversion (4 Internal channel + 5 Ext channels max.) T_ADC adc; // MADC calibration structure T_ADCCAL adc_cal= { // a: 0,..,8 // b, 0,..,8 // cal_a = 4*1750 is the Typical value 1.75 V ref voltage , divide by 4 7000, 8750, 7000, 7000, 7000, 7000, 7000, 256, 7000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // table which converts ADC value into RF temperature const T_TEMP temperature[TEMP_TABLE_SIZE] = { 7, -35, 7, -34, 8, -33, 8, -32, 9, -31, 9, -30, 10, -29, 11, -28, 11, -27, 12, -26, 13, -25, 14, -24, 14, -23, 15, -22, 16, -21, 17, -20, 18, -19, 19, -18, 21, -17, 22, -16, 23, -15, 24, -14, 26, -13, 27, -12, 29, -11, 30, -10, 32, -9, 34, -8, 36, -7, 37, -6, 39, -5, 41, -4, 44, -3, 46, -2, 48, -1, 51, 0, 53, 1, 56, 2, 59, 3, 61, 4, 64, 5, 68, 6, 71, 7, 74, 8, 78, 9, 81, 10, 85, 11, 89, 12, 93, 13, 97, 14, 101, 15, 105, 16, 110, 17, 115, 18, 119, 19, 124, 20, 130, 21, 135, 22, 140, 23, 146, 24, 152, 25, 158, 26, 164, 27, 170, 28, 176, 29, 183, 30, 190, 31, 197, 32, 204, 33, 211, 34, 219, 35, 226, 36, 234, 37, 242, 38, 250, 39, 259, 40, 267, 41, 276, 42, 285, 43, 294, 44, 303, 45, 312, 46, 322, 47, 331, 48, 341, 49, 351, 50, 361, 51, 371, 52, 382, 53, 392, 54, 403, 55, 413, 56, 424, 57, 435, 58, 446, 59, 458, 60, 469, 61, 480, 62, 492, 63, 503, 64, 515, 65, 527, 66, 539, 67, 550, 68, 562, 69, 574, 70, 586, 71, 598, 72, 611, 73, 623, 74, 635, 75, 647, 76, 659, 77, 671, 78, 683, 79, 696, 80, 708, 81, 720, 82, 732, 83, 744, 84, 756, 85, 768, 86, 780, 87, 792, 88, 804, 89, 816, 90, 827, 91, 839, 92, 851, 93, 862, 94, 873, 95 }; /*------------------------------------------*/ /* ABB Initialization words */ /*------------------------------------------*/ #if (ANLG_FAM == 11) UWORD8 abb[ABB_TABLE_SIZE] = { C_VULGAIN, C_VDLGAIN, C_SIDETONE, C_CTRL1, C_CTRL2, C_CTRL3, C_CTRL4, C_CTRL5, C_CTRL6, C_POPAUTO, C_OUTEN1, C_OUTEN2, C_OUTEN3, C_AULGA, C_AURGA }; #endif #if (L1_FF_MULTIBAND == 0) #else /* The physical RF bands are enumerated in order of increasing frequencies */ /* The same order must be used in l1_rf61, l1_cust, and l1_const */ const T_MULTIBAND_RF multiband_rf[RF_NB_SUPPORTED_BANDS + 1] = { /*power_class, tx_turning_point, max_txpwr, gsm_band_identifier, name*/ #if (GSM900_SUPPORTED == 1) { 4, 0, 19, RF_GSM900, "900"}, #endif /* if(GSM900_SUPPORTED == 1)*/ #if (GSM850_SUPPORTED == 1) { 4, 0, 19, RF_GSM850, "850"}, #endif /*if (GSM850_SUPPORTED == 1)*/ #if (DCS1800_SUPPORTED == 1) { 1, 28, 15, RF_DCS1800, "1800"}, #endif /*if (DCS1800_SUPPORTED == 1)*/ #if (PCS1900_SUPPORTED == 1) {1, 21, 15, RF_PCS1900, "1900"}, #endif /*if (PCS1900_SUPPORTED == 1)*/ } ; /* Array for mapping from subband index into physical band index */ const WORD8 rf_subband2band[RF_NB_SUBBANDS] = { #if (GSM900_SUPPORTED == 1) RF_GSM900, RF_GSM900, #endif #if (GSM850_SUPPORTED == 1) RF_GSM850, #endif #if (DCS1800_SUPPORTED == 1) RF_DCS1800, #endif #if (PCS1900_SUPPORTED == 1) RF_PCS1900, #endif }; const T_MULTIBAND_CONVERT multiband_convert[RF_NB_SUBBANDS] = { /*first_rf_freq, last_rf_freq, first_l1_freq, l1freq2rffreq */ #if (GSM900_SUPPORTED == 1) { RF_FREQ_1ST_900L, RF_FREQ_1ST_900L+NB_CHAN_900L, L1_FREQ_1ST_900L, RF_FREQ_1ST_900L-L1_FREQ_1ST_900L}, { RF_FREQ_1ST_900H, RF_FREQ_1ST_900H+NB_CHAN_900H, L1_FREQ_1ST_900H, RF_FREQ_1ST_900H-L1_FREQ_1ST_900H}, #endif #if (GSM850_SUPPORTED == 1) { RF_FREQ_1ST_850, RF_FREQ_1ST_850+NB_CHAN_850, L1_FREQ_1ST_850, RF_FREQ_1ST_850-L1_FREQ_1ST_850}, #endif #if (DCS1800_SUPPORTED == 1) { RF_FREQ_1ST_1800, RF_FREQ_1ST_1800+NB_CHAN_1800, L1_FREQ_1ST_1800, RF_FREQ_1ST_1800-L1_FREQ_1ST_1800}, #endif #if (PCS1900_SUPPORTED == 1) { RF_FREQ_1ST_1900, RF_FREQ_1ST_1900+NB_CHAN_1900, L1_FREQ_1ST_1900, RF_FREQ_1ST_1900-L1_FREQ_1ST_1900}, #endif }; /*-------------------------------------------------------*/ /* rf_convert_l1freq_to_l1subband */ /*-------------------------------------------------------*/ /* Parameters : l1freq, the l1 radio_freq to convert */ /* */ /* Return : The l1 subband index l1freq belongs to */ /* */ /* Functionality : compare l1freq with the band ranges, */ /* return the l1 band index where match is found */ /*-------------------------------------------------------*/ UWORD8 rf_convert_l1freq_to_l1subband(UWORD16 l1_freq) { WORD32 subband_idx; for(subband_idx = RF_NB_SUBBANDS -1; subband_idx>=0; subband_idx--) { if(l1_freq >= multiband_convert[subband_idx].first_l1_freq) return ((UWORD8)subband_idx); } l1_multiband_error_handler(l1_freq); return 0; } /*-------------------------------------------------------*/ /* rf_convert_rffreq_to_l1subband */ /*-------------------------------------------------------*/ /* Parameters : rffreq, the physical rf freq channel */ /* number to convert */ /* */ /* Return : The l1 subband index rf_freq belongs to */ /* */ /* Functionality : compare rf_freq with the band ranges, */ /* return the l1 band index where match is found */ /*-------------------------------------------------------*/ UWORD8 rf_convert_rffreq_to_l1subband(UWORD16 rf_freq) { WORD32 subband_idx; for(subband_idx = RF_NB_SUBBANDS -1; subband_idx>=0; subband_idx--) { if((rf_freq >= multiband_convert[subband_idx].first_rf_freq)&& (rf_freq < multiband_convert[subband_idx].last_rf_freq)) return ((UWORD8)subband_idx); } l1_multiband_error_handler(rf_freq); return 0; } /*-------------------------------------------------------*/ /* rf_convert_l1freq_to_band_idx */ /*-------------------------------------------------------*/ /* Parameters : l1freq, the l1 radio_freq to convert */ /* */ /* Return : The physical index of the band of l1freq */ /* */ /* Functionality : compare l1freq with the band ranges, */ /* return the rf_band_index of the l1_band_index */ /* where match is found */ /*-------------------------------------------------------*/ WORD8 rf_convert_l1freq_to_rf_band_idx(UWORD16 l1_freq) { return rf_subband2band[rf_convert_l1freq_to_l1subband(l1_freq)]; } /*-------------------------------------------------------*/ /* rf_convert_l1freq_to_rffreq */ /*-------------------------------------------------------*/ /* Parameters : l1freq, the l1 radio_freq to convert */ /* */ /* Return : ARFCN, absolute radio frequency channel */ /* number and in *bandidx the band index */ /* Functionality : identify band index and look up ARFCN */ /*-------------------------------------------------------*/ UWORD16 rf_convert_l1freq_to_rffreq(UWORD16 l1_freq ) { WORD32 subband_idx = rf_convert_l1freq_to_l1subband(l1_freq); return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq); } /*-------------------------------------------------------*/ /* rf_convert_l1freq_to_arfcn_and_bandidx */ /*-------------------------------------------------------*/ /* Parameters : l1freq, the l1 radio_freq to convert */ /* */ /* Return : ARFCN, absolute radio frequency channel */ /* number and in *bandidx the RF band index */ /* Functionality : identify band index and look up ARFCN */ /*-------------------------------------------------------*/ /*-------------------------------------------------------*/ /* rf_convert_l1freq_to_rffreq_and_bandidx */ /*-------------------------------------------------------*/ /* Parameters : l1freq, the l1 radio_freq to convert */ /* */ /* Return : ARFCN, absolute radio frequency channel */ /* number and in *bandidx the band index */ /* Functionality : identify band index and look up ARFCN */ /*-------------------------------------------------------*/ UWORD16 rf_convert_l1freq_to_rffreq_rfband(UWORD16 l1_freq, WORD8 *rf_band_index) { WORD32 subband_idx = rf_convert_l1freq_to_l1subband(l1_freq); *rf_band_index = rf_subband2band[subband_idx]; return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq); } /*-------------------------------------------------------*/ /* rf_convert_l1freq_to_arfcn_and_bandidx */ /*-------------------------------------------------------*/ /* Parameters : l1freq, the l1 radio_freq to convert */ /* */ /* Return : ARFCN, absolute radio frequency channel */ /* number and in *bandidx the RF band index */ /* Functionality : identify band index and look up ARFCN */ /*-------------------------------------------------------*/ UWORD16 rf_convert_l1freq_to_arfcn_rfband(UWORD16 l1_freq, WORD8 *rf_band_index) { WORD32 subband_idx = rf_convert_l1freq_to_l1subband(l1_freq); *rf_band_index = rf_subband2band[subband_idx]; #if (PCS1900_SUPPORTED) if(RF_PCS1900 == rf_subband2band[subband_idx]) return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq-512); else #endif return(l1_freq+multiband_convert[subband_idx].l1freq2rffreq); } UWORD16 rf_convert_rffreq_to_l1freq(UWORD16 rf_freq) { WORD32 subband_idx = rf_convert_rffreq_to_l1subband(rf_freq); return(rf_freq - multiband_convert[subband_idx].l1freq2rffreq); } /*-------------------------------------------------------*/ /* rf_convert_rffreq_to_l1freq_rfband */ /*-------------------------------------------------------*/ /* Parameters : rffreq, the physical rf channel number */ /* to convert */ /* */ /* Return : l1freq, l1 internal frequency number */ /* and in *bandidx the RF band index */ /* Functionality : identify band index and look up ARFCN */ /*-------------------------------------------------------*/ UWORD16 rf_convert_rffreq_to_l1freq_rfband(UWORD16 rf_freq, WORD8 *rf_band_index) { WORD32 subband_idx = rf_convert_rffreq_to_l1subband(rf_freq); *rf_band_index = (WORD8)subband_idx; return(rf_freq - multiband_convert[subband_idx].l1freq2rffreq); } #if(PCS1900_SUPPORTED) extern UWORD16 tm_std_band; #endif UWORD16 rf_convert_tmarfcn_to_l1freq(UWORD16 tm_arfcn, WORD8 *error_flag) { *error_flag = 0; #if(GSM900_SUPPORTED) if(NB_CHAN_900L> tm_arfcn) return (tm_arfcn + L1_FREQ_1ST_900L- RF_FREQ_1ST_900L); if((ARFCN_1ST_900H <= tm_arfcn)&&(ARFCN_1ST_900H + NB_CHAN_900H > tm_arfcn)) return (tm_arfcn + L1_FREQ_1ST_900H- RF_FREQ_1ST_900H); #endif #if(GSM850_SUPPORTED) if((ARFCN_1ST_850 <= tm_arfcn)||(ARFCN_1ST_850+NB_CHAN_850 > tm_arfcn)) return(tm_arfcn + L1_FREQ_1ST_850- RF_FREQ_1ST_850); #endif #if(PCS1900_SUPPORTED) if((RF_FREQ_1ST_1900<=tm_arfcn)&&((RF_FREQ_1ST_1900+NB_CHAN_1900)>tm_arfcn)) return (tm_arfcn + L1_FREQ_1ST_1900 - RF_FREQ_1ST_1900); /* PCS RF_FREQ format */ if(((3 == (tm_std_band & 0xff))||(8==(tm_std_band & 0xff))) && (ARFCN_1ST_1900 <= tm_arfcn) && (ARFCN_1ST_1900+NB_CHAN_1900 > tm_arfcn)) return(tm_arfcn+L1_FREQ_1ST_1900-ARFCN_1ST_1900); /* PCS Legacy compatible*/ if((1000+ARFCN_1ST_1900 <= tm_arfcn)&& (1000+ARFCN_1ST_1900+NB_CHAN_1900 >= tm_arfcn)) return(tm_arfcn+L1_FREQ_1ST_1900-ARFCN_1ST_1900-1000); /*ARFCN+1000 format*/ #endif #if(DCS1800_SUPPORTED) if((ARFCN_1ST_1800 <= tm_arfcn)||(ARFCN_1ST_1800+NB_CHAN_1800 > tm_arfcn)) return(tm_arfcn + L1_FREQ_1ST_1800- RF_FREQ_1ST_1800); #endif *error_flag = 1; return (tm_arfcn); } #endif// if(L1_FF_MULTIBAND == 1)