FreeCalypso > hg > freecalypso-sw
diff gsm-fw/L1/tpudrv/tpudrv61.h @ 576:660e83f13cab
gsm-fw/L1/tpudrv: tpudrv.c and tpudrv61.[ch] imported from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Mon, 11 Aug 2014 04:45:42 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/L1/tpudrv/tpudrv61.h Mon Aug 11 04:45:42 2014 +0000 @@ -0,0 +1,459 @@ +/****************** Revision Controle System Header *********************** + * GSM Layer 1 software + * Copyright (c) Texas Instruments 1998 + * + * Filename tpudrv61.h + * Version 1.0 + * Date June 1st, 2005 + * + ****************** Revision Controle System Header ***********************/ +//FLEXIBLE ADC... +#undef VARIABLE_ADC_ON_TX +//VARIABLE_ADC_ON_TX- represents the number of symbols before TRF_T11 (the time where the PA is disabled) +//the ADC conversion should be performed. VARIABLE_ADC_ON_TX- has a valid range from 14 to 155 symbols. +//Hence, to use the fix, VARIABLE_ADC_ON_TX- must be defined to a value between 14 and 155, compile time. +//This will cause the ADC conversion offset (TRF_T9) to be calculated by the following equation: +//TRF_T9 = TRF_T11-VARIABLE_ADC_ON_TX*4 +//The customer is expected to use a value of 76. If this compile flag is not set, the ADC conversion offset (TRF_T9) +// is set to a default value of 14 symbols before TXEN is disabled (i.e. the default timing is 40 qbit before the +// TX down time anchor and 20 qb before the last tail bit). +#define VARIABLE_ADC_ON_TX 76 + +#if(L1_RF_KBD_FIX == 1) +// Keyboard disable config: +#define L1_KBD_DIS_RX_NB 1 +#define L1_KBD_DIS_RX_SB 1 +#define L1_KBD_DIS_RX_FB 1 +#define L1_KBD_DIS_RX_FB26 1 +#define L1_KBD_DIS_RX_MS 1 +#define L1_KBD_DIS_TX_NB 1 +#define L1_KBD_DIS_TX_RA 1 + +#define KBD_DISABLED 1 + +#endif/*(L1_RF_KBD_FIX == 1)*/ + +//Fixed declaration of script numbers +#define DRP_REG_ON (0x0000) +#define DRP_TX_ON (0x0001) +#define DRP_RX_ON (0x0002) +#define DRP_TEMP_CONV (0x0003) +#define DRP_ROC (0x0004) +#define DRP_REG_OFF (0x0007) +#define DRP_AFC (0x000D) +#define DRP_IDLE (0x000F) + +#define SCRIPT_EN (0x3080) + +#define START_SCRIPT(script_nb) (SCRIPT_EN | script_nb) + +// IF settings +#define IF_100KHZ_DRP 0 +#define IF_120KHZ_DRP 1 + +// Gain Compensation Enable/Disable +#define GAIN_COMP_DISABLE (0x0) //Default +#define GAIN_COMP_ENABLE (0x1) + +// AFE Gains Definition +#define AFE_LOW_GAIN (0x0) // 11 dB +#define AFE_HIGH_GAIN (0x1) // 38 dB + +// ABE Gains Definition +#define ABE_0_DB (0x0) +#define ABE_2_DB (0x1) +#define ABE_5_DB (0x2) +#define ABE_8_DB (0x3) +#define ABE_11_DB (0x4) +#define ABE_14_DB (0x5) +#define ABE_17_DB (0x6) +#define ABE_20_DB (0x7) +#define ABE_23_DB (0x8) + +// Switched Cap Filter Corner Freq Defition +#define SCF_270KHZ 0 +#define SCF_400KHZ 1 + +// Retiming definition +#define RETIM_DISABLE (0x0000) +#define RETIM_TX_ONLY (0x0001) +#define RETIM_RX_ONLY (0x0002) +#define RETIM_FULL (0x0003) + +// IF settings for DSP +#define IF_100KHZ_DSP 2 +#define IF_120KHZ_DSP 1 + +// DCO algo settings +#define DCO_IF_100KHZ 1 +#define DCO_IF_0KHZ 2 +#define DCO_IF_0KHZ_100KHZ 3 +#define DCO_NONE 0 + + +//--- Configuration values +//- Select the RF PG (x10), i.e. 10 for 1.0, 11 for 1.1 or 20 for 2.0 + // This is also used in l1_rf14h to select the SWAP_IQ + + + //- Bit definitions for TST register programings, etc +#define BIT_0 0x000001 +#define BIT_1 0x000002 +#define BIT_2 0x000004 +#define BIT_3 0x000008 +#define BIT_4 0x000010 +#define BIT_5 0x000020 +#define BIT_6 0x000040 +#define BIT_7 0x000080 +#define BIT_8 0x000100 +#define BIT_9 0x000200 +#define BIT_10 0x000400 +#define BIT_11 0x000800 +#define BIT_12 0x001000 +#define BIT_13 0x002000 +#define BIT_14 0x004000 +#define BIT_15 0x008000 +#define BIT_16 0x010000 +#define BIT_17 0x020000 +#define BIT_18 0x040000 +#define BIT_19 0x080000 +#define BIT_20 0x100000 +#define BIT_21 0x200000 +#define BIT_22 0x400000 +#define BIT_23 0x800000 + + +//- Base REGISTER definitions - + +//- RF signals connected to TSPACT - +#define RX_START BIT_0 // RX_START of DRP2 +#define TX_START BIT_1 // TX_START of DRP2 modulator +#define START_APC BIT_2 // Start of the APC module +#define LDO_EN BIT_3 // Activation of the internal LDO inside the APC bloc +#if(L1_RF_KBD_FIX == 1) +#define KBD_DIS_TSPACT BIT_4 // Disable keyboard +#endif +#define APC_EN BIT_5 // Enable of the APC module +#define START_ADC BIT_0 // Activation of the Triton ADC +#define B3 BIT_3 // Control of the RFMD TX module +#define B1 BIT_5 // Control of the RFMD TX module +#define TX_EN BIT_6 // Control of the RFMD TX module +#define B2 BIT_7 // Control of the RFMD TX module + +#define TXM_SLEEP (0) // To avoid leakage during Deep-Seep + +// DRP write register +#define OCP_DATA_MSB 0x05 +#define OCP_DATA_LSB 0x04 +#define OCP_ADDRESS_MSB 0x0B +#define OCP_ADDRESS_LSB 0x0A +#define OCP_ADDRESS_START 0x01 + +// TSPACT +#define REG_SPI_ACT_U 0x07 +#define REG_SPI_ACT_L 0x06 + +// 3-band config +// RX_UP/DOWN and TX_UP/DOWN +#define RU_900 ( B1 | B3 ) +#define RD_900 ( B1 | B3 ) +#define TU_900 ( TX_EN | B1 | B3 ) +#define TD_900 ( B1 | B3 ) + +#define RU_850 ( B3 ) +#define RD_850 ( B3 ) +#define TU_850 ( TX_EN | B3 ) +#define TD_850 ( B3 ) + +#define RU_1800 ( B2 | B3 ) +#define RD_1800 ( B2 | B3 ) +#define TU_1800 ( TX_EN | B1 | B2 | B3 ) +#define TD_1800 ( B2 | B3 ) + + +#define RU_1900 ( B1 | B2 | B3 ) +#define RD_1900 ( B1 | B2 | B3 ) +#define TU_1900 ( TX_EN | B1 | B2 | B3 ) +#define TD_1900 ( B1 | B2 | B3 ) + + + + +//--- TIMINGS ---------------------------------------------------------- + +/*------------------------------------------*/ +/* Download delay values */ +/*------------------------------------------*/ +// 1 qbit = 12/13 usec (~0.9230769), i.e. 200 usec is ~ 217 qbit (200 * 13 / 12) + +#define T TPU_CLOCK_RANGE + + +// - TPU instruction into TSP timings --- +// 1 tpu instruction = 1 qbit +#define DLT_1 1 // 1 tpu instruction = 1 qbit +#define DLT_2 2 // 2 tpu instruction = 2 qbit +#define DLT_3 3 // 3 tpu instruction = 3 qbit +#define DLT_4 4 // 4 tpu instruction = 4 qbit + +// - TPU command execution + serialization length --- +#define DLT_4B 5 // 5*move + + +// - INIT (delta or DLT) timings --- +#define DLT_I1 5 // Time required to set EN high before RF_SER_OFF -> RF_SER_ON +#define DLT_I2 200 // Regulators turn on time +#define DLT_I3 5 // Time required to set RF_SER_ON +#define DLT_I4 110 // Regulator Turn-ON time + + +// - tdt & rdt --- +// MAX GSM (not GPRS) rdt and tdt values are... +//#define rdt 380 // MAX GSM rx delta timing +//#define tdt 400 // MAX GSM tx delta timing +// but current rdt and tdt values are... +#define rdt 0 // rx delta timing +#define tdt 0 // tx delta timing + +// - RX timings --- +// - RX down: +// Flexible TPU Timings .... + +/************************************/ +/* Timing for TPU prog */ +/************************************/ +#if ( L1_TPU_DEV == 0) + #define APC_RAMP_UP_TIME 20 // maximum time for ramp up + #define APC_RAMP_DELAY 6 // minimum ramp up delay APCDEL + #define APC_RAMP_DOWN_TIME 20 // maximum ramp down time +#endif + + +#if ( L1_TPU_DEV == 1) + extern WORD16 rf_tx_tpu_timings[]; + extern WORD16 rf_rx_tpu_timings[]; + + //define for TPU Dev Mode via the arrays so that they can be tweaked later for Rx & Tx + + + + #define TRF_T1 rf_tx_tpu_timings[0] + #define TRF_T2 rf_tx_tpu_timings[1] + #define TRF_T3 rf_tx_tpu_timings[2] + #define TRF_T4 rf_tx_tpu_timings[3] + #define TRF_T5 rf_tx_tpu_timings[4] + #define TRF_T6 rf_tx_tpu_timings[5] + #define TRF_T7 rf_tx_tpu_timings[6] + #define TRF_T8 rf_tx_tpu_timings[7] + #define TRF_T9 rf_tx_tpu_timings[8] + #define TRF_T10 rf_tx_tpu_timings[9] + #define TRF_T11 rf_tx_tpu_timings[10] + #define TRF_T12 rf_tx_tpu_timings[11] + #define TRF_T13 rf_tx_tpu_timings[12] + #define TRF_T14 rf_tx_tpu_timings[13] + #define TRF_T15 rf_tx_tpu_timings[14] + #define TRF_T16 rf_tx_tpu_timings[15] + #define TRF_T17 rf_tx_tpu_timings[16] + #define TRF_T18 rf_tx_tpu_timings[17] + #define TRF_T19 rf_tx_tpu_timings[18] + #define TRF_T20 rf_tx_tpu_timings[19] + #define TRF_T21 rf_tx_tpu_timings[20] + #define TRF_T22 rf_tx_tpu_timings[21] + #define TRF_T23 rf_tx_tpu_timings[22] + #define TRF_T24 rf_tx_tpu_timings[23] + #define TRF_T25 rf_tx_tpu_timings[24] + #define TRF_T26 rf_tx_tpu_timings[25] + #define TRF_T27 rf_tx_tpu_timings[26] + #define TRF_T28 rf_tx_tpu_timings[27] + #define TRF_T29 rf_tx_tpu_timings[28] + #define TRF_T30 rf_tx_tpu_timings[29] + #define TRF_T31 rf_tx_tpu_timings[30] + #define TRF_T32 rf_tx_tpu_timings[31] + + + #define TRF_R1 rf_rx_tpu_timings[0] + #define TRF_R2 rf_rx_tpu_timings[1] + #define TRF_R3 rf_rx_tpu_timings[2] + #define TRF_R4 rf_rx_tpu_timings[3] + #define TRF_R5 rf_rx_tpu_timings[4] + #define TRF_R6 rf_rx_tpu_timings[5] + #define TRF_R7 rf_rx_tpu_timings[6] + #define TRF_R8 rf_rx_tpu_timings[7] + #define TRF_R9 rf_rx_tpu_timings[8] + #define TRF_R10 rf_rx_tpu_timings[9] + #define TRF_R11 rf_rx_tpu_timings[10] + #define TRF_R12 rf_rx_tpu_timings[11] + #define TRF_R13 rf_rx_tpu_timings[12] + #define TRF_R14 rf_rx_tpu_timings[13] + #define TRF_R15 rf_rx_tpu_timings[14] + #define TRF_R16 rf_rx_tpu_timings[15] + #define TRF_R17 rf_rx_tpu_timings[16] + #define TRF_R18 rf_rx_tpu_timings[17] + #define TRF_R19 rf_rx_tpu_timings[18] + #define TRF_R20 rf_rx_tpu_timings[19] + #define TRF_R21 rf_rx_tpu_timings[20] + #define TRF_R22 rf_rx_tpu_timings[21] + #define TRF_R23 rf_rx_tpu_timings[22] + #define TRF_R24 rf_rx_tpu_timings[23] + #define TRF_R25 rf_rx_tpu_timings[24] + #define TRF_R26 rf_rx_tpu_timings[25] + #define TRF_R27 rf_rx_tpu_timings[26] + #define TRF_R28 rf_rx_tpu_timings[27] + #define TRF_R29 rf_rx_tpu_timings[28] + #define TRF_R30 rf_rx_tpu_timings[29] + #define TRF_R31 rf_rx_tpu_timings[30] + #define TRF_R32 rf_rx_tpu_timings[31] + + //Flexi ABB Delays + // The existing #defines in the code would have to be removed and the definitions done here. + + extern WORD16 rf_flexi_abb_delays[]; + + + + #ifdef APC_RAMP_UP_TIME + #undef APC_RAMP_UP_TIME + #endif + #define APC_RAMP_UP_TIME rf_flexi_abb_delays[1] //default 32 + + + #ifdef DL_ABB_DELAY + #undef DL_ABB_DELAY + #endif + #define DL_ABB_DELAY (rf_flexi_abb_delays[2]) // ( 32L + 4L) + + + #ifdef UL_ABB_DELAY + #undef UL_ABB_DELAY + #endif + #define UL_ABB_DELAY rf_flexi_abb_delays[3] //12 + + #ifdef UL_DELAY_1RF + #undef UL_DELAY_1RF + #endif + #define UL_DELAY_1RF rf_flexi_abb_delays[4] //0 + + #ifdef UL_DELAY_2RF + #undef UL_DELAY_2RF + #endif + #define UL_DELAY_2RF rf_flexi_abb_delays[5] //0 + + #ifdef APCDEL_DOWN + #undef APCDEL_DOWN + #endif + #define APCDEL_DOWN rf_flexi_abb_delays[6] //3//3 + + #ifdef APCDEL_UP + #undef APCDEL_UP + #endif + #define APCDEL_UP rf_flexi_abb_delays[7] //24 + + #ifdef GUARD_BITS + #undef GUARD_BITS + #endif + #define GUARD_BITS rf_flexi_abb_delays[8] //7 + + #ifdef SETUP_AFC_AND_RF + #undef SETUP_AFC_AND_RF + #endif + #define SETUP_AFC_AND_RF rf_flexi_abb_delays[9] //6 + + #ifdef SERV_OFFS_REST_LOAD + #undef SERV_OFFS_REST_LOAD + #endif + #define SERV_OFFS_REST_LOAD rf_flexi_abb_delays[10] // 1L + + #ifdef TA_MAX + #undef TA_MAX + #endif + #define TA_MAX rf_flexi_abb_delays[11] // ( 63L * 4L ) + + #ifdef PRG_TX + #undef PRG_TX + #endif + #define PRG_TX rf_flexi_abb_delays[12] // (DL_DELAY_RF + UL_DELAY_2RF + (GUARD_BITS*4) + UL_DELAY_1RF + UL_ABB_DELAY) + + #ifdef EPSILON_OFFS + #undef EPSILON_OFFS + #endif + #define EPSILON_OFFS rf_flexi_abb_delays[14] // 2L + + #ifdef EPSILON_MEAS + #undef EPSILON_MEAS + #endif + #define EPSILON_MEAS rf_flexi_abb_delays[15]//20L + + #ifdef EPSILON_SYNC + #undef EPSILON_SYNC + #endif + #define EPSILON_SYNC rf_flexi_abb_delays[16] //10L + + #ifdef APC_RAMP_DOWN_TIME + #undef APC_RAMP_DOWN_TIME + #endif + #define APC_RAMP_DOWN_TIME rf_flexi_abb_delays[17] //32 + + #ifdef APC_RAMP_DELAY + #undef APC_RAMP_DELAY + #endif + #define APC_RAMP_DELAY rf_flexi_abb_delays[18] //6 +#endif //L1_TPU_DEV +// End Flexible TPU Timings, ABB DElays + +#if ( L1_TPU_DEV == 0) +// - RX timings --- +// - RX down: +#if (L1_MADC_ON == 1) +#define TRF_R8 (PROVISION_TIME - 170 - DLT_4B - rdt ) // for doing MADC +#endif +// The times below are offsets to when BDLENA goes down +#define TRF_R7 ( 2 - DLT_4B ) // Power down RF (idle script) +// TRF_R6 not use, warning timing TRF_R6 > TRF_R7 +#define TRF_R6 ( -20 - DLT_4B) // Disable RX Start and RF switch + +// - RX up: +// The times below are offsets to when BDLENA goes high +// Burst data comes here +#define TRF_R5 (PROVISION_TIME - 19 - DLT_1 ) // Enable RX_START +#define TRF_R4 (PROVISION_TIME - 39 - DLT_1 - rdt ) // Set RF switch for RX in selected band +#if(L1_RF_KBD_FIX == 1) +#define TRF_R3_1 (PROVISION_TIME - 89 - DLT_1 - rdt ) // Disable keyboard +#endif +#define TRF_R3 (PROVISION_TIME - 190 - DLT_4B - rdt ) // RX_ON +#define TRF_R2 (PROVISION_TIME - 197 - DLT_4B - rdt ) // Select the AGC & LNA gains +#define TRF_R1 (PROVISION_TIME - 203 - DLT_4B - rdt ) // Set RX Synth channel + + + +// - TX timings --- +// - TX down: +// The times below are offsets to when TXSTART goes down +#define TRF_T13 ( 25 - DLT_1 ) // +#define TRF_T12 ( 23 - DLT_4B ) // +#define TRF_T11 ( 16 - DLT_1 ) // +#define TRF_T10 ( 0 - DLT_1 ) // +#ifdef VARIABLE_ADC_ON_TX +#define TRF_T9 (TRF_T11-VARIABLE_ADC_ON_TX*4) +#else +#define TRF_T9 ( - 40 - DLT_1 ) // +#endif + +// - TX up: +// The times below are offsets to when TXSTART goes high +//burst data comes here +#define TRF_T8 ( 18 - DLT_1 ) // +#define TRF_T7 ( 12 - DLT_1 ) // +#define TRF_T6 ( 6 - DLT_1 ) // +#define TRF_T5 ( 0 - DLT_1 ) // +#define TRF_T4 ( - 100 - DLT_1 ) // +#if(L1_RF_KBD_FIX == 1) +#define TRF_T3_1 (-215 -DLT_1 ) // Disable keyboard +#endif +#define TRF_T3 ( - 225 - DLT_1 ) // Set APC_LDO enabled +#define TRF_T2 ( - 235 - DLT_4B - tdt ) // Power ON TX +#define TRF_T1 ( - 255 - DLT_4B - tdt ) // Set TX synth + +#endif // Non TPU DEV + + +