FreeCalypso > hg > fc-selenite
view src/cs/layer1/cust0/l1_rf12.c @ 208:68184e15d92c
src/cs: sync with Magnetite (TI_PROFILER support)
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 05:20:43 +0000 |
parents | ca705e7e03f8 |
children |
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 was originally taken from the MV100 * source; it perfectly matched Openmoko's binary object prior to our own * FC modification. We have made one change to it: the low_agc field in the * T_AGC structure was originally set to 6 in TI's code, which is clearly an * overlooked remnant from Clara RF, as Rita AGC cannot go below 14 dB. We * have changed this number to 14 to reflect our current hardware reality. */ 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; 14, // 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 * provide compiled-in defaults for each frequency band. The present * FreeCalypso versions of these structs began life as verbatim extracts * from Openmoko's l1_cust.obj blob made with our calextract utility, * providing undisrupted continuity from previous built-from-blobs * firmwares, but have since been modified as follows: * * - The uncalibrated default g_magic values for all bands have been * set to 200, which is the approximately correct number on FC/OM hw. * The numbers in TI's l1_cust.obj blob delivery were quite obviously * unchanged from Clara RF, and probably weren't even correct for the * original Leonardo, let alone OM. * * - The uncalibrated default Rx and Tx channel calibration tables * have been cleaned up. The only sensible default is to set all * channel corrections to neutral (0 for Rx and 128 for Tx), which the * original blob versions already did, but many of those copy-n-pasted * tables had ARFCNs that are invalid for the band they are supposed * to apply to. The latter bug has been fixed. * * - For the Tx ramps tables we now select between 4 different versions * at compile time: the original version from OM is used for our own * OM-based FC hardware, whereas Compal-targeting builds use one of 3 * different Compal versions: one version for C11x/12x and C155/156 * (SKY77324 RF PA), a different version for C139/140 (SKY77325 RF PA), * and yet another version for SE J100 (SKY77328 RF PA). * * NONE of these compiled-in tables matter if you are running the fw * on an Openmoko, Pirelli or FreeCalypso device that has already been * fully calibrated at the respective factory: in all of these cases * all of these compiled-in tables are fully overridden by the factory- * calibrated ones read from FFS, or in the Pirelli DP-L10 case, * read from Pirelli's factory data block and written into FreeCalypso FFS * by the pirelli-magnetite-init command you are supposed to issue * in fc-fsio when you set up FC on this target. Instead these * compiled-in tables matter in the following two use cases: * * - When FC fw is run on a Mot C1xx or SE J100 phone, our c1xx-calextr tool * generates Rx agcparams, Rx channel calibration and Tx levels tables * from Compal's factory bits, but for the Tx ramp templates the tables * compiled into our fw are used - hence these tables need to be correct * for the target in question, which is why we have extracted and included * the tables from 3 different Compal official fw versions. We also * weren't able to grok Compal's way of doing Tx channel corrections, hence * we run without those - thus we rely on the compiled-in channel calibration * tables providing a neutral set of correction values. * * - Firmware images that are programmed into newly made FreeCalypso hw * devices in the factory production environment prior to RF calibration * need to have correct Tx ramp template tables in them, as well as * indices in the Tx levels tables pointing to these ramps, plus the * other 3 values in the T_RX_CAL_PARAMS structure besides g_magic: * while all other table bits are generated from scratch by our * fc-rfcal-rxband and fc-rfcal-txband programs without regard to * any previous compiled-in values, the just-listed tables and fields * are unchanged by the calibration procedure and must already be * correct prior to it. * * The compiled-in default Tx levels tables have been kept unchanged * from the original extracts from OM's l1_cust.obj blob. There is * no point in changing these tables because they are nothing but dummy * placeholders in reality: these tables absolutely MUST be calibrated * for the individual device unit before that device can be used safely * on public land mobile networks (if you are not doing your own RF * calibration, you need to extract and apply the original manufacturer's * calibration records, like our c1xx-calextr and pirelli-magnetite-init * tools do), and if the compiled-in tables are nothing but placeholders, * it would be rather moot to argue whether set of numbers A or set of * numbers B would make a better placeholder. * * All of our Tx ramp templates (the ones used on our own FCDEV3B and all 3 * of our Compal versions) have been verified with our CMU200 RF tester and * found to produce correct in-tolerance ramps on all tested targets (FCDEV3B, * EU-band Mot C118, US-band Mot C139, EU-band Mot C140, US-band Mot C155 and * EU-band SE J100i) for each power control level in all supported bands. */ const T_RF_BAND rf_900 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 200, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 10, 0}, { 30, 0}, { 51, 0}, { 71, 0}, { 90, 0}, { 112, 0}, { 124, 0}, { 991, 0}, { 1009, 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 */ #if defined(CONFIG_TARGET_C11X) || defined(CONFIG_TARGET_C155) /* from Motorola R87.2.1.03.m0 fw for the C11x family */ { /* profile 0 */ /* ramp-up */ { 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 31, 5, 0}, /* ramp-down */ { 31, 31, 28, 15, 2, 0, 19, 2, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 26, 29, 8, 0}, /* ramp-down */ { 31, 31, 29, 14, 2, 1, 15, 2, 3, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 31, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 27, 24, 1, 0}, /* ramp-down */ { 30, 31, 25, 14, 2, 2, 15, 7, 2, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 31, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 14, 29, 1, 0}, /* ramp-down */ { 31, 29, 31, 13, 2, 2, 15, 2, 3, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 31, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 17, 19, 0, 0}, /* ramp-down */ { 31, 30, 30, 15, 1, 2, 17, 2, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 31, 31, 7, 0, 0, 0, 0, 0, 0, 0, 0, 31, 19, 7, 2, 0}, /* ramp-down */ { 29, 31, 29, 16, 4, 0, 14, 2, 1, 2, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 31, 31, 16, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 20, 0, 0}, /* ramp-down */ { 19, 26, 26, 28, 10, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 31, 31, 25, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 8, 2, 0}, /* ramp-down */ { 19, 28, 31, 24, 4, 0, 19, 3, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 31, 31, 31, 2, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0, 0}, /* ramp-down */ { 19, 28, 31, 24, 4, 0, 17, 5, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 31, 31, 31, 9, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0}, /* ramp-down */ { 18, 25, 28, 31, 2, 2, 19, 3, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 31, 31, 31, 16, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0}, /* ramp-down */ { 14, 21, 24, 29, 6, 2, 23, 5, 4, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 31, 31, 31, 22, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 1, 0}, /* ramp-down */ { 8, 26, 26, 28, 12, 12, 5, 5, 0, 6, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 31, 31, 31, 27, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0}, /* ramp-down */ { 8, 14, 27, 30, 20, 19, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0}, /* ramp-down */ { 9, 10, 15, 26, 25, 10, 17, 13, 3, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 31, 31, 30, 30, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ramp-down */ { 0, 4, 15, 21, 21, 21, 21, 15, 10, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 31, 31, 30, 30, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ramp-down */ { 0, 4, 15, 21, 21, 21, 21, 15, 10, 0, 0, 0, 0, 0, 0, 0}, }, #elif defined(CONFIG_TARGET_C139) /* from Mot C139 official fw */ { /* 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}, }, #elif defined(CONFIG_TARGET_J100) /* from SE J100 fw version R1C004 */ { /* profile 0 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 19, 31, 31, 31, 15, 0, 0, 0}, /* ramp-down */ { 25, 25, 31, 16, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 27, 31, 31, 8, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 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 */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 14 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 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}, }, #else /* TI/Openmoko version */ { /* 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 */ #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 */ 200, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 548, 0}, { 622, 0}, { 680, 0}, { 745, 0}, { 812, 0}, { 860, 0}, { 885, 0}, { 0, 0}, { 0, 0}, { 0, 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 */ #if defined(CONFIG_TARGET_C11X) || defined(CONFIG_TARGET_C155) /* from Motorola R87.2.1.03.m0 fw for the C11x family */ { /* profile 0 */ /* ramp-up */ { 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 27, 4, 0}, /* ramp-down */ { 28, 31, 18, 8, 8, 13, 9, 13, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 24, 0, 0}, /* ramp-down */ { 10, 30, 30, 20, 8, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 31, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 16, 0, 0}, /* ramp-down */ { 10, 30, 31, 24, 31, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 31, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 23, 19, 0, 0}, /* ramp-down */ { 31, 14, 31, 5, 24, 13, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 10, 21, 31, 0, 0}, /* ramp-down */ { 20, 22, 31, 10, 22, 13, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 31, 31, 13, 0, 0, 0, 0, 0, 0, 0, 0, 31, 22, 0, 0, 0}, /* ramp-down */ { 22, 14, 26, 22, 22, 17, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 31, 31, 21, 0, 0, 0, 0, 0, 0, 0, 0, 24, 21, 0, 0, 0}, /* ramp-down */ { 10, 31, 31, 25, 17, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 31, 31, 28, 0, 0, 0, 0, 0, 0, 0, 0, 28, 10, 0, 0, 0}, /* ramp-down */ { 17, 24, 28, 21, 24, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 27, 4, 0, 0, 0}, /* ramp-down */ { 9, 23, 31, 24, 24, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 31, 31, 31, 12, 0, 0, 0, 0, 0, 0, 0, 0, 13, 10, 0, 0}, /* ramp-down */ { 9, 23, 31, 24, 24, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 31, 31, 31, 17, 0, 0, 0, 0, 0, 0, 0, 0, 12, 6, 0, 0}, /* ramp-down */ { 10, 10, 31, 31, 24, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 31, 31, 31, 21, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0}, /* ramp-down */ { 4, 14, 31, 31, 26, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 31, 31, 31, 27, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0}, /* ramp-down */ { 2, 14, 31, 31, 28, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 31, 31, 31, 29, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0}, /* ramp-down */ { 0, 6, 14, 31, 31, 24, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 31, 31, 31, 31, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0}, /* ramp-down */ { 2, 4, 4, 18, 31, 31, 24, 5, 5, 4, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 31, 31, 31, 31, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ramp-down */ { 3, 2, 2, 22, 22, 21, 21, 21, 9, 5, 0, 0, 0, 0, 0, 0}, }, #elif defined(CONFIG_TARGET_C139) /* from Mot C139 official fw */ { /* 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}, }, #elif defined(CONFIG_TARGET_J100) /* from SE J100 fw version R1C004 */ { /* profile 0 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 19, 31, 31, 31, 15, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 19, 31, 31, 31, 15, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 31, 31, 4, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 31, 31, 4, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 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 9 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 10 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 12 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #else /* TI/Openmoko version */ { /* 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 */ #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 }; const T_RF_BAND rf_850 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 200, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 138, 0}, { 157, 0}, { 178, 0}, { 199, 0}, { 217, 0}, { 239, 0}, { 251, 0}, { 0, 0}, { 0, 0}, { 0, 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 */ { 134, 128}, { 150, 128}, { 166, 128}, { 182, 128}, { 197, 128}, { 213, 128}, { 229, 128}, { 251, 128}, }, { /* calibration table 1 */ { 134, 128}, { 150, 128}, { 166, 128}, { 182, 128}, { 197, 128}, { 213, 128}, { 229, 128}, { 251, 128}, }, { /* calibration table 2 */ { 134, 128}, { 150, 128}, { 166, 128}, { 182, 128}, { 197, 128}, { 213, 128}, { 229, 128}, { 251, 128}, }, { /* calibration table 3 */ { 134, 128}, { 150, 128}, { 166, 128}, { 182, 128}, { 197, 128}, { 213, 128}, { 229, 128}, { 251, 128}, }, }, { /* ramps */ #if defined(CONFIG_TARGET_C11X) || defined(CONFIG_TARGET_C155) /* from Motorola R87.2.1.03.m0 fw for the C11x family */ { /* profile 0 */ /* ramp-up */ { 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 31, 31, 31, 3, 0}, /* ramp-down */ { 31, 31, 18, 22, 6, 10, 2, 1, 1, 3, 3, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 0, 0}, /* ramp-down */ { 31, 31, 31, 6, 8, 8, 9, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 29, 0, 0}, /* ramp-down */ { 31, 25, 21, 20, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 31, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 22, 0, 0}, /* ramp-down */ { 27, 28, 23, 19, 13, 14, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 31, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 14, 0, 0}, /* ramp-down */ { 31, 21, 31, 2, 31, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 31, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 31, 5, 0, 0}, /* ramp-down */ { 21, 31, 31, 2, 31, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 31, 31, 7, 0, 0, 0, 0, 0, 0, 0, 0, 31, 28, 0, 0, 0}, /* ramp-down */ { 31, 31, 28, 14, 3, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 31, 31, 16, 0, 0, 0, 0, 0, 0, 0, 0, 31, 19, 0, 0, 0}, /* ramp-down */ { 20, 30, 30, 10, 28, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 31, 31, 26, 0, 0, 0, 0, 0, 0, 0, 0, 31, 9, 0, 0, 0}, /* ramp-down */ { 20, 26, 26, 18, 18, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 31, 31, 31, 2, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0, 0}, /* ramp-down */ { 16, 16, 26, 26, 26, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 31, 31, 31, 11, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0}, /* ramp-down */ { 10, 12, 31, 26, 29, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 31, 31, 31, 18, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0}, /* ramp-down */ { 2, 20, 31, 26, 31, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 31, 31, 31, 25, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0}, /* ramp-down */ { 2, 20, 31, 26, 31, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 31, 31, 31, 30, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0}, /* ramp-down */ { 1, 16, 31, 31, 31, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0}, /* ramp-down */ { 4, 8, 10, 20, 31, 31, 20, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 31, 31, 31, 31, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0}, /* ramp-down */ { 4, 8, 10, 20, 31, 31, 20, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, #elif defined(CONFIG_TARGET_C139) /* from Mot C139 official fw */ { /* 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}, }, #elif defined(CONFIG_TARGET_J100) /* from SE J100 fw version R1C004 */ { /* profile 0 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 19, 31, 31, 31, 15, 0, 0, 0}, /* ramp-down */ { 15, 31, 31, 20, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 20, 31, 31, 15, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 25, 31, 31, 10, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0, 0}, /* ramp-down */ { 29, 31, 31, 31, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 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 */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 13 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 14 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 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}, }, #else /* TI/Openmoko version */ { /* 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 */ #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, }; const T_RF_BAND rf_1900 = { { /* Rx structure */ { /* T_RX_CAL_PARAMS */ 200, 40, 40, 44, }, { /* T_RF_AGC_BANDs */ { 548, 0}, { 622, 0}, { 680, 0}, { 745, 0}, { 795, 0}, { 810, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 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 */ #if defined(CONFIG_TARGET_C11X) || defined(CONFIG_TARGET_C155) /* from Motorola R87.2.1.03.m0 fw for the C11x family */ { /* profile 0 */ /* ramp-up */ { 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 17, 0, 0}, /* ramp-down */ { 31, 31, 15, 25, 8, 10, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 31, 8, 0, 0, 0, 0, 0, 0, 0, 0, 5, 31, 31, 22, 0, 0}, /* ramp-down */ { 31, 21, 31, 20, 4, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 31, 16, 0, 0, 0, 0, 0, 0, 0, 0, 6, 31, 31, 13, 0, 0}, /* ramp-down */ { 30, 31, 24, 31, 10, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 31, 24, 0, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 8, 0, 0}, /* ramp-down */ { 31, 31, 19, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 31, 31, 2, 0, 0, 0, 0, 0, 0, 0, 6, 31, 22, 5, 0, 0}, /* ramp-down */ { 31, 31, 14, 24, 5, 13, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 31, 31, 10, 0, 0, 0, 0, 0, 0, 0, 0, 31, 25, 0, 0, 0}, /* ramp-down */ { 31, 19, 20, 8, 24, 17, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 31, 30, 19, 0, 0, 0, 0, 0, 0, 0, 0, 31, 17, 0, 0, 0}, /* ramp-down */ { 2, 31, 31, 25, 17, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 31, 31, 26, 0, 0, 0, 0, 0, 0, 0, 0, 31, 9, 0, 0, 0}, /* ramp-down */ { 14, 24, 25, 30, 24, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 31, 31, 31, 2, 0, 0, 0, 0, 0, 0, 0, 31, 2, 0, 0, 0}, /* ramp-down */ { 12, 17, 27, 31, 24, 13, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 9 */ /* ramp-up */ { 31, 31, 30, 10, 0, 0, 0, 0, 0, 0, 0, 25, 1, 0, 0, 0}, /* ramp-down */ { 21, 31, 31, 26, 13, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 10 */ /* ramp-up */ { 31, 31, 31, 11, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0}, /* ramp-down */ { 14, 31, 31, 28, 13, 5, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 11 */ /* ramp-up */ { 31, 31, 31, 19, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0}, /* ramp-down */ { 6, 14, 31, 31, 24, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 12 */ /* ramp-up */ { 31, 31, 31, 25, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0}, /* ramp-down */ { 6, 14, 31, 31, 24, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 31, 31, 31, 29, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0}, /* ramp-down */ { 6, 14, 31, 31, 24, 13, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 31, 31, 31, 31, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0}, /* ramp-down */ { 3, 16, 31, 31, 24, 14, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ramp-down */ { 4, 6, 21, 21, 21, 21, 15, 15, 4, 0, 0, 0, 0, 0, 0, 0}, }, #elif defined(CONFIG_TARGET_C139) /* from Mot C139 official fw */ { /* 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}, }, #elif defined(CONFIG_TARGET_J100) /* from SE J100 fw version R1C004 */ { /* profile 0 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 1 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 24, 31, 31, 31, 10, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 2 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 19, 31, 31, 31, 15, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 3 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 4 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 14, 31, 31, 31, 20, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 5 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 6 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 31, 0, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 7 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 31, 31, 31, 5, 0, 0}, /* ramp-down */ { 31, 31, 31, 4, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 8 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 29, 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 9 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 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 10 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 24, 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 11 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 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 12 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 13 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 31, 31, 31, 25, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 14 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, { /* profile 15 */ /* ramp-up */ { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 31, 31, 31, 0, 0}, /* ramp-down */ { 31, 31, 31, 31, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, }, #else /* TI/Openmoko version */ { /* 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 */ #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 }; /*------------------------------------------*/ /* 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