FreeCalypso > hg > fc-magnetite
view src/cs/layer1/cust0/l1_rf12.c @ 516:1ed9de6c90bd
src/g23m-gsm/sms/sms_for.c: bogus malloc removed
The new error handling code that was not present in TCS211 blob version
contains a malloc call that is bogus for 3 reasons:
1) The memory allocation in question is not needed in the first place;
2) libc malloc is used instead of one of the firmware's proper ways;
3) The memory allocation is made inside a function and then never freed,
i.e., a memory leak.
This bug was caught in gcc-built FreeCalypso fw projects (Citrine
and Selenite) because our gcc environment does not allow any use of
libc malloc (any reference to malloc produces a link failure),
but this code from TCS3.2 is wrong even for Magnetite: if this code
path is executed repeatedly over a long time, the many small allocations
made by this malloc call without a subsequent free will eventually
exhaust the malloc heap provided by the TMS470 environment, malloc will
start returning NULL, and the bogus code will treat it as an error.
Because the memory allocation in question is not needed at all,
the fix entails simply removing it.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 22 Jul 2018 06:04:49 +0000 |
| parents | cbd92db6b34e |
| children | c3f2f79dc5b8 |
line wrap: on
line source
#if (OP_L1_STANDALONE == 1) // Define the correct enumeration of PA. Consult tpudrv12.h for the enumeration. #if ((BOARD == 40) || (BOARD == 41) || (BOARD == 45)) // EvaRita + D-sample or EvaConso #define RF_PA 3 #else #define RF_PA 0 #endif #else #include "rf.cfg" //#define RF_PA 3 // Hitachi #endif /* * FreeCalypso: the following T_RF table perfectly matches * between the MV100 source and the Leonardo binary object. */ T_RF rf = { RF_RITA_10, //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; 6, // low_agc; 34, // 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. 14, /* EGSM_MAX IL=0 */ 14, /* EGSM_MAX IL=-1 */ 14, /* EGSM_MAX IL=-2 */ 14, /* EGSM_MAX IL=-3 */ 14, /* EGSM_MAX IL=-4 */ 14, /* EGSM_MAX IL=-5 */ 14, /* EGSM_MAX IL=-6 */ 14, /* EGSM_MAX IL=-7 */ 14, /* EGSM_MAX IL=-8 */ 14, /* EGSM_MAX IL=-9 */ 14, /* EGSM_MAX IL=-10 */ 14, /* EGSM_MAX IL=-11 */ 14, /* EGSM_MAX IL=-12 */ 14, /* EGSM_MAX IL=-13 */ 14, /* EGSM_MAX IL=-14 */ 14, /* EGSM_MAX IL=-15 */ 14, /* EGSM_MAX IL=-16 */ 14, /* EGSM_MAX IL=-17 */ 14, /* EGSM_MAX IL=-18 */ 14, /* EGSM_MAX IL=-19 */ 14, /* EGSM_MAX IL=-20 */ 14, /* EGSM_MAX IL=-21 */ 14, /* EGSM_MAX IL=-22 */ 14, /* EGSM_MAX IL=-23 */ 14, /* EGSM_MAX IL=-24 */ 14, /* EGSM_MAX IL=-25 */ 14, /* EGSM_MAX IL=-26 */ 14, /* EGSM_MAX IL=-27 */ 14, /* EGSM_MAX IL=-28 */ 14, /* EGSM_MAX IL=-29 */ 14, /* EGSM_MAX IL=-30 */ 14, /* EGSM_MAX IL=-31 */ 14, /* EGSM_MAX IL=-32 */ 14, /* EGSM_MAX IL=-33 */ 14, /* EGSM_MAX IL=-34 */ 14, /* EGSM_MAX IL=-35 */ 14, /* EGSM_MAX IL=-36 */ 14, /* EGSM_MAX IL=-37 */ 14, /* EGSM_MAX IL=-38 */ 14, /* EGSM_MAX IL=-39 */ 14, /* EGSM_MAX IL=-40 */ 14, /* EGSM_MAX IL=-41 */ 14, /* EGSM_MAX IL=-42 */ 14, /* EGSM_MAX IL=-43 */ 14, /* EGSM_MAX IL=-44 */ 14, /* EGSM_MAX IL=-45 */ 14, /* EGSM_MAX IL=-46 */ 14, /* EGSM_MAX IL=-47 */ 14, /* EGSM_MAX IL=-48 */ 14, /* EGSM_MAX IL=-49 */ 14, /* EGSM_MAX IL=-50 */ 14, /* EGSM_MAX IL=-51 */ 14, /* EGSM_MAX IL=-52 */ 14, /* EGSM_MAX IL=-53 */ 14, /* EGSM_MAX IL=-54 */ 16, /* EGSM_MAX IL=-55 */ 16, /* EGSM_MAX IL=-56 */ 18, /* EGSM_MAX IL=-57 */ 18, /* EGSM_MAX IL=-58 */ 20, /* EGSM_MAX IL=-59 */ 20, /* EGSM_MAX IL=-60 */ 22, /* EGSM_MAX IL=-61 */ 22, /* EGSM_MAX IL=-62 */ 24, /* EGSM_MAX IL=-63 */ 24, /* EGSM_MAX IL=-64 */ 26, /* EGSM_MAX IL=-65 */ 26, /* EGSM_MAX IL=-66 */ 28, /* EGSM_MAX IL=-67 */ 28, /* EGSM_MAX IL=-68 */ 30, /* EGSM_MAX IL=-69 */ 30, /* EGSM_MAX IL=-70 */ 32, /* EGSM_MAX IL=-71 */ 32, /* EGSM_MAX IL=-72 */ 34, /* EGSM_MAX IL=-73 */ 34, /* EGSM_MAX IL=-74 */ 36, /* EGSM_MAX IL=-75 */ 36, /* EGSM_MAX IL=-76 */ 38, /* EGSM_MAX IL=-77 */ 38, /* EGSM_MAX IL=-78 */ 40, /* EGSM_MAX IL=-79 */ 40, /* EGSM_MAX IL=-80 */ 40, /* EGSM_MAX IL=-81 */ 40, /* EGSM_MAX IL=-82 */ 40, /* EGSM_MAX IL=-83 */ 40, /* EGSM_MAX IL=-84 */ 40, /* EGSM_MAX IL=-85 */ 40, /* EGSM_MAX IL=-86 */ 40, /* EGSM_MAX IL=-87 */ 40, /* EGSM_MAX IL=-88 */ 40, /* EGSM_MAX IL=-89 */ 40, /* EGSM_MAX IL=-90 */ 40, /* EGSM_MAX IL=-91 */ 40, /* EGSM_MAX IL=-92 */ 40, /* EGSM_MAX IL=-93 */ 40, /* EGSM_MAX IL=-94 */ 40, /* EGSM_MAX IL=-95 */ 40, /* EGSM_MAX IL=-96 */ 40, /* EGSM_MAX IL=-97 */ 40, /* EGSM_MAX IL=-98 */ 40, /* EGSM_MAX IL=-99 */ 40, /* EGSM_MAX IL=-100 */ 40, /* EGSM_MAX IL=-101 */ 40, /* EGSM_MAX IL=-102 */ 40, /* EGSM_MAX IL=-103 */ 40, /* EGSM_MAX IL=-104 */ 40, /* EGSM_MAX IL=-105 */ 40, /* EGSM_MAX IL=-106 */ 40, /* EGSM_MAX IL=-107 */ 40, /* EGSM_MAX IL=-108 */ 40, /* EGSM_MAX IL=-109 */ 40, /* EGSM_MAX IL=-110 */ 40, /* EGSM_MAX IL=-111 */ 40, /* EGSM_MAX IL=-112 */ 40, /* EGSM_MAX IL=-113 */ 40, /* EGSM_MAX IL=-114 */ 40, /* EGSM_MAX IL=-115 */ 40, /* EGSM_MAX IL=-116 */ 40, /* EGSM_MAX IL=-117 */ 40, /* EGSM_MAX IL=-118 */ 40, /* EGSM_MAX IL=-119 */ 40 /* EGSM_MAX IL=-120 */ }, { // il2agc_max // Note this is shared between PCN and EGSM. 14, /* EGSM_MAX IL=0 */ 14, /* EGSM_MAX IL=-1 */ 14, /* EGSM_MAX IL=-2 */ 14, /* EGSM_MAX IL=-3 */ 14, /* EGSM_MAX IL=-4 */ 14, /* EGSM_MAX IL=-5 */ 14, /* EGSM_MAX IL=-6 */ 14, /* EGSM_MAX IL=-7 */ 14, /* EGSM_MAX IL=-8 */ 14, /* EGSM_MAX IL=-9 */ 14, /* EGSM_MAX IL=-10 */ 14, /* EGSM_MAX IL=-11 */ 14, /* EGSM_MAX IL=-12 */ 14, /* EGSM_MAX IL=-13 */ 14, /* EGSM_MAX IL=-14 */ 14, /* EGSM_MAX IL=-15 */ 14, /* EGSM_MAX IL=-16 */ 14, /* EGSM_MAX IL=-17 */ 14, /* EGSM_MAX IL=-18 */ 14, /* EGSM_MAX IL=-19 */ 14, /* EGSM_MAX IL=-20 */ 14, /* EGSM_MAX IL=-21 */ 14, /* EGSM_MAX IL=-22 */ 14, /* EGSM_MAX IL=-23 */ 14, /* EGSM_MAX IL=-24 */ 14, /* EGSM_MAX IL=-25 */ 14, /* EGSM_MAX IL=-26 */ 14, /* EGSM_MAX IL=-27 */ 14, /* EGSM_MAX IL=-28 */ 14, /* EGSM_MAX IL=-29 */ 14, /* EGSM_MAX IL=-30 */ 14, /* EGSM_MAX IL=-31 */ 14, /* EGSM_MAX IL=-32 */ 14, /* EGSM_MAX IL=-33 */ 14, /* EGSM_MAX IL=-34 */ 14, /* EGSM_MAX IL=-35 */ 14, /* EGSM_MAX IL=-36 */ 14, /* EGSM_MAX IL=-37 */ 14, /* EGSM_MAX IL=-38 */ 14, /* EGSM_MAX IL=-39 */ 14, /* EGSM_MAX IL=-40 */ 14, /* EGSM_MAX IL=-41 */ 14, /* EGSM_MAX IL=-42 */ 14, /* EGSM_MAX IL=-43 */ 14, /* EGSM_MAX IL=-44 */ 14, /* EGSM_MAX IL=-45 */ 14, /* EGSM_MAX IL=-46 */ 14, /* EGSM_MAX IL=-47 */ 14, /* EGSM_MAX IL=-48 */ 14, /* EGSM_MAX IL=-49 */ 14, /* EGSM_MAX IL=-50 */ 14, /* EGSM_MAX IL=-51 */ 14, /* EGSM_MAX IL=-52 */ 14, /* EGSM_MAX IL=-53 */ 14, /* EGSM_MAX IL=-54 */ 16, /* EGSM_MAX IL=-55 */ 16, /* EGSM_MAX IL=-56 */ 18, /* EGSM_MAX IL=-57 */ 18, /* EGSM_MAX IL=-58 */ 20, /* EGSM_MAX IL=-59 */ 20, /* EGSM_MAX IL=-60 */ 22, /* EGSM_MAX IL=-61 */ 22, /* EGSM_MAX IL=-62 */ 24, /* EGSM_MAX IL=-63 */ 24, /* EGSM_MAX IL=-64 */ 26, /* EGSM_MAX IL=-65 */ 26, /* EGSM_MAX IL=-66 */ 28, /* EGSM_MAX IL=-67 */ 28, /* EGSM_MAX IL=-68 */ 30, /* EGSM_MAX IL=-69 */ 30, /* EGSM_MAX IL=-70 */ 32, /* EGSM_MAX IL=-71 */ 32, /* EGSM_MAX IL=-72 */ 34, /* EGSM_MAX IL=-73 */ 34, /* EGSM_MAX IL=-74 */ 36, /* EGSM_MAX IL=-75 */ 36, /* EGSM_MAX IL=-76 */ 38, /* EGSM_MAX IL=-77 */ 38, /* EGSM_MAX IL=-78 */ 40, /* EGSM_MAX IL=-79 */ 40, /* EGSM_MAX IL=-80 */ 40, /* EGSM_MAX IL=-81 */ 40, /* EGSM_MAX IL=-82 */ 40, /* EGSM_MAX IL=-83 */ 40, /* EGSM_MAX IL=-84 */ 40, /* EGSM_MAX IL=-85 */ 40, /* EGSM_MAX IL=-86 */ 40, /* EGSM_MAX IL=-87 */ 40, /* EGSM_MAX IL=-88 */ 40, /* EGSM_MAX IL=-89 */ 40, /* EGSM_MAX IL=-90 */ 40, /* EGSM_MAX IL=-91 */ 40, /* EGSM_MAX IL=-92 */ 40, /* EGSM_MAX IL=-93 */ 40, /* EGSM_MAX IL=-94 */ 40, /* EGSM_MAX IL=-95 */ 40, /* EGSM_MAX IL=-96 */ 40, /* EGSM_MAX IL=-97 */ 40, /* EGSM_MAX IL=-98 */ 40, /* EGSM_MAX IL=-99 */ 40, /* EGSM_MAX IL=-100 */ 40, /* EGSM_MAX IL=-101 */ 40, /* EGSM_MAX IL=-102 */ 40, /* EGSM_MAX IL=-103 */ 40, /* EGSM_MAX IL=-104 */ 40, /* EGSM_MAX IL=-105 */ 40, /* EGSM_MAX IL=-106 */ 40, /* EGSM_MAX IL=-107 */ 40, /* EGSM_MAX IL=-108 */ 40, /* EGSM_MAX IL=-109 */ 40, /* EGSM_MAX IL=-110 */ 40, /* EGSM_MAX IL=-111 */ 40, /* EGSM_MAX IL=-112 */ 40, /* EGSM_MAX IL=-113 */ 40, /* EGSM_MAX IL=-114 */ 40, /* EGSM_MAX IL=-115 */ 40, /* EGSM_MAX IL=-116 */ 40, /* EGSM_MAX IL=-117 */ 40, /* EGSM_MAX IL=-118 */ 40, /* EGSM_MAX IL=-119 */ 40 /* EGSM_MAX IL=-120 */ }, { // il2agc_av // Note this is shared between PCN and EGSM. 14, /* EGSM_MAX IL=0 */ 14, /* EGSM_MAX IL=-1 */ 14, /* EGSM_MAX IL=-2 */ 14, /* EGSM_MAX IL=-3 */ 14, /* EGSM_MAX IL=-4 */ 14, /* EGSM_MAX IL=-5 */ 14, /* EGSM_MAX IL=-6 */ 14, /* EGSM_MAX IL=-7 */ 14, /* EGSM_MAX IL=-8 */ 14, /* EGSM_MAX IL=-9 */ 14, /* EGSM_MAX IL=-10 */ 14, /* EGSM_MAX IL=-11 */ 14, /* EGSM_MAX IL=-12 */ 14, /* EGSM_MAX IL=-13 */ 14, /* EGSM_MAX IL=-14 */ 14, /* EGSM_MAX IL=-15 */ 14, /* EGSM_MAX IL=-16 */ 14, /* EGSM_MAX IL=-17 */ 14, /* EGSM_MAX IL=-18 */ 14, /* EGSM_MAX IL=-19 */ 14, /* EGSM_MAX IL=-20 */ 14, /* EGSM_MAX IL=-21 */ 14, /* EGSM_MAX IL=-22 */ 14, /* EGSM_MAX IL=-23 */ 14, /* EGSM_MAX IL=-24 */ 14, /* EGSM_MAX IL=-25 */ 14, /* EGSM_MAX IL=-26 */ 14, /* EGSM_MAX IL=-27 */ 14, /* EGSM_MAX IL=-28 */ 14, /* EGSM_MAX IL=-29 */ 14, /* EGSM_MAX IL=-30 */ 14, /* EGSM_MAX IL=-31 */ 14, /* EGSM_MAX IL=-32 */ 14, /* EGSM_MAX IL=-33 */ 14, /* EGSM_MAX IL=-34 */ 14, /* EGSM_MAX IL=-35 */ 14, /* EGSM_MAX IL=-36 */ 14, /* EGSM_MAX IL=-37 */ 14, /* EGSM_MAX IL=-38 */ 14, /* EGSM_MAX IL=-39 */ 14, /* EGSM_MAX IL=-40 */ 14, /* EGSM_MAX IL=-41 */ 14, /* EGSM_MAX IL=-42 */ 14, /* EGSM_MAX IL=-43 */ 14, /* EGSM_MAX IL=-44 */ 14, /* EGSM_MAX IL=-45 */ 14, /* EGSM_MAX IL=-46 */ 14, /* EGSM_MAX IL=-47 */ 14, /* EGSM_MAX IL=-48 */ 14, /* EGSM_MAX IL=-49 */ 14, /* EGSM_MAX IL=-50 */ 14, /* EGSM_MAX IL=-51 */ 14, /* EGSM_MAX IL=-52 */ 14, /* EGSM_MAX IL=-53 */ 14, /* EGSM_MAX IL=-54 */ 16, /* EGSM_MAX IL=-55 */ 16, /* EGSM_MAX IL=-56 */ 18, /* EGSM_MAX IL=-57 */ 18, /* EGSM_MAX IL=-58 */ 20, /* EGSM_MAX IL=-59 */ 20, /* EGSM_MAX IL=-60 */ 22, /* EGSM_MAX IL=-61 */ 22, /* EGSM_MAX IL=-62 */ 24, /* EGSM_MAX IL=-63 */ 24, /* EGSM_MAX IL=-64 */ 26, /* EGSM_MAX IL=-65 */ 26, /* EGSM_MAX IL=-66 */ 28, /* EGSM_MAX IL=-67 */ 28, /* EGSM_MAX IL=-68 */ 30, /* EGSM_MAX IL=-69 */ 30, /* EGSM_MAX IL=-70 */ 32, /* EGSM_MAX IL=-71 */ 32, /* EGSM_MAX IL=-72 */ 34, /* EGSM_MAX IL=-73 */ 34, /* EGSM_MAX IL=-74 */ 36, /* EGSM_MAX IL=-75 */ 36, /* EGSM_MAX IL=-76 */ 38, /* EGSM_MAX IL=-77 */ 38, /* EGSM_MAX IL=-78 */ 40, /* EGSM_MAX IL=-79 */ 40, /* EGSM_MAX IL=-80 */ 40, /* EGSM_MAX IL=-81 */ 40, /* EGSM_MAX IL=-82 */ 40, /* EGSM_MAX IL=-83 */ 40, /* EGSM_MAX IL=-84 */ 40, /* EGSM_MAX IL=-85 */ 40, /* EGSM_MAX IL=-86 */ 40, /* EGSM_MAX IL=-87 */ 40, /* EGSM_MAX IL=-88 */ 40, /* EGSM_MAX IL=-89 */ 40, /* EGSM_MAX IL=-90 */ 40, /* EGSM_MAX IL=-91 */ 40, /* EGSM_MAX IL=-92 */ 40, /* EGSM_MAX IL=-93 */ 40, /* EGSM_MAX IL=-94 */ 40, /* EGSM_MAX IL=-95 */ 40, /* EGSM_MAX IL=-96 */ 40, /* EGSM_MAX IL=-97 */ 40, /* EGSM_MAX IL=-98 */ 40, /* EGSM_MAX IL=-99 */ 40, /* EGSM_MAX IL=-100 */ 40, /* EGSM_MAX IL=-101 */ 40, /* EGSM_MAX IL=-102 */ 40, /* EGSM_MAX IL=-103 */ 40, /* EGSM_MAX IL=-104 */ 40, /* EGSM_MAX IL=-105 */ 40, /* EGSM_MAX IL=-106 */ 40, /* EGSM_MAX IL=-107 */ 40, /* EGSM_MAX IL=-108 */ 40, /* EGSM_MAX IL=-109 */ 40, /* EGSM_MAX IL=-110 */ 40, /* EGSM_MAX IL=-111 */ 40, /* EGSM_MAX IL=-112 */ 40, /* EGSM_MAX IL=-113 */ 40, /* EGSM_MAX IL=-114 */ 40, /* EGSM_MAX IL=-115 */ 40, /* EGSM_MAX IL=-116 */ 40, /* EGSM_MAX IL=-117 */ 40, /* EGSM_MAX IL=-118 */ 40, /* EGSM_MAX IL=-119 */ 40 /* 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 } }; T_RF_BAND rf_band[GSM_BANDS]; //uninitialised rf struct for bands /* * The const T_RF_BAND rf_{900,1800,850,1900} structures that follow * are the versions that appear in the .const section of l1_cust.obj * in the l1_custom_int.lib Leonardo blob, used successfully in leo2moko. * As revealed with objgrep, this .const section with these uncalibrated * defaults in it also appears in the moko11 binary - I'm guessing that * Openmoko probably had no source for this part either, and used TI's * standard Leonardo binary lib. The pretty C formatting presented here * is courtesy of the calextract utility. * * Late 2017 addition: when building the fw for Compal targets, we use the * ramps tables extracted from C139 firmware, so we run with Tx ramp * templates that are supposed to be correct for the hw we are running on. * * When we build the fw for FreeCalypso targets (not Compal), we use the * original ramps tables from TI which are presumed to be correct for * Openmoko's RF3166 PA: these compiled-in ramps tables end up * in the FFS of our shipping products when our production calibration * station (or more precisely, fc-rfcal-txband) issues the me 104 command. * * For the Pirelli target the compiled-in ramps tables do not matter * as we use the ramps tables from Pirelli's factory data block on this * target, courtesy of the fc-fsio pirelli-magnetite-init command. */ #if (ORDER2_TX_TEMP_CAL != 1) #error "Hard-coded T_RF_BAND structs expect ORDER2_TX_TEMP_CAL to be 1" #endif const T_RF_BAND rf_900 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 193, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 10, 0}, { 30, 0}, { 51, 0}, { 71, 0}, { 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 */ { /* levels */ { 465, 0, 0}, /* 0 */ { 465, 0, 0}, /* 1 */ { 465, 0, 0}, /* 2 */ { 465, 0, 0}, /* 3 */ { 465, 0, 0}, /* 4 */ { 465, 0, 0}, /* 5 */ { 387, 1, 0}, /* 6 */ { 324, 2, 0}, /* 7 */ { 260, 3, 0}, /* 8 */ { 210, 4, 0}, /* 9 */ { 170, 5, 0}, /* 10 */ { 138, 6, 0}, /* 11 */ { 113, 7, 0}, /* 12 */ { 92, 8, 0}, /* 13 */ { 76, 9, 0}, /* 14 */ { 62, 10, 0}, /* 15 */ { 51, 11, 0}, /* 16 */ { 42, 12, 0}, /* 17 */ { 34, 13, 0}, /* 18 */ { 27, 14, 0}, /* 19 */ { 27, 14, 0}, /* 20 */ { 27, 14, 0}, /* 21 */ { 27, 14, 0}, /* 22 */ { 27, 14, 0}, /* 23 */ { 27, 14, 0}, /* 24 */ { 27, 14, 0}, /* 25 */ { 27, 14, 0}, /* 26 */ { 27, 14, 0}, /* 27 */ { 27, 14, 0}, /* 28 */ { 27, 14, 0}, /* 29 */ { 27, 14, 0}, /* 30 */ { 27, 14, 0}, /* 31 */ }, { /* channel calibration tables */ { /* calibration table 0 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, { /* calibration table 1 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, { /* calibration table 2 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, { /* calibration table 3 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, }, { /* ramps */ #ifdef CONFIG_TARGET_COMPAL { /* profile 0 */ /* ramp-up */ { 0, 0, 2, 0, 0, 0, 0, 0, 13, 24, 24, 25, 26, 14, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 0, 0, 3, 0, 0, 0, 0, 0, 16, 24, 24, 30, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 0, 0, 3, 0, 0, 0, 0, 0, 16, 24, 24, 30, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 0, 0, 0, 4, 0, 0, 0, 0, 0, 31, 31, 30, 30, 2, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 0, 0, 0, 4, 0, 0, 0, 0, 0, 31, 31, 30, 30, 2, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 31, 31, 31, 20, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 31, 31, 31, 20, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 31, 31, 31, 20, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 31, 31, 31, 20, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 31, 31, 31, 17, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 31, 31, 31, 15, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #else { /* profile 0 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 25, 31, 30, 15, 0, 0}, /* ramp-down */ { 0, 11, 31, 31, 31, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 1, 1, 7, 16, 28, 31, 31, 13, 0, 0}, /* ramp-down */ { 0, 8, 31, 31, 31, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 1, 1, 8, 16, 29, 31, 31, 11, 0, 0}, /* ramp-down */ { 0, 8, 28, 31, 31, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 0, 6, 18, 28, 31, 31, 12, 0, 0}, /* ramp-down */ { 0, 9, 24, 31, 31, 31, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 3, 0, 5, 19, 31, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 0, 7, 18, 31, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 3, 0, 5, 20, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 10, 21, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 4, 0, 9, 23, 22, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 9, 24, 30, 31, 30, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 5, 0, 8, 21, 24, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 8, 23, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 0, 0, 0, 0, 0, 5, 0, 3, 1, 27, 22, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 8, 27, 25, 26, 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 0, 0, 0, 0, 5, 0, 0, 2, 7, 22, 23, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 7, 25, 30, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 0, 0, 0, 0, 0, 5, 0, 4, 8, 21, 21, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 8, 21, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 0, 0, 0, 0, 0, 7, 0, 0, 12, 22, 25, 31, 27, 4, 0, 0}, /* ramp-down */ { 0, 9, 12, 21, 31, 31, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 7, 0, 8, 15, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 0, 6, 14, 23, 31, 31, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 0, 0, 0, 0, 0, 20, 0, 0, 8, 15, 14, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ramp-down */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #endif }, { /* Tx temperature compensation */ { -11, 0, 0, 0}, { 9, 0, 0, 0}, { 39, 0, 0, 0}, { 59, 0, 0, 0}, { 127, 0, 0, 0}, }, }, //IQ swap SWAP_IQ_GSM, }; const T_RF_BAND rf_1800 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 188, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 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 */ { /* levels */ { 436, 0, 0}, /* 0 */ { 363, 1, 0}, /* 1 */ { 310, 2, 0}, /* 2 */ { 253, 3, 0}, /* 3 */ { 205, 4, 0}, /* 4 */ { 168, 5, 0}, /* 5 */ { 138, 6, 0}, /* 6 */ { 113, 7, 0}, /* 7 */ { 93, 8, 0}, /* 8 */ { 76, 9, 0}, /* 9 */ { 61, 10, 0}, /* 10 */ { 50, 11, 0}, /* 11 */ { 40, 12, 0}, /* 12 */ { 32, 13, 0}, /* 13 */ { 26, 14, 0}, /* 14 */ { 20, 15, 0}, /* 15 */ { 20, 15, 0}, /* 16 */ { 20, 15, 0}, /* 17 */ { 20, 15, 0}, /* 18 */ { 20, 15, 0}, /* 19 */ { 20, 15, 0}, /* 20 */ { 20, 15, 0}, /* 21 */ { 20, 15, 0}, /* 22 */ { 20, 15, 0}, /* 23 */ { 20, 15, 0}, /* 24 */ { 20, 15, 0}, /* 25 */ { 20, 15, 0}, /* 26 */ { 20, 15, 0}, /* 27 */ { 20, 15, 0}, /* 28 */ { 20, 0, 0}, /* 29 */ { 20, 0, 0}, /* 30 */ { 20, 0, 0}, /* 31 */ }, { /* channel calibration tables */ { /* calibration table 0 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 851, 128}, { 870, 128}, { 885, 128}, }, { /* calibration table 1 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 851, 128}, { 870, 128}, { 885, 128}, }, { /* calibration table 2 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 851, 128}, { 870, 128}, { 885, 128}, }, { /* calibration table 3 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 851, 128}, { 870, 128}, { 885, 128}, }, }, { /* ramps */ #ifdef CONFIG_TARGET_COMPAL { /* profile 0 */ /* ramp-up */ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 30, 30, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 30, 30, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 26, 26, 30, 30, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 30, 2, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 6, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 30, 2, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 18, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 18, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 15, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 30, 30, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #else { /* profile 0 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 3, 5, 16, 31, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 11, 31, 31, 31, 10, 11, 3, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 3, 4, 17, 30, 31, 31, 10, 0, 0}, /* ramp-down */ { 0, 10, 31, 31, 31, 13, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 4, 2, 2, 18, 31, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 10, 26, 31, 31, 16, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 3, 4, 4, 15, 31, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 9, 31, 31, 31, 13, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 4, 3, 7, 11, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 0, 8, 31, 31, 31, 11, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 0, 0, 0, 0, 0, 4, 3, 2, 7, 14, 25, 31, 31, 11, 0, 0}, /* ramp-down */ { 0, 14, 31, 31, 31, 9, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 0, 0, 0, 0, 0, 7, 1, 3, 10, 12, 25, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 7, 30, 31, 31, 14, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 0, 0, 0, 0, 3, 5, 0, 5, 8, 12, 26, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 15, 0, 8, 5, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 0, 0, 0, 0, 0, 9, 0, 3, 10, 16, 21, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 11, 28, 31, 27, 10, 11, 0, 10, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 0, 0, 0, 0, 0, 10, 0, 6, 9, 15, 22, 29, 31, 6, 0, 0}, /* ramp-down */ { 0, 9, 22, 31, 31, 12, 5, 0, 18, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 0, 0, 0, 0, 14, 0, 0, 8, 6, 20, 21, 29, 24, 6, 0, 0}, /* ramp-down */ { 0, 8, 28, 29, 26, 14, 6, 0, 17, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 0, 0, 0, 0, 16, 0, 3, 5, 8, 16, 31, 28, 18, 3, 0, 0}, /* ramp-down */ { 0, 6, 18, 26, 31, 16, 9, 7, 0, 15, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 0, 0, 0, 0, 19, 0, 3, 6, 8, 21, 24, 31, 14, 2, 0, 0}, /* ramp-down */ { 0, 0, 12, 31, 31, 27, 4, 0, 23, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 0, 0, 0, 0, 0, 14, 14, 0, 0, 24, 31, 31, 14, 0, 0, 0}, /* ramp-down */ { 0, 0, 11, 31, 31, 22, 11, 3, 19, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 0, 0, 0, 0, 0, 30, 1, 4, 8, 18, 31, 31, 5, 0, 0, 0}, /* ramp-down */ { 0, 0, 8, 31, 31, 22, 5, 0, 31, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 0, 0, 0, 0, 0, 31, 13, 0, 0, 14, 31, 31, 8, 0, 0, 0}, /* ramp-down */ { 0, 0, 4, 31, 31, 25, 5, 0, 5, 26, 1, 0, 0, 0, 0, 0}, }, #endif }, { /* Tx temperature compensation */ { -11, 0, 0, 0}, { 9, 0, 0, 0}, { 39, 0, 0, 0}, { 59, 0, 0, 0}, { 127, 0, 0, 0}, }, }, //IQ swap SWAP_IQ_DCS }; const T_RF_BAND rf_850 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 181, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 10, 0}, { 30, 0}, { 51, 0}, { 71, 0}, { 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 */ { /* levels */ { 507, 0, 0}, /* 0 */ { 507, 0, 0}, /* 1 */ { 507, 0, 0}, /* 2 */ { 507, 0, 0}, /* 3 */ { 507, 0, 0}, /* 4 */ { 507, 0, 0}, /* 5 */ { 417, 1, 0}, /* 6 */ { 350, 2, 0}, /* 7 */ { 282, 3, 0}, /* 8 */ { 226, 4, 0}, /* 9 */ { 183, 5, 0}, /* 10 */ { 148, 6, 0}, /* 11 */ { 121, 7, 0}, /* 12 */ { 98, 8, 0}, /* 13 */ { 80, 9, 0}, /* 14 */ { 66, 10, 0}, /* 15 */ { 54, 11, 0}, /* 16 */ { 44, 12, 0}, /* 17 */ { 36, 13, 0}, /* 18 */ { 29, 14, 0}, /* 19 */ { 29, 14, 0}, /* 20 */ { 29, 14, 0}, /* 21 */ { 29, 14, 0}, /* 22 */ { 29, 14, 0}, /* 23 */ { 29, 14, 0}, /* 24 */ { 29, 14, 0}, /* 25 */ { 29, 14, 0}, /* 26 */ { 29, 14, 0}, /* 27 */ { 29, 14, 0}, /* 28 */ { 29, 14, 0}, /* 29 */ { 29, 14, 0}, /* 30 */ { 29, 14, 0}, /* 31 */ }, { /* channel calibration tables */ { /* calibration table 0 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, { /* calibration table 1 */ #if 0 /* * This bogon appears in the l1_custom_int.lib Leonardo blob * and in Openmoko's official firmwares, from which it has * propagated into the /gsm/rf/tx/calchan.850 file programmed * into every produced GTA02 unit, or at least the units * without the 850 MHz band. It also appears in the MV100 version * of l1_rf12.c and in the "dead" rf_850 table in Pirelli's fw * binary. Whew! */ { 554, 130}, { 722, 128}, { 746, 129}, { 774, 131}, { 808, 132}, { 851, 134}, { 870, 138}, { 885, 140}, #else /* make it the same as the others */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, #endif }, { /* calibration table 2 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, { /* calibration table 3 */ { 40, 128}, { 80, 128}, { 124, 128}, { 586, 128}, { 661, 128}, { 736, 128}, { 885, 128}, { 1023, 128}, }, }, { /* ramps */ #ifdef CONFIG_TARGET_COMPAL { /* profile 0 */ /* ramp-up */ { 0, 0, 3, 0, 0, 0, 0, 0, 2, 31, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 20, 21, 31, 26, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 0, 0, 5, 0, 0, 0, 0, 0, 0, 31, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 0, 0, 5, 0, 0, 0, 0, 0, 0, 31, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 0, 0, 0, 5, 0, 0, 0, 0, 0, 31, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 0, 0, 0, 5, 0, 0, 0, 0, 0, 31, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 0, 0, 0, 8, 0, 0, 0, 0, 0, 28, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 0, 0, 0, 8, 0, 0, 0, 0, 0, 28, 30, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 0, 0, 0, 12, 0, 0, 0, 0, 0, 20, 30, 31, 31, 4, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 0, 0, 0, 12, 0, 0, 0, 0, 0, 20, 30, 31, 31, 4, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 0, 0, 0, 17, 0, 0, 0, 0, 0, 25, 24, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 0, 0, 0, 17, 0, 0, 0, 0, 0, 25, 24, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 0, 0, 0, 17, 0, 0, 0, 0, 0, 14, 30, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 0, 0, 0, 17, 0, 0, 0, 0, 0, 14, 30, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #else { /* profile 0 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 0, 0, 9, 18, 25, 31, 30, 15, 0, 0}, /* ramp-down */ { 0, 11, 31, 31, 31, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 1, 1, 7, 16, 28, 31, 31, 13, 0, 0}, /* ramp-down */ { 0, 8, 31, 31, 31, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 1, 1, 8, 16, 29, 31, 31, 11, 0, 0}, /* ramp-down */ { 0, 8, 28, 31, 31, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 0, 6, 18, 28, 31, 31, 12, 0, 0}, /* ramp-down */ { 0, 9, 24, 31, 31, 31, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 3, 0, 5, 19, 31, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 0, 7, 18, 31, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 3, 0, 5, 20, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 10, 21, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 4, 0, 9, 23, 22, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 9, 24, 30, 31, 30, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 5, 0, 8, 21, 24, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 8, 23, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 0, 0, 0, 0, 0, 5, 0, 3, 1, 27, 22, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 8, 27, 25, 26, 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 0, 0, 0, 0, 5, 0, 0, 2, 7, 22, 23, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 7, 25, 30, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 0, 0, 0, 0, 0, 5, 0, 4, 8, 21, 21, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 8, 21, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 0, 0, 0, 0, 0, 7, 0, 0, 12, 22, 25, 31, 27, 4, 0, 0}, /* ramp-down */ { 0, 9, 12, 21, 31, 31, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 7, 0, 8, 15, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 0, 6, 14, 23, 31, 31, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 0, 0, 0, 0, 0, 20, 0, 0, 8, 15, 14, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ramp-down */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #endif }, { /* Tx temperature compensation */ { -11, 0, 0, 0}, { 9, 0, 0, 0}, { 39, 0, 0, 0}, { 59, 0, 0, 0}, { 127, 0, 0, 0}, }, }, //IQ swap SWAP_IQ_GSM850, }; const T_RF_BAND rf_1900 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 188, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 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 */ { /* levels */ { 429, 0, 0}, /* 0 */ { 353, 1, 0}, /* 1 */ { 302, 2, 0}, /* 2 */ { 246, 3, 0}, /* 3 */ { 200, 4, 0}, /* 4 */ { 164, 5, 0}, /* 5 */ { 135, 6, 0}, /* 6 */ { 111, 7, 0}, /* 7 */ { 91, 8, 0}, /* 8 */ { 75, 9, 0}, /* 9 */ { 60, 10, 0}, /* 10 */ { 49, 11, 0}, /* 11 */ { 40, 12, 0}, /* 12 */ { 33, 13, 0}, /* 13 */ { 26, 14, 0}, /* 14 */ { 26, 15, 0}, /* 15 */ { 26, 15, 0}, /* 16 */ { 26, 15, 0}, /* 17 */ { 26, 15, 0}, /* 18 */ { 26, 15, 0}, /* 19 */ { 26, 15, 0}, /* 20 */ { 26, 15, 0}, /* 21 */ { 26, 15, 0}, /* 22 */ { 26, 15, 0}, /* 23 */ { 26, 15, 0}, /* 24 */ { 26, 15, 0}, /* 25 */ { 26, 15, 0}, /* 26 */ { 26, 15, 0}, /* 27 */ { 26, 15, 0}, /* 28 */ { 26, 0, 0}, /* 29 */ { 26, 0, 0}, /* 30 */ { 26, 0, 0}, /* 31 */ }, { /* channel calibration tables */ { /* calibration table 0 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 810, 128}, { 810, 128}, { 810, 128}, }, { /* calibration table 1 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 810, 128}, { 810, 128}, { 810, 128}, }, { /* calibration table 2 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 810, 128}, { 810, 128}, { 810, 128}, }, { /* calibration table 3 */ { 554, 128}, { 722, 128}, { 746, 128}, { 774, 128}, { 808, 128}, { 810, 128}, { 810, 128}, { 810, 128}, }, }, { /* ramps */ #ifdef CONFIG_TARGET_COMPAL { /* profile 0 */ /* ramp-up */ { 10, 0, 0, 0, 0, 0, 0, 0, 6, 15, 31, 31, 23, 12, 0, 0}, /* ramp-down */ { 31, 31, 27, 27, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 10, 0, 0, 0, 0, 0, 0, 0, 6, 15, 31, 31, 23, 12, 0, 0}, /* ramp-down */ { 31, 31, 27, 27, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 10, 0, 0, 0, 0, 0, 0, 0, 6, 15, 31, 31, 23, 12, 0, 0}, /* ramp-down */ { 31, 31, 27, 27, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 10, 0, 0, 0, 0, 0, 0, 0, 6, 15, 31, 31, 23, 12, 0, 0}, /* ramp-down */ { 31, 31, 27, 27, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 10, 0, 0, 0, 0, 0, 0, 0, 6, 15, 31, 31, 23, 12, 0, 0}, /* ramp-down */ { 31, 31, 27, 27, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 11, 0, 0, 0, 0, 0, 0, 0, 0, 15, 25, 26, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 16, 0, 0, 0, 0, 0, 0, 0, 0, 10, 30, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 16, 0, 0, 0, 0, 0, 0, 0, 0, 10, 30, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 19, 0, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 23, 0, 0, 0, 0, 0, 0, 0, 0, 25, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 23, 0, 0, 0, 0, 0, 0, 0, 0, 25, 31, 31, 31, 7, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #else { /* profile 0 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 7, 0, 0, 16, 31, 31, 31, 12, 0, 0}, /* ramp-down */ { 0, 13, 31, 31, 31, 18, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 2, 3, 4, 17, 30, 31, 31, 10, 0, 0}, /* ramp-down */ { 0, 10, 31, 31, 31, 13, 9, 3, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 4, 2, 2, 18, 31, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 10, 26, 31, 31, 16, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 3, 4, 4, 15, 31, 31, 31, 9, 0, 0}, /* ramp-down */ { 0, 9, 31, 31, 31, 13, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 0, 0, 0, 0, 0, 0, 4, 3, 0, 18, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 0, 8, 31, 31, 31, 11, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 0, 0, 0, 0, 0, 4, 3, 2, 7, 14, 25, 31, 31, 11, 0, 0}, /* ramp-down */ { 0, 14, 31, 31, 31, 9, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 0, 0, 0, 0, 0, 7, 1, 3, 10, 12, 25, 31, 31, 8, 0, 0}, /* ramp-down */ { 0, 7, 30, 31, 31, 14, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 0, 0, 0, 0, 3, 5, 0, 5, 8, 12, 26, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 7, 31, 31, 31, 15, 0, 8, 5, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 0, 0, 0, 0, 0, 9, 0, 3, 10, 16, 21, 31, 31, 7, 0, 0}, /* ramp-down */ { 0, 11, 28, 31, 27, 10, 11, 0, 10, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 0, 0, 0, 0, 0, 10, 0, 6, 9, 15, 22, 29, 31, 6, 0, 0}, /* ramp-down */ { 0, 9, 22, 31, 31, 12, 5, 0, 18, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 0, 0, 0, 0, 14, 0, 0, 4, 10, 20, 21, 29, 24, 6, 0, 0}, /* ramp-down */ { 0, 8, 28, 29, 26, 14, 6, 0, 17, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 0, 0, 0, 0, 16, 0, 3, 5, 8, 16, 31, 28, 18, 3, 0, 0}, /* ramp-down */ { 0, 6, 18, 26, 31, 16, 9, 7, 0, 15, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 0, 0, 0, 0, 19, 0, 3, 6, 8, 21, 24, 31, 14, 2, 0, 0}, /* ramp-down */ { 0, 0, 12, 31, 31, 27, 4, 0, 23, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 0, 0, 0, 0, 0, 14, 14, 0, 0, 24, 31, 31, 14, 0, 0, 0}, /* ramp-down */ { 0, 0, 11, 31, 31, 22, 11, 3, 19, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 0, 0, 0, 0, 0, 30, 1, 4, 8, 18, 31, 31, 5, 0, 0, 0}, /* ramp-down */ { 0, 0, 8, 31, 31, 22, 5, 0, 31, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 0, 0, 0, 0, 0, 30, 1, 4, 8, 18, 31, 31, 5, 0, 0, 0}, /* ramp-down */ { 0, 0, 8, 31, 31, 22, 5, 0, 31, 0, 0, 0, 0, 0, 0, 0}, }, #endif }, { /* Tx temperature compensation */ { -11, 0, 0, 0}, { 9, 0, 0, 0}, { 39, 0, 0, 0}, { 59, 0, 0, 0}, { 127, 0, 0, 0}, }, }, //IQ swap SWAP_IQ_PCS }; /*------------------------------------------*/ /* ABB Initialization words /*------------------------------------------*/ #if (ANLG_FAM == 1) UWORD16 abb[ABB_TABLE_SIZE] = { C_AFCCTLADD, // Value at reset C_VBUCTRL, // Uplink gain amp 0dB, Sidetone gain to mute C_VBDCTRL, // Downlink gain amp 0dB, Volume control 0 dB C_BBCTRL, // value at reset C_APCOFF, // value at reset C_BULIOFF, // value at reset C_BULQOFF, // value at reset C_DAI_ON_OFF, // value at reset C_AUXDAC, // value at reset C_VBCTRL, // VULSWITCH=0, VDLAUX=1, VDLEAR=1 C_APCDEL1 // value at reset }; #elif (ANLG_FAM == 2) UWORD16 abb[ABB_TABLE_SIZE] = { C_AFCCTLADD, C_VBUCTRL, C_VBDCTRL, C_BBCTRL, C_BULGCAL, C_APCOFF, C_BULIOFF, C_BULQOFF, C_DAI_ON_OFF, C_AUXDAC, C_VBCTRL1, C_VBCTRL2, C_APCDEL1, C_APCDEL2 }; #elif (ANLG_FAM == 3) UWORD16 abb[ABB_TABLE_SIZE] = { C_AFCCTLADD, C_VBUCTRL, C_VBDCTRL, C_BBCTRL, C_BULGCAL, C_APCOFF, C_BULIOFF, C_BULQOFF, C_DAI_ON_OFF, C_AUXDAC, C_VBCTRL1, C_VBCTRL2, C_APCDEL1, C_APCDEL2, C_VBPOP, C_VAUDINITD, C_VAUDCR, C_VAUOCR, C_VAUSCR, C_VAUDPLL }; #endif /*------------------------------------------*/ /* Gain table */ /* specified in the TRF6053 spec */ /* 2 dB steps - LNA always ON */ /*------------------------------------------*/ UWORD16 AGC_TABLE[AGC_TABLE_SIZE] = { 0x00, //reserved 0x01, //reserved 0x02, //reserved 0x03, //reserved 0x04, //reserved 0x05, //reserved 0x06, //14 dB 0x07, //16 0x08, //18 0x09, //20 0x0a, //22 0x0b, //24 0x0c, //26 0x0d, //28 0x0e, //30 0x0f, //32 0x10, //34 0x11, //36 0x12, //38 0x13, //40 /* 0x14, //reserved 0x15, //reserved 0x16, //reserved 0x17, //reserved 0x18, //reserved 0x19, //reserved 0x1a, //reserved 0x1b, //reserved 0x1c, //reserved 0x1d, //reserved 0x1e, //reserved 0x1f, //reserved */ }; // 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 }; #if (BOARD == 41) // table which converts ADC value into RF temperature T_TEMP temperature[TEMP_TABLE_SIZE] = { // Temperature compensation for EVARITA - S.Glock, J.Demay 04/23/2003 582, -40, 640, -10, 698, 25, 756, 60, 815, 90 }; #else // table which converts ADC value into RF temperature 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 }; #endif
