Project

General

Profile

Feature #3582 » os3582-gtm900b.patch

falconia, 09/28/2020 10:02 PM

View differences:

src/target/firmware/Makefile
44 44
# OpenMoko GTA0x
45 45
BOARD_gta0x_OBJS=$(calypso_COMMON_OBJS) board/gta0x/init.o \
46 46
	board/gta0x/rffe_gta0x_triband.o board/gta0x/rf_tables.o \
47
	board/gta0x/afcparams.o \
47 48
	board/common/readcal_tiffs.o battery/dummy.o $(FB_dummy_OBJS)
48 49
BOARD_gta0x_ENVIRONMENTS=highram
49 50

  
......
56 57
# FreeCalypso FCDEV3B
57 58
BOARD_fcdev3b_OBJS=$(calypso_COMMON_OBJS) board/fcdev3b/init.o \
58 59
	board/gta0x/rffe_gta0x_triband.o board/gta0x/rf_tables.o \
60
	board/gta0x/afcparams.o \
59 61
	board/common/readcal_tiffs.o battery/dummy.o $(FB_dummy_OBJS)
60 62
BOARD_fcdev3b_ENVIRONMENTS=highram
61 63

  
src/target/firmware/board/gta0x/afcparams.c
1
/*
2
 * This code was written by Mychaela Falconia <falcon@freecalypso.org>
3
 * who refuses to claim copyright on it and has released it as public domain
4
 * instead. NO rights reserved, all rights relinquished.
5
 *
6
 * Tweaked (coding style changes) by Vadim Yanitskiy <axilirator@gmail.com>
7
 *
8
 * This program is free software; you can redistribute it and/or modify
9
 * it under the terms of the GNU General Public License as published by
10
 * the Free Software Foundation; either version 2 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License along
19
 * with this program; if not, write to the Free Software Foundation, Inc.,
20
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
 *
22
 */
23

  
24
#include <stdint.h>
25
#include <rf/vcxocal.h>
26

  
27
/*
28
 * Here is a typical set of AFC Psi parameters for an FCDEV3B modem board,
29
 * computed by FreeCalypso fc-rfcal-vcxo calibration tool from frequency
30
 * offset measurements made with a CMU200 RF tester:
31
 *
32
 * Psi_sta_inv: 3462
33
 * Psi_st: 15
34
 * Psi_st_32: 992326
35
 * Psi_st_inv: 4328
36
 *
37
 * The following AFC slope number is the closest OsmocomBB-style afc_slope
38
 * integer corresponding to these Psi numbers; the true value is somewhere
39
 * between 454 and 455.
40
 *
41
 * This AFC slope setting is expected to be correct for both Openmoko and
42
 * FreeCalypso hardware as we use the same VCXO components as were used
43
 * by Openmoko.
44
 */
45
int16_t afc_slope = 454;
46

  
47
/*
48
 * The compiled-in AFC initial DAC value below is the same as was used by
49
 * the old OsmocomBB code written for Mot C1xx phones, but it will normally
50
 * be overridden by the per-unit factory calibration value read from the
51
 * /gsm/rf/afcdac file in FFS.
52
 */
53
int16_t afc_initial_dac_value = -700;
src/target/firmware/board/gta0x/rf_tables.c
23 23

  
24 24
#include <stdint.h>
25 25
#include <rf/txcal.h>
26
#include <rf/vcxocal.h>
27

  
28
/*
29
 * Here is a typical set of AFC Psi parameters for an FCDEV3B modem board,
30
 * computed by FreeCalypso fc-rfcal-vcxo calibration tool from frequency
31
 * offset measurements made with a CMU200 RF tester:
32
 *
33
 * Psi_sta_inv: 3462
34
 * Psi_st: 15
35
 * Psi_st_32: 992326
36
 * Psi_st_inv: 4328
37
 *
38
 * The following AFC slope number is the closest OsmocomBB-style afc_slope
39
 * integer corresponding to these Psi numbers; the true value is somewhere
40
 * between 454 and 455.
41
 *
42
 * This AFC slope setting is expected to be correct for both Openmoko and
43
 * FreeCalypso hardware as we use the same VCXO components as were used
44
 * by Openmoko.
45
 */
46
int16_t afc_slope = 454;
47

  
48
/*
49
 * The compiled-in AFC initial DAC value below is the same as was used by
50
 * the old OsmocomBB code written for Mot C1xx phones, but it will normally
51
 * be overridden by the per-unit factory calibration value read from the
52
 * /gsm/rf/afcdac file in FFS.
53
 */
54
int16_t afc_initial_dac_value = -700;
55 26

  
56 27
/* APC offset (comes from the official firmware) for TI-classic targets */
57 28
uint8_t apc_offset = 48;
58
- 
src/target/firmware/Makefile
50 50

  
51 51
# Huawei GTM900-B
52 52
BOARD_gtm900b_OBJS=$(calypso_COMMON_OBJS) board/gtm900b/init.o \
53
	board/gtm900b/rffe_gtm900b.o board/gtm900b/rf_tables.o \
53
	board/gtm900b/rffe_gtm900b.o board/gta0x/rf_tables.o \
54
	board/gtm900b/afcparams.o \
54 55
	board/common/readcal_tiffs.o battery/dummy.o $(FB_dummy_OBJS)
55 56
BOARD_gtm900b_ENVIRONMENTS=highram
56 57

  
src/target/firmware/board/gtm900b/afcparams.c
1
/*
2
 * This code was written by Mychaela Falconia <falcon@freecalypso.org>
3
 * who refuses to claim copyright on it and has released it as public domain
4
 * instead. NO rights reserved, all rights relinquished.
5
 *
6
 * This program is free software; you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License as published by
8
 * the Free Software Foundation; either version 2 of the License, or
9
 * (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License along
17
 * with this program; if not, write to the Free Software Foundation, Inc.,
18
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
 *
20
 */
21

  
22
#include <stdint.h>
23
#include <rf/vcxocal.h>
24

  
25
/*
26
 * Here is a representative set of AFC Psi parameters that has been
27
 * calibrated by Huawei on a GTM900-B MGC2GSMT module, as recorded
28
 * in the /gsm/rf/afcparams file:
29
 *
30
 * Psi_sta_inv: 13626
31
 * Psi_st: 4
32
 * Psi_st_32: 252168
33
 * Psi_st_inv: 17032
34
 *
35
 * The following AFC slope number is the closest OsmocomBB-style afc_slope
36
 * integer corresponding to these Psi numbers; the true value is somewhere
37
 * between 115 and 116.
38
 */
39
int16_t afc_slope = 115;
40

  
41
/*
42
 * The compiled-in AFC initial DAC value below is the same as was used by
43
 * the old OsmocomBB code written for Mot C1xx phones, but it will normally
44
 * be overridden by the per-unit factory calibration value read from the
45
 * /gsm/rf/afcdac file in FFS.
46
 */
47
int16_t afc_initial_dac_value = -700;
src/target/firmware/board/gtm900b/rf_tables.c
1
/*
2
 * This code was written by Mychaela Falconia <falcon@freecalypso.org>
3
 * who refuses to claim copyright on it and has released it as public domain
4
 * instead. NO rights reserved, all rights relinquished.
5
 *
6
 * Tweaked (coding style changes) by Vadim Yanitskiy <axilirator@gmail.com>
7
 *
8
 * This program is free software; you can redistribute it and/or modify
9
 * it under the terms of the GNU General Public License as published by
10
 * the Free Software Foundation; either version 2 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License along
19
 * with this program; if not, write to the Free Software Foundation, Inc.,
20
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21
 *
22
 */
23

  
24
#include <stdint.h>
25
#include <rf/txcal.h>
26
#include <rf/vcxocal.h>
27

  
28
/* FIXME those are from the Compal phones, do measurements with the GTM900-B */
29

  
30
/*
31
 * The following AFC initial DAC value and AFC slope settings are unchanged
32
 * from the old OsmocomBB code in which they were hard-coded in layer1/afc.c.
33
 * This AFC slope setting corresponds very closely to the original Leonardo
34
 * Psi values which are used by Motorola's official fw at least on the C139,
35
 * hence I have good reason to believe that they are indeed correct for the
36
 * Mot C1xx hardware target family.
37
 */
38
int16_t afc_initial_dac_value = -700;
39
int16_t afc_slope = 287;
40

  
41
/* APC offset (comes from the official firmware) for TI-classic targets */
42
uint8_t apc_offset = 48;
43

  
44
/*
45
 * The following Tx levels tables are the ones compiled into Compal's
46
 * firmwares; more specifically, they were originally extracted out
47
 * of the one special Mot C11x fw version for which we got the linker
48
 * map file with symbols and subsequently confirmed to be unchanged in
49
 * Mot C139 and SE J100 firmwares.  In normal operation the APC DAC values
50
 * in these levels tables are replaced with the ones read from the per-unit
51
 * and per-band factory calibration records.
52
 *
53
 * It should be noted that these compiled-in numbers are approximately
54
 * correct for the C11x/12x/155/156 family (SKY77324 RF PA) but are totally
55
 * wrong for the newer C139/140 (SKY77325) and SE J100 (SKY77328) hardware;
56
 * it appears that Compal never bothered with changing these compiled-in
57
 * numbers in their fw for the newer designs because the expectation is
58
 * that these compiled-in numbers are just dummy placeholders to be
59
 * overridden by per-unit calibration.
60
 */
61
struct txcal_tx_level rf_tx_levels_850[RF_TX_LEVELS_TABLE_SIZE] = {
62
	{ 560,  0,  0 }, /* 0 */
63
	{ 560,  0,  0 }, /* 1 */
64
	{ 560,  0,  0 }, /* 2 */
65
	{ 560,  0,  0 }, /* 3 */
66
	{ 560,  0,  0 }, /* 4 */
67
	{ 638,  0,  0 }, /* 5 */
68
	{ 554,  1,  0 }, /* 6 */
69
	{ 467,  2,  0 }, /* 7 */
70
	{ 395,  3,  0 }, /* 8 */
71
	{ 337,  4,  0 }, /* 9 */
72
	{ 290,  5,  0 }, /* 10 */
73
	{ 253,  6,  0 }, /* 11 */
74
	{ 224,  7,  0 }, /* 12 */
75
	{ 201,  8,  0 }, /* 13 */
76
	{ 183,  9,  0 }, /* 14 */
77
	{ 168, 10,  0 }, /* 15 */
78
	{ 157, 11,  0 }, /* 16 */
79
	{ 148, 12,  0 }, /* 17 */
80
	{ 141, 13,  0 }, /* 18 */
81
	{ 136, 14,  0 }, /* 19 */
82
	{  46, 14,  0 }, /* 20 */
83
	{  46, 14,  0 }, /* 21 */
84
	{  46, 14,  0 }, /* 22 */
85
	{  46, 14,  0 }, /* 23 */
86
	{  46, 14,  0 }, /* 24 */
87
	{  46, 14,  0 }, /* 25 */
88
	{  46, 14,  0 }, /* 26 */
89
	{  46, 14,  0 }, /* 27 */
90
	{  46, 14,  0 }, /* 28 */
91
	{  46, 14,  0 }, /* 29 */
92
	{  46, 14,  0 }, /* 30 */
93
	{  46, 14,  0 }, /* 31 */
94
};
95

  
96
struct txcal_tx_level rf_tx_levels_900[RF_TX_LEVELS_TABLE_SIZE] = {
97
	{ 550,  0,  0 }, /* 0 */
98
	{ 550,  0,  0 }, /* 1 */
99
	{ 550,  0,  0 }, /* 2 */
100
	{ 550,  0,  0 }, /* 3 */
101
	{ 550,  0,  0 }, /* 4 */
102
	{ 550,  0,  0 }, /* 5 */
103
	{ 476,  1,  0 }, /* 6 */
104
	{ 402,  2,  0 }, /* 7 */
105
	{ 338,  3,  0 }, /* 8 */
106
	{ 294,  4,  0 }, /* 9 */
107
	{ 260,  5,  0 }, /* 10 */
108
	{ 226,  6,  0 }, /* 11 */
109
	{ 204,  7,  0 }, /* 12 */
110
	{ 186,  8,  0 }, /* 13 */
111
	{ 172,  9,  0 }, /* 14 */
112
	{ 161, 10,  0 }, /* 15 */
113
	{ 153, 11,  0 }, /* 16 */
114
	{ 146, 12,  0 }, /* 17 */
115
	{ 141, 13,  0 }, /* 18 */
116
	{ 137, 14,  0 }, /* 19 */
117
	{  43, 14,  0 }, /* 20 */
118
	{  43, 14,  0 }, /* 21 */
119
	{  43, 14,  0 }, /* 22 */
120
	{  43, 14,  0 }, /* 23 */
121
	{  43, 14,  0 }, /* 24 */
122
	{  43, 14,  0 }, /* 25 */
123
	{  43, 14,  0 }, /* 26 */
124
	{  43, 14,  0 }, /* 27 */
125
	{  43, 14,  0 }, /* 28 */
126
	{  43, 14,  0 }, /* 29 */
127
	{  43, 14,  0 }, /* 30 */
128
	{  43, 14,  0 }, /* 31 */
129
};
130

  
131
struct txcal_tx_level rf_tx_levels_1800[RF_TX_LEVELS_TABLE_SIZE] = {
132
	{ 480,  0,  0 }, /* 0 */
133
	{ 416,  1,  0 }, /* 1 */
134
	{ 352,  2,  0 }, /* 2 */
135
	{ 308,  3,  0 }, /* 3 */
136
	{ 266,  4,  0 }, /* 4 */
137
	{ 242,  5,  0 }, /* 5 */
138
	{ 218,  6,  0 }, /* 6 */
139
	{ 200,  7,  0 }, /* 7 */
140
	{ 186,  8,  0 }, /* 8 */
141
	{ 175,  9,  0 }, /* 9 */
142
	{ 167, 10,  0 }, /* 10 */
143
	{ 160, 11,  0 }, /* 11 */
144
	{ 156, 12,  0 }, /* 12 */
145
	{ 152, 13,  0 }, /* 13 */
146
	{ 145, 14,  0 }, /* 14 */
147
	{ 142, 15,  0 }, /* 15 */
148
	{  61, 15,  0 }, /* 16 */
149
	{  61, 15,  0 }, /* 17 */
150
	{  61, 15,  0 }, /* 18 */
151
	{  61, 15,  0 }, /* 19 */
152
	{  61, 15,  0 }, /* 20 */
153
	{  61, 15,  0 }, /* 21 */
154
	{  61, 15,  0 }, /* 22 */
155
	{  61, 15,  0 }, /* 23 */
156
	{  61, 15,  0 }, /* 24 */
157
	{  61, 15,  0 }, /* 25 */
158
	{  61, 15,  0 }, /* 26 */
159
	{  61, 15,  0 }, /* 27 */
160
	{  61, 15,  0 }, /* 28 */
161
	{ 750,  0,  0 }, /* 29 */
162
	{ 750,  0,  0 }, /* 30 */
163
	{ 750,  0,  0 }, /* 31 */
164
};
165

  
166
struct txcal_tx_level rf_tx_levels_1900[RF_TX_LEVELS_TABLE_SIZE] = {
167
	{ 520,  0,  0 }, /* 0 */
168
	{ 465,  1,  0 }, /* 1 */
169
	{ 390,  2,  0 }, /* 2 */
170
	{ 330,  3,  0 }, /* 3 */
171
	{ 285,  4,  0 }, /* 4 */
172
	{ 250,  5,  0 }, /* 5 */
173
	{ 225,  6,  0 }, /* 6 */
174
	{ 205,  7,  0 }, /* 7 */
175
	{ 190,  8,  0 }, /* 8 */
176
	{ 177,  9,  0 }, /* 9 */
177
	{ 168, 10,  0 }, /* 10 */
178
	{ 161, 11,  0 }, /* 11 */
179
	{ 155, 12,  0 }, /* 12 */
180
	{ 150, 13,  0 }, /* 13 */
181
	{ 147, 14,  0 }, /* 14 */
182
	{ 143, 15,  0 }, /* 15 */
183
	{  62, 15,  0 }, /* 16 */
184
	{  62, 15,  0 }, /* 17 */
185
	{  62, 15,  0 }, /* 18 */
186
	{  62, 15,  0 }, /* 19 */
187
	{  62, 15,  0 }, /* 20 */
188
	{  62, 15,  0 }, /* 21 */
189
	{  62, 15,  0 }, /* 22 */
190
	{  62, 15,  0 }, /* 23 */
191
	{  62, 15,  0 }, /* 24 */
192
	{  62, 15,  0 }, /* 25 */
193
	{  62, 15,  0 }, /* 26 */
194
	{  62, 15,  0 }, /* 27 */
195
	{  62, 15,  0 }, /* 28 */
196
	{ 915,  0,  0 }, /* 29 */
197
	{ 915,  0,  0 }, /* 30 */
198
	{ 915,  0,  0 }, /* 31 */
199
};
200

  
201
struct txcal_ramp_def rf_tx_ramps_850[RF_TX_RAMP_SIZE] = {
202
      { /* profile 0 */
203
	/* ramp-up */
204
	{  0,  0,  0,  0,  0,  0,  0,  0,  9, 18, 25, 31, 30, 15,  0,  0},
205
	/* ramp-down */
206
	{  0, 11, 31, 31, 31, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
207
      },
208
      { /* profile 1 */
209
	/* ramp-up */
210
	{  0,  0,  0,  0,  0,  0,  1,  1,  7, 16, 28, 31, 31, 13,  0,  0},
211
	/* ramp-down */
212
	{  0,  8, 31, 31, 31, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
213
      },
214
      { /* profile 2 */
215
	/* ramp-up */
216
	{  0,  0,  0,  0,  0,  0,  1,  1,  8, 16, 29, 31, 31, 11,  0,  0},
217
	/* ramp-down */
218
	{  0,  8, 28, 31, 31, 30,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
219
      },
220
      { /* profile 3 */
221
	/* ramp-up */
222
	{  0,  0,  0,  0,  0,  0,  2,  0,  6, 18, 28, 31, 31, 12,  0,  0},
223
	/* ramp-down */
224
	{  0,  9, 24, 31, 31, 31,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0},
225
      },
226
      { /* profile 4 */
227
	/* ramp-up */
228
	{  0,  0,  0,  0,  0,  0,  3,  0,  5, 19, 31, 31, 31,  8,  0,  0},
229
	/* ramp-down */
230
	{  0,  7, 31, 31, 31, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
231
      },
232
      { /* profile 5 */
233
	/* ramp-up */
234
	{  0,  0,  0,  0,  0,  0,  2,  0,  7, 18, 31, 31, 31,  8,  0,  0},
235
	/* ramp-down */
236
	{  0,  7, 31, 31, 31, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
237
      },
238
      { /* profile 6 */
239
	/* ramp-up */
240
	{  0,  0,  0,  0,  0,  0,  3,  0,  5, 20, 31, 31, 31,  7,  0,  0},
241
	/* ramp-down */
242
	{  0, 10, 21, 31, 31, 31,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
243
      },
244
      { /* profile 7 */
245
	/* ramp-up */
246
	{  0,  0,  0,  0,  0,  0,  4,  0,  9, 23, 22, 31, 31,  8,  0,  0},
247
	/* ramp-down */
248
	{  0,  9, 24, 30, 31, 30,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
249
      },
250
      { /* profile 8 */
251
	/* ramp-up */
252
	{  0,  0,  0,  0,  0,  0,  5,  0,  8, 21, 24, 31, 31,  8,  0,  0},
253
	/* ramp-down */
254
	{  0,  8, 23, 31, 31, 31,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
255
      },
256
      { /* profile 9 */
257
	/* ramp-up */
258
	{  0,  0,  0,  0,  0,  5,  0,  3,  1, 27, 22, 31, 31,  8,  0,  0},
259
	/* ramp-down */
260
	{  0,  8, 27, 25, 26, 31, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0},
261
      },
262
      { /* profile 10 */
263
	/* ramp-up */
264
	{  0,  0,  0,  0,  5,  0,  0,  2,  7, 22, 23, 31, 31,  7,  0,  0},
265
	/* ramp-down */
266
	{  0,  7, 25, 30, 31, 31,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
267
      },
268
      { /* profile 11 */
269
	/* ramp-up */
270
	{  0,  0,  0,  0,  0,  5,  0,  4,  8, 21, 21, 31, 31,  7,  0,  0},
271
	/* ramp-down */
272
	{  0,  8, 21, 31, 31, 31,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0},
273
      },
274
      { /* profile 12 */
275
	/* ramp-up */
276
	{  0,  0,  0,  0,  0,  7,  0,  0, 12, 22, 25, 31, 27,  4,  0,  0},
277
	/* ramp-down */
278
	{  0,  9, 12, 21, 31, 31, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0},
279
      },
280
      { /* profile 13 */
281
	/* ramp-up */
282
	{  0,  0,  0,  0,  0,  0,  7,  0,  8, 15, 31, 31, 31,  5,  0,  0},
283
	/* ramp-down */
284
	{  0,  6, 14, 23, 31, 31, 23,  0,  0,  0,  0,  0,  0,  0,  0,  0},
285
      },
286
      { /* profile 14 */
287
	/* ramp-up */
288
	{  0,  0,  0,  0,  0, 20,  0,  0,  8, 15, 14, 31, 31,  9,  0,  0},
289
	/* ramp-down */
290
	{  0,  7, 31, 31, 31, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
291
      },
292
      { /* profile 15 */
293
	/* ramp-up */
294
	{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
295
	/* ramp-down */
296
	{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
297
      },
298
};
299

  
300
struct txcal_ramp_def rf_tx_ramps_900[RF_TX_RAMP_SIZE] = {
301
      { /* profile 0 */
302
	/* ramp-up */
303
	{  0,  0,  0,  0,  0,  0,  0,  0,  9, 18, 25, 31, 30, 15,  0,  0},
304
	/* ramp-down */
305
	{  0, 11, 31, 31, 31, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
306
      },
307
      { /* profile 1 */
308
	/* ramp-up */
309
	{  0,  0,  0,  0,  0,  0,  1,  1,  7, 16, 28, 31, 31, 13,  0,  0},
310
	/* ramp-down */
311
	{  0,  8, 31, 31, 31, 27,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
312
      },
313
      { /* profile 2 */
314
	/* ramp-up */
315
	{  0,  0,  0,  0,  0,  0,  1,  1,  8, 16, 29, 31, 31, 11,  0,  0},
316
	/* ramp-down */
317
	{  0,  8, 28, 31, 31, 30,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
318
      },
319
      { /* profile 3 */
320
	/* ramp-up */
321
	{  0,  0,  0,  0,  0,  0,  2,  0,  6, 18, 28, 31, 31, 12,  0,  0},
322
	/* ramp-down */
323
	{  0,  9, 24, 31, 31, 31,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0},
324
      },
325
      { /* profile 4 */
326
	/* ramp-up */
327
	{  0,  0,  0,  0,  0,  0,  3,  0,  5, 19, 31, 31, 31,  8,  0,  0},
328
	/* ramp-down */
329
	{  0,  7, 31, 31, 31, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
330
      },
331
      { /* profile 5 */
332
	/* ramp-up */
333
	{  0,  0,  0,  0,  0,  0,  2,  0,  7, 18, 31, 31, 31,  8,  0,  0},
334
	/* ramp-down */
335
	{  0,  7, 31, 31, 31, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
336
      },
337
      { /* profile 6 */
338
	/* ramp-up */
339
	{  0,  0,  0,  0,  0,  0,  3,  0,  5, 20, 31, 31, 31,  7,  0,  0},
340
	/* ramp-down */
341
	{  0, 10, 21, 31, 31, 31,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
342
      },
343
      { /* profile 7 */
344
	/* ramp-up */
345
	{  0,  0,  0,  0,  0,  0,  4,  0,  9, 23, 22, 31, 31,  8,  0,  0},
346
	/* ramp-down */
347
	{  0,  9, 24, 30, 31, 30,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
348
      },
349
      { /* profile 8 */
350
	/* ramp-up */
351
	{  0,  0,  0,  0,  0,  0,  5,  0,  8, 21, 24, 31, 31,  8,  0,  0},
352
	/* ramp-down */
353
	{  0,  8, 23, 31, 31, 31,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
354
      },
355
      { /* profile 9 */
356
	/* ramp-up */
357
	{  0,  0,  0,  0,  0,  5,  0,  3,  1, 27, 22, 31, 31,  8,  0,  0},
358
	/* ramp-down */
359
	{  0,  8, 27, 25, 26, 31, 11,  0,  0,  0,  0,  0,  0,  0,  0,  0},
360
      },
361
      { /* profile 10 */
362
	/* ramp-up */
363
	{  0,  0,  0,  0,  5,  0,  0,  2,  7, 22, 23, 31, 31,  7,  0,  0},
364
	/* ramp-down */
365
	{  0,  7, 25, 30, 31, 31,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0},
366
      },
367
      { /* profile 11 */
368
	/* ramp-up */
369
	{  0,  0,  0,  0,  0,  5,  0,  4,  8, 21, 21, 31, 31,  7,  0,  0},
370
	/* ramp-down */
371
	{  0,  8, 21, 31, 31, 31,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0},
372
      },
373
      { /* profile 12 */
374
	/* ramp-up */
375
	{  0,  0,  0,  0,  0,  7,  0,  0, 12, 22, 25, 31, 27,  4,  0,  0},
376
	/* ramp-down */
377
	{  0,  9, 12, 21, 31, 31, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0},
378
      },
379
      { /* profile 13 */
380
	/* ramp-up */
381
	{  0,  0,  0,  0,  0,  0,  7,  0,  8, 15, 31, 31, 31,  5,  0,  0},
382
	/* ramp-down */
383
	{  0,  6, 14, 23, 31, 31, 23,  0,  0,  0,  0,  0,  0,  0,  0,  0},
384
      },
385
      { /* profile 14 */
386
	/* ramp-up */
387
	{  0,  0,  0,  0,  0, 20,  0,  0,  8, 15, 14, 31, 31,  9,  0,  0},
388
	/* ramp-down */
389
	{  0,  7, 31, 31, 31, 28,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
390
      },
391
      { /* profile 15 */
392
	/* ramp-up */
393
	{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
394
	/* ramp-down */
395
	{  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0},
396
      },
397
};
398

  
399
struct txcal_ramp_def rf_tx_ramps_1800[RF_TX_RAMP_SIZE] = {
400
      { /* profile 0 */
401
	/* ramp-up */
402
	{  0,  0,  0,  0,  0,  0,  2,  3,  5, 16, 31, 31, 31,  9,  0,  0},
403
	/* ramp-down */
404
	{  0, 11, 31, 31, 31, 10, 11,  3,  0,  0,  0,  0,  0,  0,  0,  0},
405
      },
406
      { /* profile 1 */
407
	/* ramp-up */
408
	{  0,  0,  0,  0,  0,  0,  2,  3,  4, 17, 30, 31, 31, 10,  0,  0},
409
	/* ramp-down */
410
	{  0, 10, 31, 31, 31, 13,  9,  3,  0,  0,  0,  0,  0,  0,  0,  0},
411
      },
412
      { /* profile 2 */
413
	/* ramp-up */
414
	{  0,  0,  0,  0,  0,  0,  4,  2,  2, 18, 31, 31, 31,  9,  0,  0},
415
	/* ramp-down */
416
	{  0, 10, 26, 31, 31, 16, 10,  4,  0,  0,  0,  0,  0,  0,  0,  0},
417
      },
418
      { /* profile 3 */
419
	/* ramp-up */
420
	{  0,  0,  0,  0,  0,  0,  3,  4,  4, 15, 31, 31, 31,  9,  0,  0},
421
	/* ramp-down */
422
	{  0,  9, 31, 31, 31, 13,  6,  7,  0,  0,  0,  0,  0,  0,  0,  0},
423
      },
424
      { /* profile 4 */
425
	/* ramp-up */
426
	{  0,  0,  0,  0,  0,  0,  4,  3,  7, 11, 31, 31, 31, 10,  0,  0},
427
	/* ramp-down */
428
	{  0,  8, 31, 31, 31, 11,  9,  7,  0,  0,  0,  0,  0,  0,  0,  0},
429
      },
430
      { /* profile 5 */
431
	/* ramp-up */
432
	{  0,  0,  0,  0,  0,  4,  3,  2,  7, 14, 25, 31, 31, 11,  0,  0},
433
	/* ramp-down */
434
	{  0, 14, 31, 31, 31,  9,  8,  4,  0,  0,  0,  0,  0,  0,  0,  0},
435
      },
436
      { /* profile 6 */
437
	/* ramp-up */
438
	{  0,  0,  0,  0,  0,  7,  1,  3, 10, 12, 25, 31, 31,  8,  0,  0},
439
	/* ramp-down */
440
	{  0,  7, 30, 31, 31, 14,  4,  6,  5,  0,  0,  0,  0,  0,  0,  0},
441
      },
442
      { /* profile 7 */
443
	/* ramp-up */
444
	{  0,  0,  0,  0,  3,  5,  0,  5,  8, 12, 26, 31, 31,  7,  0,  0},
445
	/* ramp-down */
446
	{  0,  7, 31, 31, 31, 15,  0,  8,  5,  0,  0,  0,  0,  0,  0,  0},
447
      },
448
      { /* profile 8 */
449
	/* ramp-up */
450
	{  0,  0,  0,  0,  0,  9,  0,  3, 10, 16, 21, 31, 31,  7,  0,  0},
451
	/* ramp-down */
452
	{  0, 11, 28, 31, 27, 10, 11,  0, 10,  0,  0,  0,  0,  0,  0,  0},
453
      },
454
      { /* profile 9 */
455
	/* ramp-up */
456
	{  0,  0,  0,  0,  0, 10,  0,  6,  9, 15, 22, 29, 31,  6,  0,  0},
457
	/* ramp-down */
458
	{  0,  9, 22, 31, 31, 12,  5,  0, 18,  0,  0,  0,  0,  0,  0,  0},
459
      },
460
      { /* profile 10 */
461
	/* ramp-up */
462
	{  0,  0,  0,  0, 14,  0,  0,  8,  6, 20, 21, 29, 24,  6,  0,  0},
463
	/* ramp-down */
464
	{  0,  8, 28, 29, 26, 14,  6,  0, 17,  0,  0,  0,  0,  0,  0,  0},
465
      },
466
      { /* profile 11 */
467
	/* ramp-up */
468
	{  0,  0,  0,  0, 16,  0,  3,  5,  8, 16, 31, 28, 18,  3,  0,  0},
469
	/* ramp-down */
470
	{  0,  6, 18, 26, 31, 16,  9,  7,  0, 15,  0,  0,  0,  0,  0,  0},
471
      },
472
      { /* profile 12 */
473
	/* ramp-up */
474
	{  0,  0,  0,  0, 19,  0,  3,  6,  8, 21, 24, 31, 14,  2,  0,  0},
475
	/* ramp-down */
476
	{  0,  0, 12, 31, 31, 27,  4,  0, 23,  0,  0,  0,  0,  0,  0,  0},
477
      },
478
      { /* profile 13 */
479
	/* ramp-up */
480
	{  0,  0,  0,  0,  0, 14, 14,  0,  0, 24, 31, 31, 14,  0,  0,  0},
481
	/* ramp-down */
482
	{  0,  0, 11, 31, 31, 22, 11,  3, 19,  0,  0,  0,  0,  0,  0,  0},
483
      },
484
      { /* profile 14 */
485
	/* ramp-up */
486
	{  0,  0,  0,  0,  0, 30,  1,  4,  8, 18, 31, 31,  5,  0,  0,  0},
487
	/* ramp-down */
488
	{  0,  0,  8, 31, 31, 22,  5,  0, 31,  0,  0,  0,  0,  0,  0,  0},
489
      },
490
      { /* profile 15 */
491
	/* ramp-up */
492
	{  0,  0,  0,  0,  0, 31, 13,  0,  0, 14, 31, 31,  8,  0,  0,  0},
493
	/* ramp-down */
494
	{  0,  0,  4, 31, 31, 25,  5,  0,  5, 26,  1,  0,  0,  0,  0,  0},
495
      },
496
};
497

  
498
struct txcal_ramp_def rf_tx_ramps_1900[RF_TX_RAMP_SIZE] = {
499
      { /* profile 0 */
500
	/* ramp-up */
501
	{  0,  0,  0,  0,  0,  0,  7,  0,  0, 16, 31, 31, 31, 12,  0,  0},
502
	/* ramp-down */
503
	{  0, 13, 31, 31, 31, 18,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0},
504
      },
505
      { /* profile 1 */
506
	/* ramp-up */
507
	{  0,  0,  0,  0,  0,  0,  2,  3,  4, 17, 30, 31, 31, 10,  0,  0},
508
	/* ramp-down */
509
	{  0, 10, 31, 31, 31, 13,  9,  3,  0,  0,  0,  0,  0,  0,  0,  0},
510
      },
511
      { /* profile 2 */
512
	/* ramp-up */
513
	{  0,  0,  0,  0,  0,  0,  4,  2,  2, 18, 31, 31, 31,  9,  0,  0},
514
	/* ramp-down */
515
	{  0, 10, 26, 31, 31, 16, 10,  4,  0,  0,  0,  0,  0,  0,  0,  0},
516
      },
517
      { /* profile 3 */
518
	/* ramp-up */
519
	{  0,  0,  0,  0,  0,  0,  3,  4,  4, 15, 31, 31, 31,  9,  0,  0},
520
	/* ramp-down */
521
	{  0,  9, 31, 31, 31, 13,  6,  7,  0,  0,  0,  0,  0,  0,  0,  0},
522
      },
523
      { /* profile 4 */
524
	/* ramp-up */
525
	{  0,  0,  0,  0,  0,  0,  4,  3,  0, 18, 31, 31, 31, 10,  0,  0},
526
	/* ramp-down */
527
	{  0,  8, 31, 31, 31, 11,  9,  7,  0,  0,  0,  0,  0,  0,  0,  0},
528
      },
529
      { /* profile 5 */
530
	/* ramp-up */
531
	{  0,  0,  0,  0,  0,  4,  3,  2,  7, 14, 25, 31, 31, 11,  0,  0},
532
	/* ramp-down */
533
	{  0, 14, 31, 31, 31,  9,  8,  4,  0,  0,  0,  0,  0,  0,  0,  0},
534
      },
535
      { /* profile 6 */
536
	/* ramp-up */
537
	{  0,  0,  0,  0,  0,  7,  1,  3, 10, 12, 25, 31, 31,  8,  0,  0},
538
	/* ramp-down */
539
	{  0,  7, 30, 31, 31, 14,  4,  6,  5,  0,  0,  0,  0,  0,  0,  0},
540
      },
541
      { /* profile 7 */
542
	/* ramp-up */
543
	{  0,  0,  0,  0,  3,  5,  0,  5,  8, 12, 26, 31, 31,  7,  0,  0},
544
	/* ramp-down */
545
	{  0,  7, 31, 31, 31, 15,  0,  8,  5,  0,  0,  0,  0,  0,  0,  0},
546
      },
547
      { /* profile 8 */
548
	/* ramp-up */
549
	{  0,  0,  0,  0,  0,  9,  0,  3, 10, 16, 21, 31, 31,  7,  0,  0},
550
	/* ramp-down */
551
	{  0, 11, 28, 31, 27, 10, 11,  0, 10,  0,  0,  0,  0,  0,  0,  0},
552
      },
553
      { /* profile 9 */
554
	/* ramp-up */
555
	{  0,  0,  0,  0,  0, 10,  0,  6,  9, 15, 22, 29, 31,  6,  0,  0},
556
	/* ramp-down */
557
	{  0,  9, 22, 31, 31, 12,  5,  0, 18,  0,  0,  0,  0,  0,  0,  0},
558
      },
559
      { /* profile 10 */
560
	/* ramp-up */
561
	{  0,  0,  0,  0, 14,  0,  0,  4, 10, 20, 21, 29, 24,  6,  0,  0},
562
	/* ramp-down */
563
	{  0,  8, 28, 29, 26, 14,  6,  0, 17,  0,  0,  0,  0,  0,  0,  0},
564
      },
565
      { /* profile 11 */
566
	/* ramp-up */
567
	{  0,  0,  0,  0, 16,  0,  3,  5,  8, 16, 31, 28, 18,  3,  0,  0},
568
	/* ramp-down */
569
	{  0,  6, 18, 26, 31, 16,  9,  7,  0, 15,  0,  0,  0,  0,  0,  0},
570
      },
571
      { /* profile 12 */
572
	/* ramp-up */
573
	{  0,  0,  0,  0, 19,  0,  3,  6,  8, 21, 24, 31, 14,  2,  0,  0},
574
	/* ramp-down */
575
	{  0,  0, 12, 31, 31, 27,  4,  0, 23,  0,  0,  0,  0,  0,  0,  0},
576
      },
577
      { /* profile 13 */
578
	/* ramp-up */
579
	{  0,  0,  0,  0,  0, 14, 14,  0,  0, 24, 31, 31, 14,  0,  0,  0},
580
	/* ramp-down */
581
	{  0,  0, 11, 31, 31, 22, 11,  3, 19,  0,  0,  0,  0,  0,  0,  0},
582
      },
583
      { /* profile 14 */
584
	/* ramp-up */
585
	{  0,  0,  0,  0,  0, 30,  1,  4,  8, 18, 31, 31,  5,  0,  0,  0},
586
	/* ramp-down */
587
	{  0,  0,  8, 31, 31, 22,  5,  0, 31,  0,  0,  0,  0,  0,  0,  0},
588
      },
589
      { /* profile 15 */
590
	/* ramp-up */
591
	{  0,  0,  0,  0,  0, 30,  1,  4,  8, 18, 31, 31,  5,  0,  0,  0},
592
	/* ramp-down */
593
	{  0,  0,  8, 31, 31, 22,  5,  0, 31,  0,  0,  0,  0,  0,  0,  0},
594
      },
595
};
(4-4/5)
Add picture from clipboard (Maximum size: 48.8 MB)