comparison src/cs/layer1/tpu_drivers/source/tpudrv.h @ 0:4e78acac3d88

src/{condat,cs,gpf,nucleus}: import from Selenite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:23:26 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4e78acac3d88
1 /************* Revision Controle System Header *************
2 * GSM Layer 1 software
3 *
4 * Filename tpudrv.h
5 * Copyright 2003 (C) Texas Instruments
6 *
7 ************* Revision Controle System Header *************/
8
9 /*
10 * Device addresses - GCS000
11 */
12 // GSM 1.5 : TPU / TSP addresses
13 //-------------------------------------
14
15 #if ((CHIPSET ==2) || (CHIPSET == 3) || (CHIPSET == 4))
16 #define TPU_ADDR 0xFFFE0000l // Hercule / Ulysse / Samson
17
18 #define TPU_RAM (TPU_ADDR + 0x1400)
19
20 #define TPU_REG (TPU_ADDR + 0x1000)
21 #define TSP_REG (TPU_ADDR + 0x0800)
22 #define TPU_TIM (TPU_ADDR + 0x2000)
23
24 #elif ((CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12))
25 #define TPU_ADDR 0xFFFF0000l // Strobe 1 address
26
27 #define TPU_RAM 0xFFFF9000l // TPU RAM
28
29 #define TPU_REG (TPU_ADDR + 0x1000) // TPU register
30 #define TSP_REG 0xFFFE0800l // TSP register
31 #define TPU_TIM 0xFFFE2000l // ULPD register
32
33 #endif
34
35
36 /*
37 * Macros for defining TPU instructions
38 */
39 #define TPU_SLEEP 0
40 #define TPU_MOVE(addr,data) (0x8000 | ((data)<<5) | (addr))
41 #define TPU_AT(time) (0x2000 | (((time + 5000) % 5000)))
42 #define TPU_FAT(time) (0x2000 | (time)) // Fast version without modulo
43 #define TPU_SYNC(time) (0x6000 | (time))
44 #define TPU_WAIT(time) (0xA000 | (time))
45 #define TPU_OFFSET(time) (0x4000 | (time))
46 #define MOD5000(a) (((a) + 5000) % 5000)
47
48
49 /*
50 * TSP registers - defined in GCS004 - Time Serial Port
51 */
52 /*
53 * in TPU address space
54 */
55 // GSM 1.5 : TSP_TX_REG_1/2/3/4 instead of TSP_TX_U/M/L
56 // added TSP_SPI_SET1/2/3 to ctrl up to 5 periph.
57 //-----------------------------------------------------
58 #define TSP_CTRL1 0x00
59 #define TSP_CTRL2 0x01
60 #define TSP_TX_REG_1 0x04
61 #define TSP_TX_REG_2 0x03
62 #define TSP_TX_REG_3 0x02
63 #define TSP_TX_REG_4 0x05
64 #define TSP_ACT 0x06
65 #define TSP_ACTX 0x07
66 #define TSP_GAUGING_EN 0x11
67 #define TSP_SPI_SET1 0x09
68 #define TSP_SPI_SET2 0x0A
69 #define TSP_SPI_SET3 0x0B
70 #define TPU_IT_DSP_PG 0x10
71 #define TSP_GAUGING_EN 0x11
72
73 /*
74 * in ARM address space - defined in HYP004
75 */
76 #define TSP_RX_LSB (TSP_REG + 0x00)
77
78 #define TSP_RX_MSB (TSP_REG + 0x02)
79
80 #define TSP_TX_LSB (TSP_REG + 0x0c)
81
82 #define TSP_TX_MSB (TSP_REG + 0x0a)
83
84
85 /*
86 * TSP registers bit definitions
87 */
88 #define TC1_DEVICE0 0x00
89 #define TC1_DEVICE1 0x20
90 #define TC1_DEVICE2 0x40
91 #define TC1_DEVICE3 0x60
92 #define TC1_DEVICE4 0x80
93 #define TC2_RD 0x01
94 #define TC2_WR 0x02
95 #define TC2_EDGE_TRIG 0x40
96 #define TC2_RISING 0x80
97 #define TSP_CLK_RISE 0x01
98 #define TSP_ENA_POS 0x02
99 #define TSP_ENA_EDGE 0x04
100 #define GAUGING_START 0x01
101 #define GAUGING_STOP 0x00
102 #define TSP_ENA_POS_MSB 0x20
103
104
105
106 /*
107 * TPU registers - defined in HYP002
108 */
109 // GSM 1.5 : TPU reg are 16-bit access
110 //---------------------------------------
111 #define TPU_CTRL (TPU_REG + 0x00)
112 #define TPU_INT_CTRL (TPU_REG + 0x02)
113 #define TPU_INT_STAT (TPU_REG + 0x04)
114 #define TPU_OFFSET_REG (TPU_REG + 0x0C)
115 #define TPU_SYNCHRO_REG (TPU_REG + 0x0E)
116 #define TPU_DSP_PG (TPU_REG + 0x20)
117
118
119
120
121
122 /*
123 * TPU control register bits
124 */
125 // GSM 1.5 : TPU bits changed
126 //---------------------------------------
127 #define TPU_CTRL_RESET 0x0001
128 #define TSP_CTRL_RESET 0x0080
129 #define TPU_CTRL_T_PAGE 0x0002
130 #define TPU_CTRL_T_ENBL 0x0004
131 #define TPU_CTRL_D_ENBL 0x0010 // WARNING THIS BIT DOES NOT EXIST IN HYPERION
132 #define TPU_CTRL_SPI_RST 0x0080
133 #define TPU_CTRL_WAIT 0x0200
134 #define TPU_CTRL_CLK_EN 0x0400
135 #if (CHIPSET == 7) || (CHIPSET == 8) || (CHIPSET == 10) || (CHIPSET == 11) || (CHIPSET == 12)
136 #define TPU_CTRL_FULL_WRITE 0x0800
137 #endif
138
139
140
141
142 /*
143 * TPU interrupt control register bits
144 */
145
146
147 /* WARNING BUG IN HYPERION. */
148 /* READING TPU_INT_CRTL, TPU_INT_ITP_M BIT CONTENTS AFFECTS THE TPU_INT_ITD_M VALUE. */
149
150 #define TPU_INT_ITF_M 0x0001
151 #define TPU_INT_ITP_M 0x0002
152 #define TPU_INT_ITD_M 0x0004
153 #define TPU_INT_ITD_F 0x0008 // WARNING THIS BIT DOES NOT EXIST IN HYPERION
154
155 #define INT_FRAME 4 /* TPU frame interrupt */
156 #define INT_PAGE 5 /* TPU page interrupt */
157 #define INT_TSP 3 /* TSP interrupt */
158
159
160
161 #if ((ANLG_FAM == 1) || (ANLG_FAM == 2) || (ANLG_FAM == 3))
162 // BB signals connected to serial link1
163 #define BULON 0x80 // bit6
164 #define BULCAL 0x40 // bit5
165 #define BULENA 0x20 // bit4
166 #define BDLON 0x10 // bit3
167 #define BDLCAL 0x08 // bit2
168 #define BDLENA 0x04 // bit1
169 #define STARTADC 0x02 // bit0
170 #endif
171
172
173 /*
174 * GSM RF programming times in quarter bits
175 */
176 /**************************************************************************/
177 /**************************************************************************/
178 /****************************** W A R N I N G !!! *************************/
179 /******* This values are fine tuned for LAYER 1 . DO NOT MODIFY !!! *******/
180 /****** FOR ANY MODIFICATION , PLEASE CONTACT Texas Instruments Inc. ******/
181 /**************************************************************************/
182 /**************************************************************************/
183
184
185 /**************************************/
186 /* TPU Macros: prototypes functions */
187 /**************************************/
188 // TPU macros.
189 //------------
190 void l1dmacro_reset_hw (UWORD32 servingCellOffset);
191 void l1dmacro_init_hw (void);
192 void l1dmacro_init_hw_light (void);
193 void l1dmacro_idle (void);
194 void l1dmacro_rx_synth (SYS_UWORD16 radio_freq);
195 void l1dmacro_tx_synth (SYS_UWORD16 radio_freq);
196 void l1dmacro_agc (SYS_UWORD16 radio_freq, WORD8 gain, UWORD8 lna);
197 void l1dmacro_afc (SYS_UWORD16 afc_value, UWORD8 win_id);
198 void l1dmacro_rx_ms (SYS_UWORD16 radio_freq);
199 void l1dmacro_rx_fb (SYS_UWORD16 radio_freq);
200 void l1dmacro_rx_fb26 (SYS_UWORD16 radio_freq);
201 void l1dmacro_offset (UWORD32 offset_value,
202 WORD32 relative_time);
203 void l1dmacro_synchro (UWORD32 when, UWORD32 value);
204 void l1dmacro_rx_sb (SYS_UWORD16 radio_freq);
205 void l1dmacro_rx_nb (SYS_UWORD16 radio_freq);
206 void l1dmacro_tx_nb (SYS_UWORD16 radio_freq, UWORD8 txpwr, UWORD8 adc_active);
207 void l1dmacro_tx_ra (SYS_UWORD16 radio_freq, UWORD8 txpwr, UWORD8 adc_active);
208 void l1dmacro_adc_read_tx (UWORD32 when);
209 void l1dmacro_adc_read_rx (void);
210 void l1dmacro_set_frame_it (void);
211
212 void l1pdmacro_it_dsp_gen(WORD16 time);
213
214 #if TESTMODE
215 void l1dmacro_rx_cont (SYS_UWORD16 radio_freq, UWORD8 txpwr);
216 void l1dmacro_tx_cont (SYS_UWORD16 radio_freq, UWORD8 txpwr);
217 void l1dmacro_stop_cont (void);
218 #endif
219
220 /*
221 * TPU prototypes
222 */
223 void TP_PageIntHandler (void);
224 void TP_FrameIntHandler (void);
225 void TP_PageIntHandler (void);
226 void TP_FrameIntHandler (void);
227 void TPU_Reset(SYS_UWORD16 on);
228 void TSP_Reset(SYS_UWORD16 on);
229 void TPU_ClkEnable(SYS_UWORD16 on);
230 void TP_Reset(SYS_UWORD16 on);
231 void TP_Enable(SYS_UWORD16 on);
232 BOOL TPU_check_IT_DSP(void);
233
234
235 /*
236 * TPUDRV global variables
237 */
238 #ifdef TPUDRV_C
239 #define TP_GLOBAL
240 #else
241 #define TP_GLOBAL extern
242 #endif
243
244 TP_GLOBAL volatile UWORD32 TP_PageInt;
245 TP_GLOBAL volatile UWORD32 TP_FrameInt;
246
247