1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include "b43.h"
27#include "tables_lpphy.h"
28#include "phy_common.h"
29#include "phy_lp.h"
30
31
32
33struct b206x_init_tab_entry {
34 u16 offset;
35 u16 value_a;
36 u16 value_g;
37 u8 flags;
38};
39#define B206X_FLAG_A 0x01
40#define B206X_FLAG_G 0x02
41
42static const struct b206x_init_tab_entry b2062_init_tab[] = {
43
44
45
46
47 { .offset = B2062_N_COMM4, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
48
49
50
51
52
53
54
55
56
57
58
59
60 { .offset = B2062_N_PDN_CTL1, .value_a = 0x0000, .value_g = 0x00CA, .flags = B206X_FLAG_G, },
61
62 { .offset = B2062_N_PDN_CTL3, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
63 { .offset = B2062_N_PDN_CTL4, .value_a = 0x0015, .value_g = 0x002A, .flags = B206X_FLAG_A | B206X_FLAG_G, },
64
65
66 { .offset = B2062_N_LGENC, .value_a = 0x00DB, .value_g = 0x00FF, .flags = B206X_FLAG_A, },
67
68
69
70
71
72
73 { .offset = B2062_N_LGENA_TUNE0, .value_a = 0x00DD, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
74
75 { .offset = B2062_N_LGENA_TUNE2, .value_a = 0x00DD, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
76 { .offset = B2062_N_LGENA_TUNE3, .value_a = 0x0077, .value_g = 0x00B5, .flags = B206X_FLAG_A | B206X_FLAG_G, },
77 { .offset = B2062_N_LGENA_CTL3, .value_a = 0x0000, .value_g = 0x00FF, .flags = B206X_FLAG_A | B206X_FLAG_G, },
78
79
80
81 { .offset = B2062_N_LGENA_CTL7, .value_a = 0x0033, .value_g = 0x0033, .flags = B206X_FLAG_A | B206X_FLAG_G, },
82
83 { .offset = B2062_N_RXA_CTL1, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
84
85
86
87
88
89
90 { .offset = B2062_N_RXBB_CTL0, .value_a = 0x0082, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
91
92
93
94 { .offset = B2062_N_RXBB_GAIN1, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
95 { .offset = B2062_N_RXBB_GAIN2, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 { .offset = B2062_N_TX_CTL4, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
117 { .offset = B2062_N_TX_CTL5, .value_a = 0x0002, .value_g = 0x0002, .flags = B206X_FLAG_A | B206X_FLAG_G, },
118
119
120
121
122
123
124
125 { .offset = B2062_N_TX_TUNE, .value_a = 0x0088, .value_g = 0x001B, .flags = B206X_FLAG_A | B206X_FLAG_G, },
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154 { .offset = B2062_S_COMM4, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A | B206X_FLAG_G, },
155
156
157
158
159
160
161
162
163
164
165
166 { .offset = B2062_S_PDS_CTL0, .value_a = 0x00FF, .value_g = 0x00FF, .flags = B206X_FLAG_A | B206X_FLAG_G, },
167
168
169
170
171
172
173 { .offset = B2062_S_LGENG_CTL0, .value_a = 0x00F8, .value_g = 0x00D8, .flags = B206X_FLAG_A | B206X_FLAG_G, },
174 { .offset = B2062_S_LGENG_CTL1, .value_a = 0x003C, .value_g = 0x0024, .flags = B206X_FLAG_A | B206X_FLAG_G, },
175
176
177
178
179
180
181 { .offset = B2062_S_LGENG_CTL8, .value_a = 0x0088, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
182
183 { .offset = B2062_S_LGENG_CTL10, .value_a = 0x0088, .value_g = 0x0080, .flags = B206X_FLAG_A | B206X_FLAG_G, },
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202 { .offset = B2062_S_RFPLL_CTL0, .value_a = 0x0098, .value_g = 0x0098, .flags = B206X_FLAG_A | B206X_FLAG_G, },
203 { .offset = B2062_S_RFPLL_CTL1, .value_a = 0x0010, .value_g = 0x0010, .flags = B206X_FLAG_A | B206X_FLAG_G, },
204
205
206
207 { .offset = B2062_S_RFPLL_CTL5, .value_a = 0x0043, .value_g = 0x0043, .flags = B206X_FLAG_A | B206X_FLAG_G, },
208 { .offset = B2062_S_RFPLL_CTL6, .value_a = 0x0047, .value_g = 0x0047, .flags = B206X_FLAG_A | B206X_FLAG_G, },
209 { .offset = B2062_S_RFPLL_CTL7, .value_a = 0x000C, .value_g = 0x000C, .flags = B206X_FLAG_A | B206X_FLAG_G, },
210 { .offset = B2062_S_RFPLL_CTL8, .value_a = 0x0011, .value_g = 0x0011, .flags = B206X_FLAG_A | B206X_FLAG_G, },
211 { .offset = B2062_S_RFPLL_CTL9, .value_a = 0x0011, .value_g = 0x0011, .flags = B206X_FLAG_A | B206X_FLAG_G, },
212 { .offset = B2062_S_RFPLL_CTL10, .value_a = 0x000E, .value_g = 0x000E, .flags = B206X_FLAG_A | B206X_FLAG_G, },
213 { .offset = B2062_S_RFPLL_CTL11, .value_a = 0x0008, .value_g = 0x0008, .flags = B206X_FLAG_A | B206X_FLAG_G, },
214 { .offset = B2062_S_RFPLL_CTL12, .value_a = 0x0033, .value_g = 0x0033, .flags = B206X_FLAG_A | B206X_FLAG_G, },
215 { .offset = B2062_S_RFPLL_CTL13, .value_a = 0x000A, .value_g = 0x000A, .flags = B206X_FLAG_A | B206X_FLAG_G, },
216 { .offset = B2062_S_RFPLL_CTL14, .value_a = 0x0006, .value_g = 0x0006, .flags = B206X_FLAG_A | B206X_FLAG_G, },
217
218
219
220 { .offset = B2062_S_RFPLL_CTL18, .value_a = 0x003E, .value_g = 0x003E, .flags = B206X_FLAG_A | B206X_FLAG_G, },
221 { .offset = B2062_S_RFPLL_CTL19, .value_a = 0x0013, .value_g = 0x0013, .flags = B206X_FLAG_A | B206X_FLAG_G, },
222
223 { .offset = B2062_S_RFPLL_CTL21, .value_a = 0x0062, .value_g = 0x0062, .flags = B206X_FLAG_A | B206X_FLAG_G, },
224 { .offset = B2062_S_RFPLL_CTL22, .value_a = 0x0007, .value_g = 0x0007, .flags = B206X_FLAG_A | B206X_FLAG_G, },
225 { .offset = B2062_S_RFPLL_CTL23, .value_a = 0x0016, .value_g = 0x0016, .flags = B206X_FLAG_A | B206X_FLAG_G, },
226 { .offset = B2062_S_RFPLL_CTL24, .value_a = 0x005C, .value_g = 0x005C, .flags = B206X_FLAG_A | B206X_FLAG_G, },
227 { .offset = B2062_S_RFPLL_CTL25, .value_a = 0x0095, .value_g = 0x0095, .flags = B206X_FLAG_A | B206X_FLAG_G, },
228
229
230
231
232 { .offset = B2062_S_RFPLL_CTL30, .value_a = 0x00A0, .value_g = 0x00A0, .flags = B206X_FLAG_A | B206X_FLAG_G, },
233 { .offset = B2062_S_RFPLL_CTL31, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
234
235 { .offset = B2062_S_RFPLL_CTL33, .value_a = 0x00CC, .value_g = 0x00CC, .flags = B206X_FLAG_A | B206X_FLAG_G, },
236 { .offset = B2062_S_RFPLL_CTL34, .value_a = 0x0007, .value_g = 0x0007, .flags = B206X_FLAG_A | B206X_FLAG_G, },
237
238
239
240
241
242
243
244
245 { .offset = B2062_S_RXG_CNT8, .value_a = 0x000F, .value_g = 0x000F, .flags = B206X_FLAG_A, },
246
247
248
249
250
251
252
253
254
255};
256
257static const struct b206x_init_tab_entry b2063_init_tab[] = {
258 { .offset = B2063_COMM1, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
259
260
261
262
263
264
265
266
267 { .offset = B2063_COMM10, .value_a = 0x0001, .value_g = 0x0000, .flags = B206X_FLAG_A, },
268
269
270
271
272
273 { .offset = B2063_COMM16, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
274 { .offset = B2063_COMM17, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
275 { .offset = B2063_COMM18, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
276 { .offset = B2063_COMM19, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
277 { .offset = B2063_COMM20, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
278 { .offset = B2063_COMM21, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
279 { .offset = B2063_COMM22, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
280 { .offset = B2063_COMM23, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
281 { .offset = B2063_COMM24, .value_a = 0x0000, .value_g = 0x0000, .flags = B206X_FLAG_G, },
282
283
284
285 { .offset = B2063_LOGEN_SP1, .value_a = 0x00e8, .value_g = 0x00d4, .flags = B206X_FLAG_A | B206X_FLAG_G, },
286 { .offset = B2063_LOGEN_SP2, .value_a = 0x00a7, .value_g = 0x0053, .flags = B206X_FLAG_A | B206X_FLAG_G, },
287
288 { .offset = B2063_LOGEN_SP4, .value_a = 0x00f0, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
289
290 { .offset = B2063_G_RX_SP1, .value_a = 0x001f, .value_g = 0x005e, .flags = B206X_FLAG_G, },
291 { .offset = B2063_G_RX_SP2, .value_a = 0x007f, .value_g = 0x007e, .flags = B206X_FLAG_G, },
292 { .offset = B2063_G_RX_SP3, .value_a = 0x0030, .value_g = 0x00f0, .flags = B206X_FLAG_G, },
293
294
295
296 { .offset = B2063_G_RX_SP7, .value_a = 0x007f, .value_g = 0x007f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
297
298
299 { .offset = B2063_G_RX_SP10, .value_a = 0x000c, .value_g = 0x000c, .flags = B206X_FLAG_A | B206X_FLAG_G, },
300
301 { .offset = B2063_A_RX_SP1, .value_a = 0x003c, .value_g = 0x003f, .flags = B206X_FLAG_A, },
302 { .offset = B2063_A_RX_SP2, .value_a = 0x00fc, .value_g = 0x00fe, .flags = B206X_FLAG_A, },
303
304
305
306
307 { .offset = B2063_A_RX_SP7, .value_a = 0x0008, .value_g = 0x0008, .flags = B206X_FLAG_A | B206X_FLAG_G, },
308
309
310
311 { .offset = B2063_RX_BB_SP4, .value_a = 0x0060, .value_g = 0x0060, .flags = B206X_FLAG_A | B206X_FLAG_G, },
312
313
314
315 { .offset = B2063_RX_BB_SP8, .value_a = 0x0030, .value_g = 0x0030, .flags = B206X_FLAG_A | B206X_FLAG_G, },
316
317
318 { .offset = B2063_TX_RF_SP3, .value_a = 0x000c, .value_g = 0x000b, .flags = B206X_FLAG_A | B206X_FLAG_G, },
319 { .offset = B2063_TX_RF_SP4, .value_a = 0x0010, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
320
321
322
323
324
325
326
327
328
329
330
331
332
333 { .offset = B2063_PA_SP1, .value_a = 0x003d, .value_g = 0x00fd, .flags = B206X_FLAG_A | B206X_FLAG_G, },
334
335
336
337
338
339
340 { .offset = B2063_TX_BB_SP1, .value_a = 0x0002, .value_g = 0x0002, .flags = B206X_FLAG_A | B206X_FLAG_G, },
341
342
343
344 { .offset = B2063_BANDGAP_CTL1, .value_a = 0x0056, .value_g = 0x0056, .flags = B206X_FLAG_A | B206X_FLAG_G, },
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375 { .offset = B2063_PLL_JTAG_PLL_VCO2, .value_a = 0x00f7, .value_g = 0x00f7, .flags = B206X_FLAG_A | B206X_FLAG_G, },
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453 { .offset = B2063_G_RX_MIX3, .value_a = 0x0071, .value_g = 0x0071, .flags = B206X_FLAG_A | B206X_FLAG_G, },
454 { .offset = B2063_G_RX_MIX4, .value_a = 0x0071, .value_g = 0x0071, .flags = B206X_FLAG_A | B206X_FLAG_G, },
455
456
457
458
459
460
461
462
463
464 { .offset = B2063_A_RX_1ST2, .value_a = 0x00f0, .value_g = 0x0030, .flags = B206X_FLAG_A, },
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480 { .offset = B2063_A_RX_PS6, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
481
482
483
484 { .offset = B2063_A_RX_MIX4, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
485 { .offset = B2063_A_RX_MIX5, .value_a = 0x000f, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
486 { .offset = B2063_A_RX_MIX6, .value_a = 0x000f, .value_g = 0x000f, .flags = B206X_FLAG_A | B206X_FLAG_G, },
487
488
489
490
491
492
493 { .offset = B2063_RX_TIA_CTL1, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
494
495 { .offset = B2063_RX_TIA_CTL3, .value_a = 0x0077, .value_g = 0x0077, .flags = B206X_FLAG_A | B206X_FLAG_G, },
496
497
498
499
500 { .offset = B2063_RX_BB_CTL2, .value_a = 0x0004, .value_g = 0x0004, .flags = B206X_FLAG_A | B206X_FLAG_G, },
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524 { .offset = B2063_PA_CTL1, .value_a = 0x0000, .value_g = 0x0004, .flags = B206X_FLAG_A, },
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542 { .offset = B2063_VREG_CTL1, .value_a = 0x0003, .value_g = 0x0003, .flags = B206X_FLAG_A | B206X_FLAG_G, },
543
544
545
546
547
548
549
550
551
552
553
554};
555
556void b2062_upload_init_table(struct b43_wldev *dev)
557{
558 const struct b206x_init_tab_entry *e;
559 unsigned int i;
560
561 for (i = 0; i < ARRAY_SIZE(b2062_init_tab); i++) {
562 e = &b2062_init_tab[i];
563 if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
564 if (!(e->flags & B206X_FLAG_G))
565 continue;
566 b43_radio_write(dev, e->offset, e->value_g);
567 } else {
568 if (!(e->flags & B206X_FLAG_A))
569 continue;
570 b43_radio_write(dev, e->offset, e->value_a);
571 }
572 }
573}
574
575void b2063_upload_init_table(struct b43_wldev *dev)
576{
577 const struct b206x_init_tab_entry *e;
578 unsigned int i;
579
580 for (i = 0; i < ARRAY_SIZE(b2063_init_tab); i++) {
581 e = &b2063_init_tab[i];
582 if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) {
583 if (!(e->flags & B206X_FLAG_G))
584 continue;
585 b43_radio_write(dev, e->offset, e->value_g);
586 } else {
587 if (!(e->flags & B206X_FLAG_A))
588 continue;
589 b43_radio_write(dev, e->offset, e->value_a);
590 }
591 }
592}
593
594u32 b43_lptab_read(struct b43_wldev *dev, u32 offset)
595{
596 u32 type, value;
597
598 type = offset & B43_LPTAB_TYPEMASK;
599 offset &= ~B43_LPTAB_TYPEMASK;
600 B43_WARN_ON(offset > 0xFFFF);
601
602 switch (type) {
603 case B43_LPTAB_8BIT:
604 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
605 value = b43_phy_read(dev, B43_LPPHY_TABLEDATALO) & 0xFF;
606 break;
607 case B43_LPTAB_16BIT:
608 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
609 value = b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
610 break;
611 case B43_LPTAB_32BIT:
612 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
613 value = b43_phy_read(dev, B43_LPPHY_TABLEDATAHI);
614 value <<= 16;
615 value |= b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
616 break;
617 default:
618 B43_WARN_ON(1);
619 value = 0;
620 }
621
622 return value;
623}
624
625void b43_lptab_read_bulk(struct b43_wldev *dev, u32 offset,
626 unsigned int nr_elements, void *_data)
627{
628 u32 type;
629 u8 *data = _data;
630 unsigned int i;
631
632 type = offset & B43_LPTAB_TYPEMASK;
633 offset &= ~B43_LPTAB_TYPEMASK;
634 B43_WARN_ON(offset > 0xFFFF);
635
636 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
637
638 for (i = 0; i < nr_elements; i++) {
639 switch (type) {
640 case B43_LPTAB_8BIT:
641 *data = b43_phy_read(dev, B43_LPPHY_TABLEDATALO) & 0xFF;
642 data++;
643 break;
644 case B43_LPTAB_16BIT:
645 *((u16 *)data) = b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
646 data += 2;
647 break;
648 case B43_LPTAB_32BIT:
649 *((u32 *)data) = b43_phy_read(dev, B43_LPPHY_TABLEDATAHI);
650 *((u32 *)data) <<= 16;
651 *((u32 *)data) |= b43_phy_read(dev, B43_LPPHY_TABLEDATALO);
652 data += 4;
653 break;
654 default:
655 B43_WARN_ON(1);
656 }
657 }
658}
659
660void b43_lptab_write(struct b43_wldev *dev, u32 offset, u32 value)
661{
662 u32 type;
663
664 type = offset & B43_LPTAB_TYPEMASK;
665 offset &= ~B43_LPTAB_TYPEMASK;
666 B43_WARN_ON(offset > 0xFFFF);
667
668 switch (type) {
669 case B43_LPTAB_8BIT:
670 B43_WARN_ON(value & ~0xFF);
671 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
672 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
673 break;
674 case B43_LPTAB_16BIT:
675 B43_WARN_ON(value & ~0xFFFF);
676 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
677 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
678 break;
679 case B43_LPTAB_32BIT:
680 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
681 b43_phy_write(dev, B43_LPPHY_TABLEDATAHI, value >> 16);
682 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
683 break;
684 default:
685 B43_WARN_ON(1);
686 }
687}
688
689void b43_lptab_write_bulk(struct b43_wldev *dev, u32 offset,
690 unsigned int nr_elements, const void *_data)
691{
692 u32 type, value;
693 const u8 *data = _data;
694 unsigned int i;
695
696 type = offset & B43_LPTAB_TYPEMASK;
697 offset &= ~B43_LPTAB_TYPEMASK;
698 B43_WARN_ON(offset > 0xFFFF);
699
700 b43_phy_write(dev, B43_LPPHY_TABLE_ADDR, offset);
701
702 for (i = 0; i < nr_elements; i++) {
703 switch (type) {
704 case B43_LPTAB_8BIT:
705 value = *data;
706 data++;
707 B43_WARN_ON(value & ~0xFF);
708 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
709 break;
710 case B43_LPTAB_16BIT:
711 value = *((u16 *)data);
712 data += 2;
713 B43_WARN_ON(value & ~0xFFFF);
714 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
715 break;
716 case B43_LPTAB_32BIT:
717 value = *((u32 *)data);
718 data += 4;
719 b43_phy_write(dev, B43_LPPHY_TABLEDATAHI, value >> 16);
720 b43_phy_write(dev, B43_LPPHY_TABLEDATALO, value);
721 break;
722 default:
723 B43_WARN_ON(1);
724 }
725 }
726}
727
728static const u8 lpphy_min_sig_sq_table[] = {
729 0xde, 0xdc, 0xda, 0xd8, 0xd6, 0xd4, 0xd2, 0xcf, 0xcd,
730 0xca, 0xc7, 0xc4, 0xc1, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
731 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0x00,
732 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
733 0xbe, 0xbe, 0xbe, 0xbe, 0xc1, 0xc4, 0xc7, 0xca, 0xcd,
734 0xcf, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde,
735};
736
737static const u16 lpphy_rev01_noise_scale_table[] = {
738 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4,
739 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa400, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4,
740 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0xa4a4, 0x00a4,
741 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c00, 0x2d36,
742 0x0000, 0x0000, 0x4c00, 0x2d36,
743};
744
745static const u16 lpphy_rev2plus_noise_scale_table[] = {
746 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
747 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
748 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x0000,
749 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
750 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
751 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4, 0x00a4,
752 0x00a4,
753};
754
755static const u16 lpphy_crs_gain_nft_table[] = {
756 0x0366, 0x036a, 0x036f, 0x0364, 0x0367, 0x036d, 0x0374, 0x037f, 0x036f,
757 0x037b, 0x038a, 0x0378, 0x0367, 0x036d, 0x0375, 0x0381, 0x0374, 0x0381,
758 0x0392, 0x03a9, 0x03c4, 0x03e1, 0x0001, 0x001f, 0x0040, 0x005e, 0x007f,
759 0x009e, 0x00bd, 0x00dd, 0x00fd, 0x011d, 0x013d,
760};
761
762static const u16 lpphy_rev01_filter_control_table[] = {
763 0xa0fc, 0x10fc, 0x10db, 0x20b7, 0xff93, 0x10bf, 0x109b, 0x2077, 0xff53,
764 0x0127,
765};
766
767static const u32 lpphy_rev2plus_filter_control_table[] = {
768 0x000141fc, 0x000021fc, 0x000021b7, 0x0000416f, 0x0001ff27, 0x0000217f,
769 0x00002137, 0x000040ef, 0x0001fea7, 0x0000024f,
770};
771
772static const u32 lpphy_rev01_ps_control_table[] = {
773 0x00010000, 0x000000a0, 0x00040000, 0x00000048, 0x08080101, 0x00000080,
774 0x08080101, 0x00000040, 0x08080101, 0x000000c0, 0x08a81501, 0x000000c0,
775 0x0fe8fd01, 0x000000c0, 0x08300105, 0x000000c0, 0x08080201, 0x000000c0,
776 0x08280205, 0x000000c0, 0xe80802fe, 0x000000c7, 0x28080206, 0x000000c0,
777 0x08080202, 0x000000c0, 0x0ba87602, 0x000000c0, 0x1068013d, 0x000000c0,
778 0x10280105, 0x000000c0, 0x08880102, 0x000000c0, 0x08280106, 0x000000c0,
779 0xe80801fd, 0x000000c7, 0xa8080115, 0x000000c0,
780};
781
782static const u32 lpphy_rev2plus_ps_control_table[] = {
783 0x00e38e08, 0x00e08e38, 0x00000000, 0x00000000, 0x00000000, 0x00002080,
784 0x00006180, 0x00003002, 0x00000040, 0x00002042, 0x00180047, 0x00080043,
785 0x00000041, 0x000020c1, 0x00046006, 0x00042002, 0x00040000, 0x00002003,
786 0x00180006, 0x00080002,
787};
788
789static const u8 lpphy_pll_fraction_table[] = {
790 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80,
791 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
792};
793
794static const u16 lpphy_iqlo_cal_table[] = {
795 0x0200, 0x0300, 0x0400, 0x0600, 0x0800, 0x0b00, 0x1000, 0x1001, 0x1002,
796 0x1003, 0x1004, 0x1005, 0x1006, 0x1007, 0x1707, 0x2007, 0x2d07, 0x4007,
797 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
798 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0300, 0x0400, 0x0600,
799 0x0800, 0x0b00, 0x1000, 0x1001, 0x1002, 0x1003, 0x1004, 0x1005, 0x1006,
800 0x1007, 0x1707, 0x2007, 0x2d07, 0x4007, 0x0000, 0x0000, 0x0000, 0x0000,
801 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
802 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
803 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
804 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x0000, 0x0000,
805 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
806 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
807};
808
809static const u16 lpphy_rev0_ofdm_cck_gain_table[] = {
810 0x0001, 0x0001, 0x0001, 0x0001, 0x1001, 0x2001, 0x3001, 0x4001, 0x5001,
811 0x6001, 0x7001, 0x7011, 0x7021, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
812 0x006d, 0x007d, 0x014d, 0x015d, 0x115d, 0x035d, 0x135d, 0x055d, 0x155d,
813 0x0d5d, 0x1d5d, 0x2d5d, 0x555d, 0x655d, 0x755d,
814};
815
816static const u16 lpphy_rev1_ofdm_cck_gain_table[] = {
817 0x5000, 0x6000, 0x7000, 0x0001, 0x1001, 0x2001, 0x3001, 0x4001, 0x5001,
818 0x6001, 0x7001, 0x7011, 0x7021, 0x2035, 0x2045, 0x2055, 0x2065, 0x2075,
819 0x006d, 0x007d, 0x014d, 0x015d, 0x115d, 0x035d, 0x135d, 0x055d, 0x155d,
820 0x0d5d, 0x1d5d, 0x2d5d, 0x555d, 0x655d, 0x755d,
821};
822
823static const u16 lpphy_gain_delta_table[] = {
824 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
825};
826
827static const u32 lpphy_tx_power_control_table[] = {
828 0x00000050, 0x0000004f, 0x0000004e, 0x0000004d, 0x0000004c, 0x0000004b,
829 0x0000004a, 0x00000049, 0x00000048, 0x00000047, 0x00000046, 0x00000045,
830 0x00000044, 0x00000043, 0x00000042, 0x00000041, 0x00000040, 0x0000003f,
831 0x0000003e, 0x0000003d, 0x0000003c, 0x0000003b, 0x0000003a, 0x00000039,
832 0x00000038, 0x00000037, 0x00000036, 0x00000035, 0x00000034, 0x00000033,
833 0x00000032, 0x00000031, 0x00000030, 0x0000002f, 0x0000002e, 0x0000002d,
834 0x0000002c, 0x0000002b, 0x0000002a, 0x00000029, 0x00000028, 0x00000027,
835 0x00000026, 0x00000025, 0x00000024, 0x00000023, 0x00000022, 0x00000021,
836 0x00000020, 0x0000001f, 0x0000001e, 0x0000001d, 0x0000001c, 0x0000001b,
837 0x0000001a, 0x00000019, 0x00000018, 0x00000017, 0x00000016, 0x00000015,
838 0x00000014, 0x00000013, 0x00000012, 0x00000011, 0x00000000, 0x00000000,
839 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
840 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
841 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
842 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
843 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
844 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
845 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
846 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
847 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
848 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
849 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
850 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
851 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
852 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
853 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
854 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
855 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
856 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
857 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
858 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
859 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
860 0x000075a0, 0x000075a0, 0x000075a1, 0x000075a1, 0x000075a2, 0x000075a2,
861 0x000075a3, 0x000075a3, 0x000074b0, 0x000074b0, 0x000074b1, 0x000074b1,
862 0x000074b2, 0x000074b2, 0x000074b3, 0x000074b3, 0x00006d20, 0x00006d20,
863 0x00006d21, 0x00006d21, 0x00006d22, 0x00006d22, 0x00006d23, 0x00006d23,
864 0x00004660, 0x00004660, 0x00004661, 0x00004661, 0x00004662, 0x00004662,
865 0x00004663, 0x00004663, 0x00003e60, 0x00003e60, 0x00003e61, 0x00003e61,
866 0x00003e62, 0x00003e62, 0x00003e63, 0x00003e63, 0x00003660, 0x00003660,
867 0x00003661, 0x00003661, 0x00003662, 0x00003662, 0x00003663, 0x00003663,
868 0x00002e60, 0x00002e60, 0x00002e61, 0x00002e61, 0x00002e62, 0x00002e62,
869 0x00002e63, 0x00002e63, 0x00002660, 0x00002660, 0x00002661, 0x00002661,
870 0x00002662, 0x00002662, 0x00002663, 0x00002663, 0x000025e0, 0x000025e0,
871 0x000025e1, 0x000025e1, 0x000025e2, 0x000025e2, 0x000025e3, 0x000025e3,
872 0x00001de0, 0x00001de0, 0x00001de1, 0x00001de1, 0x00001de2, 0x00001de2,
873 0x00001de3, 0x00001de3, 0x00001d60, 0x00001d60, 0x00001d61, 0x00001d61,
874 0x00001d62, 0x00001d62, 0x00001d63, 0x00001d63, 0x00001560, 0x00001560,
875 0x00001561, 0x00001561, 0x00001562, 0x00001562, 0x00001563, 0x00001563,
876 0x00000d60, 0x00000d60, 0x00000d61, 0x00000d61, 0x00000d62, 0x00000d62,
877 0x00000d63, 0x00000d63, 0x00000ce0, 0x00000ce0, 0x00000ce1, 0x00000ce1,
878 0x00000ce2, 0x00000ce2, 0x00000ce3, 0x00000ce3, 0x00000e10, 0x00000e10,
879 0x00000e11, 0x00000e11, 0x00000e12, 0x00000e12, 0x00000e13, 0x00000e13,
880 0x00000bf0, 0x00000bf0, 0x00000bf1, 0x00000bf1, 0x00000bf2, 0x00000bf2,
881 0x00000bf3, 0x00000bf3, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
882 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
883 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
884 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
885 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
886 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
887 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
888 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
889 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
890 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
891 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
892 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
893 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
894 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
895 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
896 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
897 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
898 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
899 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
900 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
901 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x04200000, 0x04000000,
902 0x04200000, 0x04000000, 0x04200000, 0x04000000, 0x000000ff, 0x000002fc,
903 0x0000fa08, 0x00000305, 0x00000206, 0x00000304, 0x0000fb04, 0x0000fcff,
904 0x000005fb, 0x0000fd01, 0x00000401, 0x00000006, 0x0000ff03, 0x000007fc,
905 0x0000fc08, 0x00000203, 0x0000fffb, 0x00000600, 0x0000fa01, 0x0000fc03,
906 0x0000fe06, 0x0000fe00, 0x00000102, 0x000007fd, 0x000004fb, 0x000006ff,
907 0x000004fd, 0x0000fdfa, 0x000007fb, 0x0000fdfa, 0x0000fa06, 0x00000500,
908 0x0000f902, 0x000007fa, 0x0000fafa, 0x00000500, 0x000007fa, 0x00000700,
909 0x00000305, 0x000004ff, 0x00000801, 0x00000503, 0x000005f9, 0x00000404,
910 0x0000fb08, 0x000005fd, 0x00000501, 0x00000405, 0x0000fb03, 0x000007fc,
911 0x00000403, 0x00000303, 0x00000402, 0x0000faff, 0x0000fe05, 0x000005fd,
912 0x0000fe01, 0x000007fa, 0x00000202, 0x00000504, 0x00000102, 0x000008fe,
913 0x0000fa04, 0x0000fafc, 0x0000fe08, 0x000000f9, 0x000002fa, 0x000003fe,
914 0x00000304, 0x000004f9, 0x00000100, 0x0000fd06, 0x000008fc, 0x00000701,
915 0x00000504, 0x0000fdfe, 0x0000fdfc, 0x000003fe, 0x00000704, 0x000002fc,
916 0x000004f9, 0x0000fdfd, 0x0000fa07, 0x00000205, 0x000003fd, 0x000005fb,
917 0x000004f9, 0x00000804, 0x0000fc06, 0x0000fcf9, 0x00000100, 0x0000fe05,
918 0x00000408, 0x0000fb02, 0x00000304, 0x000006fe, 0x000004fa, 0x00000305,
919 0x000008fc, 0x00000102, 0x000001fd, 0x000004fc, 0x0000fe03, 0x00000701,
920 0x000001fb, 0x000001f9, 0x00000206, 0x000006fd, 0x00000508, 0x00000700,
921 0x00000304, 0x000005fe, 0x000005ff, 0x0000fa04, 0x00000303, 0x0000fefb,
922 0x000007f9, 0x0000fefc, 0x000004fd, 0x000005fc, 0x0000fffd, 0x0000fc08,
923 0x0000fbf9, 0x0000fd07, 0x000008fb, 0x0000fe02, 0x000006fb, 0x00000702,
924};
925
926static const u32 lpphy_gain_idx_table[] = {
927 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
928 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
929 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
930 0x10000001, 0x00000000, 0x20000082, 0x00000000, 0x40000104, 0x00000000,
931 0x60004207, 0x00000001, 0x7000838a, 0x00000001, 0xd021050d, 0x00000001,
932 0xe041c683, 0x00000001, 0x50828805, 0x00000000, 0x80e34288, 0x00000000,
933 0xb144040b, 0x00000000, 0xe1a6058e, 0x00000000, 0x12064711, 0x00000001,
934 0xb0a18612, 0x00000010, 0xe1024794, 0x00000010, 0x11630915, 0x00000011,
935 0x31c3ca1b, 0x00000011, 0xc1848a9c, 0x00000018, 0xf1e50da0, 0x00000018,
936 0x22468e21, 0x00000019, 0x4286d023, 0x00000019, 0xa347d0a4, 0x00000019,
937 0xb36811a6, 0x00000019, 0xf3e89227, 0x00000019, 0x0408d329, 0x0000001a,
938 0x244953aa, 0x0000001a, 0x346994ab, 0x0000001a, 0x54aa152c, 0x0000001a,
939 0x64ca55ad, 0x0000001a, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
940 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
941 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
942 0x00000000, 0x00000000, 0x10000001, 0x00000000, 0x20000082, 0x00000000,
943 0x40000104, 0x00000000, 0x60004207, 0x00000001, 0x7000838a, 0x00000001,
944 0xd021050d, 0x00000001, 0xe041c683, 0x00000001, 0x50828805, 0x00000000,
945 0x80e34288, 0x00000000, 0xb144040b, 0x00000000, 0xe1a6058e, 0x00000000,
946 0x12064711, 0x00000001, 0xb0a18612, 0x00000010, 0xe1024794, 0x00000010,
947 0x11630915, 0x00000011, 0x31c3ca1b, 0x00000011, 0xc1848a9c, 0x00000018,
948 0xf1e50da0, 0x00000018, 0x22468e21, 0x00000019, 0x4286d023, 0x00000019,
949 0xa347d0a4, 0x00000019, 0xb36811a6, 0x00000019, 0xf3e89227, 0x00000019,
950 0x0408d329, 0x0000001a, 0x244953aa, 0x0000001a, 0x346994ab, 0x0000001a,
951 0x54aa152c, 0x0000001a, 0x64ca55ad, 0x0000001a,
952};
953
954static const u16 lpphy_aux_gain_idx_table[] = {
955 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
956 0x0001, 0x0002, 0x0004, 0x0016, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
957 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0004, 0x0016,
958};
959
960static const u32 lpphy_gain_value_table[] = {
961 0x00000008, 0x0000000e, 0x00000014, 0x0000001a, 0x000000fb, 0x00000004,
962 0x00000008, 0x0000000d, 0x00000001, 0x00000004, 0x00000007, 0x0000000a,
963 0x0000000d, 0x00000010, 0x00000012, 0x00000015, 0x00000000, 0x00000006,
964 0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000,
965 0x00000000, 0x00000000, 0x00000018, 0x00000000, 0x00000000, 0x00000000,
966 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
967 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
968 0x0000001e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
969 0x00000000, 0x00000003, 0x00000006, 0x00000009, 0x0000000c, 0x0000000f,
970 0x00000012, 0x00000015, 0x00000018, 0x0000001b, 0x0000001e, 0x00000000,
971 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000009, 0x000000f1,
972 0x00000000, 0x00000000,
973};
974
975static const u16 lpphy_gain_table[] = {
976 0x0000, 0x0400, 0x0800, 0x0802, 0x0804, 0x0806, 0x0807, 0x0808, 0x080a,
977 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0812, 0x0813, 0x0814, 0x0816,
978 0x0817, 0x081a, 0x081b, 0x081f, 0x0820, 0x0824, 0x0830, 0x0834, 0x0837,
979 0x083b, 0x083f, 0x0840, 0x0844, 0x0857, 0x085b, 0x085f, 0x08d7, 0x08db,
980 0x08df, 0x0957, 0x095b, 0x095f, 0x0b57, 0x0b5b, 0x0b5f, 0x0f5f, 0x135f,
981 0x175f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
982 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
983 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
984 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
985 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
986 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
987};
988
989static const u32 lpphy_a0_gain_idx_table[] = {
990 0x001111e0, 0x00652051, 0x00606055, 0x005b005a, 0x00555060, 0x00511065,
991 0x004c806b, 0x0047d072, 0x00444078, 0x00400080, 0x003ca087, 0x0039408f,
992 0x0035e098, 0x0032e0a1, 0x003030aa, 0x002d80b4, 0x002ae0bf, 0x002880ca,
993 0x002640d6, 0x002410e3, 0x002220f0, 0x002020ff, 0x001e510e, 0x001ca11e,
994 0x001b012f, 0x00199140, 0x00182153, 0x0016c168, 0x0015817d, 0x00145193,
995 0x001321ab, 0x001211c5, 0x001111e0, 0x001021fc, 0x000f321a, 0x000e523a,
996 0x000d925c, 0x000cd27f, 0x000c12a5, 0x000b62cd, 0x000ac2f8, 0x000a2325,
997 0x00099355, 0x00091387, 0x000883bd, 0x000813f5, 0x0007a432, 0x00073471,
998 0x0006c4b5, 0x000664fc, 0x00061547, 0x0005b598, 0x000565ec, 0x00051646,
999 0x0004d6a5, 0x0004870a, 0x00044775, 0x000407e6, 0x0003d85e, 0x000398dd,
1000 0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
1001};
1002
1003static const u16 lpphy_a0_aux_gain_idx_table[] = {
1004 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1005 0x0000, 0x0000, 0x0002, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1006 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0014,
1007};
1008
1009static const u32 lpphy_a0_gain_value_table[] = {
1010 0x00000008, 0x0000000e, 0x00000014, 0x0000001a, 0x000000fb, 0x00000004,
1011 0x00000008, 0x0000000d, 0x00000001, 0x00000004, 0x00000007, 0x0000000a,
1012 0x0000000d, 0x00000010, 0x00000012, 0x00000015, 0x00000000, 0x00000006,
1013 0x0000000c, 0x00000000, 0x00000000, 0x00000000, 0x00000012, 0x00000000,
1014 0x00000000, 0x00000000, 0x00000018, 0x00000000, 0x00000000, 0x00000000,
1015 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1016 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1017 0x0000001e, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
1018 0x00000000, 0x00000003, 0x00000006, 0x00000009, 0x0000000c, 0x0000000f,
1019 0x00000012, 0x00000015, 0x00000018, 0x0000001b, 0x0000001e, 0x00000000,
1020 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000f, 0x000000f7,
1021 0x00000000, 0x00000000,
1022};
1023
1024static const u16 lpphy_a0_gain_table[] = {
1025 0x0000, 0x0002, 0x0004, 0x0006, 0x0007, 0x0008, 0x000a, 0x000b, 0x000c,
1026 0x000e, 0x000f, 0x0010, 0x0012, 0x0013, 0x0014, 0x0016, 0x0017, 0x001a,
1027 0x001b, 0x001f, 0x0020, 0x0024, 0x0030, 0x0034, 0x0037, 0x003b, 0x003f,
1028 0x0040, 0x0044, 0x0057, 0x005b, 0x005f, 0x00d7, 0x00db, 0x00df, 0x0157,
1029 0x015b, 0x015f, 0x0357, 0x035b, 0x035f, 0x075f, 0x0b5f, 0x0f5f, 0x0000,
1030 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1031 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1032 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1033 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1034 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1035 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
1036};
1037
1038static const u16 lpphy_sw_control_table[] = {
1039 0x0128, 0x0128, 0x0009, 0x0009, 0x0028, 0x0028, 0x0028, 0x0028, 0x0128,
1040 0x0128, 0x0009, 0x0009, 0x0028, 0x0028, 0x0028, 0x0028, 0x0009, 0x0009,
1041 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0018, 0x0018, 0x0018,
1042 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0128, 0x0128, 0x0009, 0x0009,
1043 0x0028, 0x0028, 0x0028, 0x0028, 0x0128, 0x0128, 0x0009, 0x0009, 0x0028,
1044 0x0028, 0x0028, 0x0028, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009, 0x0009,
1045 0x0009, 0x0009, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018, 0x0018,
1046 0x0018,
1047};
1048
1049static const u8 lpphy_hf_table[] = {
1050 0x4b, 0x36, 0x24, 0x18, 0x49, 0x34, 0x23, 0x17, 0x48,
1051 0x33, 0x23, 0x17, 0x48, 0x33, 0x23, 0x17,
1052};
1053
1054static const u32 lpphy_papd_eps_table[] = {
1055 0x00000000, 0x00013ffc, 0x0001dff3, 0x0001bff0, 0x00023fe9, 0x00021fdf,
1056 0x00028fdf, 0x00033fd2, 0x00039fcb, 0x00043fc7, 0x0004efc2, 0x00055fb5,
1057 0x0005cfb0, 0x00063fa8, 0x00068fa3, 0x00071f98, 0x0007ef92, 0x00084f8b,
1058 0x0008df82, 0x00097f77, 0x0009df69, 0x000a3f62, 0x000adf57, 0x000b6f4c,
1059 0x000bff41, 0x000c9f39, 0x000cff30, 0x000dbf27, 0x000e4f1e, 0x000edf16,
1060 0x000f7f13, 0x00102f11, 0x00110f10, 0x0011df11, 0x0012ef15, 0x00143f1c,
1061 0x00158f27, 0x00172f35, 0x00193f47, 0x001baf5f, 0x001e6f7e, 0x0021cfa4,
1062 0x0025bfd2, 0x002a2008, 0x002fb047, 0x00360090, 0x003d40e0, 0x0045c135,
1063 0x004fb189, 0x005ae1d7, 0x0067221d, 0x0075025a, 0x007ff291, 0x007ff2bf,
1064 0x007ff2e3, 0x007ff2ff, 0x007ff315, 0x007ff329, 0x007ff33f, 0x007ff356,
1065 0x007ff36e, 0x007ff39c, 0x007ff441, 0x007ff506,
1066};
1067
1068static const u32 lpphy_papd_mult_table[] = {
1069 0x001111e0, 0x00652051, 0x00606055, 0x005b005a, 0x00555060, 0x00511065,
1070 0x004c806b, 0x0047d072, 0x00444078, 0x00400080, 0x003ca087, 0x0039408f,
1071 0x0035e098, 0x0032e0a1, 0x003030aa, 0x002d80b4, 0x002ae0bf, 0x002880ca,
1072 0x002640d6, 0x002410e3, 0x002220f0, 0x002020ff, 0x001e510e, 0x001ca11e,
1073 0x001b012f, 0x00199140, 0x00182153, 0x0016c168, 0x0015817d, 0x00145193,
1074 0x001321ab, 0x001211c5, 0x001111e0, 0x001021fc, 0x000f321a, 0x000e523a,
1075 0x000d925c, 0x000cd27f, 0x000c12a5, 0x000b62cd, 0x000ac2f8, 0x000a2325,
1076 0x00099355, 0x00091387, 0x000883bd, 0x000813f5, 0x0007a432, 0x00073471,
1077 0x0006c4b5, 0x000664fc, 0x00061547, 0x0005b598, 0x000565ec, 0x00051646,
1078 0x0004d6a5, 0x0004870a, 0x00044775, 0x000407e6, 0x0003d85e, 0x000398dd,
1079 0x00036963, 0x000339f2, 0x00030a89, 0x0002db28,
1080};
1081
1082static struct lpphy_tx_gain_table_entry lpphy_rev0_nopa_tx_gain_table[] = {
1083 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1084 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1085 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1086 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1087 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1088 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1089 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1090 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1091 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1092 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1093 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1094 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1095 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1096 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1097 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1098 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1099 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1100 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1101 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1102 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1103 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1104 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1105 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1106 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1107 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1108 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1109 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1110 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1111 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1112 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1113 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1114 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1115 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1116 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1117 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1118 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1119 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1120 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1121 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1122 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1123 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1124 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1125 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1126 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1127 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1128 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1129 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1130 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1131 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1132 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1133 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1134 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1135 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1136 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1137 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1138 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1139 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1140 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1141 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1142 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1143 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1144 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1145 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1146 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1147 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1148 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1149 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1150 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1151 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1152 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1153 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1154 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1155 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1156 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1157 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1158 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1159 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1160 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1161 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1162 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1163 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1164 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1165 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1166 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1167 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1168 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1169 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1170 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1171 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1172 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1173 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1174 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1175 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1176 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1177 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1178 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1179 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1180 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1181 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1182 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1183 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1184 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1185 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1186 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1187 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1188 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1189 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1190 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1191 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1192 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1193 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1194 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1195 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1196 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1197 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1198 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1199 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1200 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1201 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1202 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1203 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1204 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1205 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1206 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1207 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1208 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1209 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1210 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1211};
1212
1213static struct lpphy_tx_gain_table_entry lpphy_rev0_2ghz_tx_gain_table[] = {
1214 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1215 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1216 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1217 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1218 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1219 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1220 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1221 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1222 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1223 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1224 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1225 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1226 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1227 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1228 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1229 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1230 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1231 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1232 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1233 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1234 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1235 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1236 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1237 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1238 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1239 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1240 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1241 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1242 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1243 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1244 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1245 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1246 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1247 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1248 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1249 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1250 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1251 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1252 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1253 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1254 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1255 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1256 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1257 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1258 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1259 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1260 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1261 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1262 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1263 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1264 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1265 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1266 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1267 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1268 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1269 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1270 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1271 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1272 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1273 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1274 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1275 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1276 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1277 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1278 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1279 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1280 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1281 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1282 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 59, },
1283 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 72, },
1284 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 70, },
1285 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 68, },
1286 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 66, },
1287 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 64, },
1288 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 62, },
1289 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 60, },
1290 { .gm = 4, .pga = 10, .pad = 5, .dac = 0, .bb_mult = 59, },
1291 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 70, },
1292 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 68, },
1293 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 66, },
1294 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 64, },
1295 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 63, },
1296 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 61, },
1297 { .gm = 4, .pga = 9, .pad = 5, .dac = 0, .bb_mult = 59, },
1298 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 71, },
1299 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 69, },
1300 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 67, },
1301 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 65, },
1302 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 63, },
1303 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 62, },
1304 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 60, },
1305 { .gm = 4, .pga = 9, .pad = 4, .dac = 0, .bb_mult = 58, },
1306 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 70, },
1307 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 68, },
1308 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 66, },
1309 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 65, },
1310 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 63, },
1311 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 61, },
1312 { .gm = 4, .pga = 8, .pad = 4, .dac = 0, .bb_mult = 59, },
1313 { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 68, },
1314 { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 66, },
1315 { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 64, },
1316 { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 62, },
1317 { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 61, },
1318 { .gm = 4, .pga = 7, .pad = 4, .dac = 0, .bb_mult = 59, },
1319 { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 67, },
1320 { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 65, },
1321 { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 63, },
1322 { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 62, },
1323 { .gm = 4, .pga = 7, .pad = 3, .dac = 0, .bb_mult = 60, },
1324 { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 65, },
1325 { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 63, },
1326 { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 61, },
1327 { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 60, },
1328 { .gm = 4, .pga = 6, .pad = 3, .dac = 0, .bb_mult = 58, },
1329 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 68, },
1330 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 66, },
1331 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 64, },
1332 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 62, },
1333 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 60, },
1334 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 59, },
1335 { .gm = 4, .pga = 5, .pad = 3, .dac = 0, .bb_mult = 57, },
1336 { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 83, },
1337 { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 81, },
1338 { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 78, },
1339 { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 76, },
1340 { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 74, },
1341 { .gm = 4, .pga = 4, .pad = 2, .dac = 0, .bb_mult = 72, },
1342};
1343
1344static struct lpphy_tx_gain_table_entry lpphy_rev0_5ghz_tx_gain_table[] = {
1345 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1346 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1347 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1348 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1349 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1350 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1351 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1352 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1353 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1354 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1355 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1356 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1357 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1358 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1359 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1360 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1361 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1362 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1363 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1364 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1365 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1366 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1367 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1368 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1369 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1370 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1371 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1372 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1373 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1374 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1375 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1376 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1377 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1378 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1379 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1380 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1381 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1382 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1383 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1384 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1385 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1386 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1387 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1388 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1389 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1390 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1391 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1392 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1393 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1394 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1395 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1396 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1397 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1398 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1399 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1400 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1401 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1402 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1403 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1404 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1405 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1406 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1407 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1408 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1409 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1410 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1411 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1412 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1413 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1414 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1415 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1416 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1417 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1418 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1419 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1420 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1421 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1422 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1423 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1424 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1425 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1426 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1427 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1428 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1429 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1430 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1431 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1432 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1433 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1434 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1435 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1436 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1437 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1438 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1439 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1440 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1441 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1442 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1443 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1444 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1445 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1446 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1447 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1448 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1449 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1450 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1451 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1452 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1453 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1454 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1455 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1456 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1457 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1458 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1459 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1460 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1461 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1462 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1463 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1464 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1465 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1466 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1467 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1468 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1469 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1470 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1471 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1472 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1473};
1474
1475static struct lpphy_tx_gain_table_entry lpphy_rev1_nopa_tx_gain_table[] = {
1476 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 152, },
1477 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 147, },
1478 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 143, },
1479 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 139, },
1480 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 135, },
1481 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 131, },
1482 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 128, },
1483 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 124, },
1484 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 121, },
1485 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 117, },
1486 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 114, },
1487 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 111, },
1488 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 107, },
1489 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 104, },
1490 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 101, },
1491 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 99, },
1492 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 96, },
1493 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 93, },
1494 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 90, },
1495 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 88, },
1496 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 85, },
1497 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 83, },
1498 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 81, },
1499 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 78, },
1500 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 76, },
1501 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 74, },
1502 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1503 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1504 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1505 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1506 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1507 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1508 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1509 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1510 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1511 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1512 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1513 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1514 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1515 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1516 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1517 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1518 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1519 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 57, },
1520 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1521 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1522 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1523 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1524 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1525 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1526 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1527 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1528 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 57, },
1529 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 71, },
1530 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 69, },
1531 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 67, },
1532 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 65, },
1533 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 63, },
1534 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1535 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1536 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 58, },
1537 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1538 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1539 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1540 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1541 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1542 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1543 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1544 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1545 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1546 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1547 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1548 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1549 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1550 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1551 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1552 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1553 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1554 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 56, },
1555 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1556 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1557 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1558 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1559 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1560 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1561 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1562 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1563 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1564 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1565 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1566 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1567 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1568 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1569 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1570 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1571 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1572 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1573 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1574 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1575 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1576 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1577 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1578 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1579 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1580 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1581 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1582 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1583 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1584 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1585 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1586 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1587 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1588 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1589 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1590 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1591 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1592 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1593 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1594 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1595 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1596 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1597 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1598 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1599 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1600 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1601 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1602 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1603 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1604 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1605 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1606 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1607 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1608 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1609 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1610 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1611 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1612 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1613};
1614
1615static struct lpphy_tx_gain_table_entry lpphy_rev1_2ghz_tx_gain_table[] = {
1616 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1617 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1618 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1619 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1620 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1621 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1622 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1623 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1624 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1625 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1626 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1627 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1628 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1629 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1630 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1631 { .gm = 4, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1632 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1633 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1634 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1635 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1636 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1637 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1638 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1639 { .gm = 4, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 59, },
1640 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 72, },
1641 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 70, },
1642 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 68, },
1643 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 66, },
1644 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 64, },
1645 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1646 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1647 { .gm = 4, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 59, },
1648 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1649 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1650 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1651 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1652 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1653 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1654 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1655 { .gm = 4, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1656 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 72, },
1657 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 70, },
1658 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 68, },
1659 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 66, },
1660 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 64, },
1661 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 62, },
1662 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1663 { .gm = 4, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 59, },
1664 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 72, },
1665 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 70, },
1666 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 68, },
1667 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 66, },
1668 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 64, },
1669 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 62, },
1670 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1671 { .gm = 4, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 59, },
1672 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 72, },
1673 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1674 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1675 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1676 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1677 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1678 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 60, },
1679 { .gm = 4, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1680 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 72, },
1681 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 70, },
1682 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1683 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1684 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 64, },
1685 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 62, },
1686 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 60, },
1687 { .gm = 4, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1688 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 72, },
1689 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1690 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1691 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1692 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1693 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1694 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1695 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1696 { .gm = 4, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1697 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 72, },
1698 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1699 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1700 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1701 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1702 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1703 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1704 { .gm = 4, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1705 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 72, },
1706 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1707 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1708 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1709 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1710 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1711 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1712 { .gm = 4, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1713 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 73, },
1714 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 71, },
1715 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 69, },
1716 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 67, },
1717 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 65, },
1718 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 63, },
1719 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1720 { .gm = 4, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1721 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 72, },
1722 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1723 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1724 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1725 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 65, },
1726 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 63, },
1727 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1728 { .gm = 4, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1729 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 73, },
1730 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 71, },
1731 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1732 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1733 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1734 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1735 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 61, },
1736 { .gm = 4, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1737 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 72, },
1738 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 70, },
1739 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 68, },
1740 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 66, },
1741 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 64, },
1742 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 62, },
1743 { .gm = 4, .pga = 10, .pad = 6, .dac = 0, .bb_mult = 60, },
1744};
1745
1746static struct lpphy_tx_gain_table_entry lpphy_rev1_5ghz_tx_gain_table[] = {
1747 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 99, },
1748 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 96, },
1749 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 93, },
1750 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 90, },
1751 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 88, },
1752 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 85, },
1753 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 83, },
1754 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 81, },
1755 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 78, },
1756 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 76, },
1757 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 74, },
1758 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 72, },
1759 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 70, },
1760 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 68, },
1761 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 66, },
1762 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 64, },
1763 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 62, },
1764 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 60, },
1765 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 59, },
1766 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 57, },
1767 { .gm = 7, .pga = 15, .pad = 15, .dac = 0, .bb_mult = 55, },
1768 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 72, },
1769 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 70, },
1770 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 68, },
1771 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 66, },
1772 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 64, },
1773 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 62, },
1774 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 60, },
1775 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 58, },
1776 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 56, },
1777 { .gm = 7, .pga = 15, .pad = 14, .dac = 0, .bb_mult = 55, },
1778 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 71, },
1779 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 69, },
1780 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 67, },
1781 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 65, },
1782 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 63, },
1783 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 62, },
1784 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 60, },
1785 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 58, },
1786 { .gm = 7, .pga = 15, .pad = 13, .dac = 0, .bb_mult = 56, },
1787 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 72, },
1788 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 70, },
1789 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 68, },
1790 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 66, },
1791 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 64, },
1792 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 62, },
1793 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 60, },
1794 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 59, },
1795 { .gm = 7, .pga = 15, .pad = 12, .dac = 0, .bb_mult = 57, },
1796 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 73, },
1797 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 71, },
1798 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 69, },
1799 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 67, },
1800 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 65, },
1801 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 63, },
1802 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 61, },
1803 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 60, },
1804 { .gm = 7, .pga = 15, .pad = 11, .dac = 0, .bb_mult = 58, },
1805 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 71, },
1806 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 69, },
1807 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 67, },
1808 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 65, },
1809 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 63, },
1810 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 61, },
1811 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 60, },
1812 { .gm = 7, .pga = 15, .pad = 10, .dac = 0, .bb_mult = 58, },
1813 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 70, },
1814 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 68, },
1815 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 66, },
1816 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 64, },
1817 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 62, },
1818 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 61, },
1819 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 59, },
1820 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 57, },
1821 { .gm = 7, .pga = 15, .pad = 9, .dac = 0, .bb_mult = 56, },
1822 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 68, },
1823 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 66, },
1824 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 65, },
1825 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 63, },
1826 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 61, },
1827 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 59, },
1828 { .gm = 7, .pga = 14, .pad = 9, .dac = 0, .bb_mult = 58, },
1829 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 70, },
1830 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 68, },
1831 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 66, },
1832 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 64, },
1833 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 63, },
1834 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 61, },
1835 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 59, },
1836 { .gm = 7, .pga = 13, .pad = 9, .dac = 0, .bb_mult = 57, },
1837 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 70, },
1838 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 68, },
1839 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 66, },
1840 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 64, },
1841 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 62, },
1842 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 60, },
1843 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 59, },
1844 { .gm = 7, .pga = 13, .pad = 8, .dac = 0, .bb_mult = 57, },
1845 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 70, },
1846 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 68, },
1847 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 66, },
1848 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 64, },
1849 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 62, },
1850 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 61, },
1851 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 59, },
1852 { .gm = 7, .pga = 12, .pad = 8, .dac = 0, .bb_mult = 57, },
1853 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 70, },
1854 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 68, },
1855 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 66, },
1856 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 64, },
1857 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 62, },
1858 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 61, },
1859 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 59, },
1860 { .gm = 7, .pga = 12, .pad = 7, .dac = 0, .bb_mult = 57, },
1861 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 70, },
1862 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 68, },
1863 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 66, },
1864 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 64, },
1865 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 62, },
1866 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 61, },
1867 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 59, },
1868 { .gm = 7, .pga = 11, .pad = 7, .dac = 0, .bb_mult = 57, },
1869 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 69, },
1870 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 67, },
1871 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 65, },
1872 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 63, },
1873 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 62, },
1874 { .gm = 7, .pga = 11, .pad = 6, .dac = 0, .bb_mult = 60, },
1875};
1876
1877static struct lpphy_tx_gain_table_entry lpphy_rev2_nopa_tx_gain_table[] = {
1878 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 152, },
1879 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 147, },
1880 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 143, },
1881 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 139, },
1882 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 135, },
1883 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 131, },
1884 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 128, },
1885 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 124, },
1886 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 121, },
1887 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 117, },
1888 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 114, },
1889 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 111, },
1890 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 107, },
1891 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 104, },
1892 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 101, },
1893 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 99, },
1894 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 96, },
1895 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 93, },
1896 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 90, },
1897 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 88, },
1898 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 85, },
1899 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 83, },
1900 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 81, },
1901 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 78, },
1902 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 76, },
1903 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 74, },
1904 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 72, },
1905 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 70, },
1906 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 68, },
1907 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 66, },
1908 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
1909 { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
1910 { .gm = 255, .pga = 255, .pad = 192, .dac = 0, .bb_mult = 64, },
1911 { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
1912 { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
1913 { .gm = 255, .pga = 255, .pad = 176, .dac = 0, .bb_mult = 64, },
1914 { .gm = 255, .pga = 255, .pad = 171, .dac = 0, .bb_mult = 64, },
1915 { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
1916 { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
1917 { .gm = 255, .pga = 255, .pad = 157, .dac = 0, .bb_mult = 64, },
1918 { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
1919 { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
1920 { .gm = 255, .pga = 255, .pad = 144, .dac = 0, .bb_mult = 64, },
1921 { .gm = 255, .pga = 255, .pad = 140, .dac = 0, .bb_mult = 64, },
1922 { .gm = 255, .pga = 255, .pad = 136, .dac = 0, .bb_mult = 64, },
1923 { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
1924 { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
1925 { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
1926 { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
1927 { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
1928 { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
1929 { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
1930 { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
1931 { .gm = 255, .pga = 255, .pad = 105, .dac = 0, .bb_mult = 64, },
1932 { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
1933 { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
1934 { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
1935 { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
1936 { .gm = 255, .pga = 255, .pad = 91, .dac = 0, .bb_mult = 64, },
1937 { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
1938 { .gm = 255, .pga = 255, .pad = 86, .dac = 0, .bb_mult = 64, },
1939 { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
1940 { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
1941 { .gm = 255, .pga = 255, .pad = 79, .dac = 0, .bb_mult = 64, },
1942 { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
1943 { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
1944 { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
1945 { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
1946 { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
1947 { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
1948 { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
1949 { .gm = 255, .pga = 248, .pad = 64, .dac = 0, .bb_mult = 64, },
1950 { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
1951 { .gm = 255, .pga = 241, .pad = 62, .dac = 0, .bb_mult = 64, },
1952 { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
1953 { .gm = 255, .pga = 234, .pad = 60, .dac = 0, .bb_mult = 64, },
1954 { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
1955 { .gm = 255, .pga = 227, .pad = 59, .dac = 0, .bb_mult = 64, },
1956 { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
1957 { .gm = 255, .pga = 221, .pad = 57, .dac = 0, .bb_mult = 64, },
1958 { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
1959 { .gm = 255, .pga = 215, .pad = 55, .dac = 0, .bb_mult = 64, },
1960 { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
1961 { .gm = 255, .pga = 208, .pad = 54, .dac = 0, .bb_mult = 64, },
1962 { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
1963 { .gm = 255, .pga = 203, .pad = 52, .dac = 0, .bb_mult = 64, },
1964 { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
1965 { .gm = 255, .pga = 197, .pad = 51, .dac = 0, .bb_mult = 64, },
1966 { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
1967 { .gm = 255, .pga = 191, .pad = 49, .dac = 0, .bb_mult = 64, },
1968 { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
1969 { .gm = 255, .pga = 186, .pad = 48, .dac = 0, .bb_mult = 64, },
1970 { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
1971 { .gm = 255, .pga = 181, .pad = 47, .dac = 0, .bb_mult = 64, },
1972 { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
1973 { .gm = 255, .pga = 175, .pad = 45, .dac = 0, .bb_mult = 64, },
1974 { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
1975 { .gm = 255, .pga = 170, .pad = 44, .dac = 0, .bb_mult = 64, },
1976 { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
1977 { .gm = 255, .pga = 166, .pad = 43, .dac = 0, .bb_mult = 64, },
1978 { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
1979 { .gm = 255, .pga = 161, .pad = 42, .dac = 0, .bb_mult = 64, },
1980 { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
1981 { .gm = 255, .pga = 156, .pad = 40, .dac = 0, .bb_mult = 64, },
1982 { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
1983 { .gm = 255, .pga = 152, .pad = 39, .dac = 0, .bb_mult = 64, },
1984 { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
1985 { .gm = 255, .pga = 148, .pad = 38, .dac = 0, .bb_mult = 64, },
1986 { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
1987 { .gm = 255, .pga = 143, .pad = 37, .dac = 0, .bb_mult = 64, },
1988 { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
1989 { .gm = 255, .pga = 139, .pad = 36, .dac = 0, .bb_mult = 64, },
1990 { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
1991 { .gm = 255, .pga = 135, .pad = 35, .dac = 0, .bb_mult = 64, },
1992 { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
1993 { .gm = 255, .pga = 132, .pad = 34, .dac = 0, .bb_mult = 64, },
1994 { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
1995 { .gm = 255, .pga = 128, .pad = 33, .dac = 0, .bb_mult = 64, },
1996 { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
1997 { .gm = 255, .pga = 124, .pad = 32, .dac = 0, .bb_mult = 64, },
1998 { .gm = 255, .pga = 124, .pad = 31, .dac = 0, .bb_mult = 64, },
1999 { .gm = 255, .pga = 121, .pad = 31, .dac = 0, .bb_mult = 64, },
2000 { .gm = 255, .pga = 121, .pad = 30, .dac = 0, .bb_mult = 64, },
2001 { .gm = 255, .pga = 117, .pad = 30, .dac = 0, .bb_mult = 64, },
2002 { .gm = 255, .pga = 117, .pad = 29, .dac = 0, .bb_mult = 64, },
2003 { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
2004 { .gm = 255, .pga = 114, .pad = 29, .dac = 0, .bb_mult = 64, },
2005 { .gm = 255, .pga = 111, .pad = 29, .dac = 0, .bb_mult = 64, },
2006};
2007
2008static struct lpphy_tx_gain_table_entry lpphy_rev2_2ghz_tx_gain_table[] = {
2009 { .gm = 7, .pga = 99, .pad = 255, .dac = 0, .bb_mult = 64, },
2010 { .gm = 7, .pga = 96, .pad = 255, .dac = 0, .bb_mult = 64, },
2011 { .gm = 7, .pga = 93, .pad = 255, .dac = 0, .bb_mult = 64, },
2012 { .gm = 7, .pga = 90, .pad = 255, .dac = 0, .bb_mult = 64, },
2013 { .gm = 7, .pga = 88, .pad = 255, .dac = 0, .bb_mult = 64, },
2014 { .gm = 7, .pga = 85, .pad = 255, .dac = 0, .bb_mult = 64, },
2015 { .gm = 7, .pga = 83, .pad = 255, .dac = 0, .bb_mult = 64, },
2016 { .gm = 7, .pga = 81, .pad = 255, .dac = 0, .bb_mult = 64, },
2017 { .gm = 7, .pga = 78, .pad = 255, .dac = 0, .bb_mult = 64, },
2018 { .gm = 7, .pga = 76, .pad = 255, .dac = 0, .bb_mult = 64, },
2019 { .gm = 7, .pga = 74, .pad = 255, .dac = 0, .bb_mult = 64, },
2020 { .gm = 7, .pga = 72, .pad = 255, .dac = 0, .bb_mult = 64, },
2021 { .gm = 7, .pga = 70, .pad = 255, .dac = 0, .bb_mult = 64, },
2022 { .gm = 7, .pga = 68, .pad = 255, .dac = 0, .bb_mult = 64, },
2023 { .gm = 7, .pga = 66, .pad = 255, .dac = 0, .bb_mult = 64, },
2024 { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2025 { .gm = 7, .pga = 64, .pad = 255, .dac = 0, .bb_mult = 64, },
2026 { .gm = 7, .pga = 62, .pad = 255, .dac = 0, .bb_mult = 64, },
2027 { .gm = 7, .pga = 62, .pad = 248, .dac = 0, .bb_mult = 64, },
2028 { .gm = 7, .pga = 60, .pad = 248, .dac = 0, .bb_mult = 64, },
2029 { .gm = 7, .pga = 60, .pad = 241, .dac = 0, .bb_mult = 64, },
2030 { .gm = 7, .pga = 59, .pad = 241, .dac = 0, .bb_mult = 64, },
2031 { .gm = 7, .pga = 59, .pad = 234, .dac = 0, .bb_mult = 64, },
2032 { .gm = 7, .pga = 57, .pad = 234, .dac = 0, .bb_mult = 64, },
2033 { .gm = 7, .pga = 57, .pad = 227, .dac = 0, .bb_mult = 64, },
2034 { .gm = 7, .pga = 55, .pad = 227, .dac = 0, .bb_mult = 64, },
2035 { .gm = 7, .pga = 55, .pad = 221, .dac = 0, .bb_mult = 64, },
2036 { .gm = 7, .pga = 54, .pad = 221, .dac = 0, .bb_mult = 64, },
2037 { .gm = 7, .pga = 54, .pad = 215, .dac = 0, .bb_mult = 64, },
2038 { .gm = 7, .pga = 52, .pad = 215, .dac = 0, .bb_mult = 64, },
2039 { .gm = 7, .pga = 52, .pad = 208, .dac = 0, .bb_mult = 64, },
2040 { .gm = 7, .pga = 51, .pad = 208, .dac = 0, .bb_mult = 64, },
2041 { .gm = 7, .pga = 51, .pad = 203, .dac = 0, .bb_mult = 64, },
2042 { .gm = 7, .pga = 49, .pad = 203, .dac = 0, .bb_mult = 64, },
2043 { .gm = 7, .pga = 49, .pad = 197, .dac = 0, .bb_mult = 64, },
2044 { .gm = 7, .pga = 48, .pad = 197, .dac = 0, .bb_mult = 64, },
2045 { .gm = 7, .pga = 48, .pad = 191, .dac = 0, .bb_mult = 64, },
2046 { .gm = 7, .pga = 47, .pad = 191, .dac = 0, .bb_mult = 64, },
2047 { .gm = 7, .pga = 47, .pad = 186, .dac = 0, .bb_mult = 64, },
2048 { .gm = 7, .pga = 45, .pad = 186, .dac = 0, .bb_mult = 64, },
2049 { .gm = 7, .pga = 45, .pad = 181, .dac = 0, .bb_mult = 64, },
2050 { .gm = 7, .pga = 44, .pad = 181, .dac = 0, .bb_mult = 64, },
2051 { .gm = 7, .pga = 44, .pad = 175, .dac = 0, .bb_mult = 64, },
2052 { .gm = 7, .pga = 43, .pad = 175, .dac = 0, .bb_mult = 64, },
2053 { .gm = 7, .pga = 43, .pad = 170, .dac = 0, .bb_mult = 64, },
2054 { .gm = 7, .pga = 42, .pad = 170, .dac = 0, .bb_mult = 64, },
2055 { .gm = 7, .pga = 42, .pad = 166, .dac = 0, .bb_mult = 64, },
2056 { .gm = 7, .pga = 40, .pad = 166, .dac = 0, .bb_mult = 64, },
2057 { .gm = 7, .pga = 40, .pad = 161, .dac = 0, .bb_mult = 64, },
2058 { .gm = 7, .pga = 39, .pad = 161, .dac = 0, .bb_mult = 64, },
2059 { .gm = 7, .pga = 39, .pad = 156, .dac = 0, .bb_mult = 64, },
2060 { .gm = 7, .pga = 38, .pad = 156, .dac = 0, .bb_mult = 64, },
2061 { .gm = 7, .pga = 38, .pad = 152, .dac = 0, .bb_mult = 64, },
2062 { .gm = 7, .pga = 37, .pad = 152, .dac = 0, .bb_mult = 64, },
2063 { .gm = 7, .pga = 37, .pad = 148, .dac = 0, .bb_mult = 64, },
2064 { .gm = 7, .pga = 36, .pad = 148, .dac = 0, .bb_mult = 64, },
2065 { .gm = 7, .pga = 36, .pad = 143, .dac = 0, .bb_mult = 64, },
2066 { .gm = 7, .pga = 35, .pad = 143, .dac = 0, .bb_mult = 64, },
2067 { .gm = 7, .pga = 35, .pad = 139, .dac = 0, .bb_mult = 64, },
2068 { .gm = 7, .pga = 34, .pad = 139, .dac = 0, .bb_mult = 64, },
2069 { .gm = 7, .pga = 34, .pad = 135, .dac = 0, .bb_mult = 64, },
2070 { .gm = 7, .pga = 33, .pad = 135, .dac = 0, .bb_mult = 64, },
2071 { .gm = 7, .pga = 33, .pad = 132, .dac = 0, .bb_mult = 64, },
2072 { .gm = 7, .pga = 32, .pad = 132, .dac = 0, .bb_mult = 64, },
2073 { .gm = 7, .pga = 32, .pad = 128, .dac = 0, .bb_mult = 64, },
2074 { .gm = 7, .pga = 31, .pad = 128, .dac = 0, .bb_mult = 64, },
2075 { .gm = 7, .pga = 31, .pad = 124, .dac = 0, .bb_mult = 64, },
2076 { .gm = 7, .pga = 30, .pad = 124, .dac = 0, .bb_mult = 64, },
2077 { .gm = 7, .pga = 30, .pad = 121, .dac = 0, .bb_mult = 64, },
2078 { .gm = 7, .pga = 29, .pad = 121, .dac = 0, .bb_mult = 64, },
2079 { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2080 { .gm = 7, .pga = 29, .pad = 117, .dac = 0, .bb_mult = 64, },
2081 { .gm = 7, .pga = 29, .pad = 114, .dac = 0, .bb_mult = 64, },
2082 { .gm = 7, .pga = 28, .pad = 114, .dac = 0, .bb_mult = 64, },
2083 { .gm = 7, .pga = 28, .pad = 111, .dac = 0, .bb_mult = 64, },
2084 { .gm = 7, .pga = 27, .pad = 111, .dac = 0, .bb_mult = 64, },
2085 { .gm = 7, .pga = 27, .pad = 108, .dac = 0, .bb_mult = 64, },
2086 { .gm = 7, .pga = 26, .pad = 108, .dac = 0, .bb_mult = 64, },
2087 { .gm = 7, .pga = 26, .pad = 104, .dac = 0, .bb_mult = 64, },
2088 { .gm = 7, .pga = 25, .pad = 104, .dac = 0, .bb_mult = 64, },
2089 { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2090 { .gm = 7, .pga = 25, .pad = 102, .dac = 0, .bb_mult = 64, },
2091 { .gm = 7, .pga = 25, .pad = 99, .dac = 0, .bb_mult = 64, },
2092 { .gm = 7, .pga = 24, .pad = 99, .dac = 0, .bb_mult = 64, },
2093 { .gm = 7, .pga = 24, .pad = 96, .dac = 0, .bb_mult = 64, },
2094 { .gm = 7, .pga = 23, .pad = 96, .dac = 0, .bb_mult = 64, },
2095 { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2096 { .gm = 7, .pga = 23, .pad = 93, .dac = 0, .bb_mult = 64, },
2097 { .gm = 7, .pga = 23, .pad = 90, .dac = 0, .bb_mult = 64, },
2098 { .gm = 7, .pga = 22, .pad = 90, .dac = 0, .bb_mult = 64, },
2099 { .gm = 7, .pga = 22, .pad = 88, .dac = 0, .bb_mult = 64, },
2100 { .gm = 7, .pga = 21, .pad = 88, .dac = 0, .bb_mult = 64, },
2101 { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2102 { .gm = 7, .pga = 21, .pad = 85, .dac = 0, .bb_mult = 64, },
2103 { .gm = 7, .pga = 21, .pad = 83, .dac = 0, .bb_mult = 64, },
2104 { .gm = 7, .pga = 20, .pad = 83, .dac = 0, .bb_mult = 64, },
2105 { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2106 { .gm = 7, .pga = 20, .pad = 81, .dac = 0, .bb_mult = 64, },
2107 { .gm = 7, .pga = 20, .pad = 78, .dac = 0, .bb_mult = 64, },
2108 { .gm = 7, .pga = 19, .pad = 78, .dac = 0, .bb_mult = 64, },
2109 { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2110 { .gm = 7, .pga = 19, .pad = 76, .dac = 0, .bb_mult = 64, },
2111 { .gm = 7, .pga = 19, .pad = 74, .dac = 0, .bb_mult = 64, },
2112 { .gm = 7, .pga = 18, .pad = 74, .dac = 0, .bb_mult = 64, },
2113 { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2114 { .gm = 7, .pga = 18, .pad = 72, .dac = 0, .bb_mult = 64, },
2115 { .gm = 7, .pga = 18, .pad = 70, .dac = 0, .bb_mult = 64, },
2116 { .gm = 7, .pga = 17, .pad = 70, .dac = 0, .bb_mult = 64, },
2117 { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2118 { .gm = 7, .pga = 17, .pad = 68, .dac = 0, .bb_mult = 64, },
2119 { .gm = 7, .pga = 17, .pad = 66, .dac = 0, .bb_mult = 64, },
2120 { .gm = 7, .pga = 16, .pad = 66, .dac = 0, .bb_mult = 64, },
2121 { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2122 { .gm = 7, .pga = 16, .pad = 64, .dac = 0, .bb_mult = 64, },
2123 { .gm = 7, .pga = 16, .pad = 62, .dac = 0, .bb_mult = 64, },
2124 { .gm = 7, .pga = 15, .pad = 62, .dac = 0, .bb_mult = 64, },
2125 { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2126 { .gm = 7, .pga = 15, .pad = 60, .dac = 0, .bb_mult = 64, },
2127 { .gm = 7, .pga = 15, .pad = 59, .dac = 0, .bb_mult = 64, },
2128 { .gm = 7, .pga = 14, .pad = 59, .dac = 0, .bb_mult = 64, },
2129 { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2130 { .gm = 7, .pga = 14, .pad = 57, .dac = 0, .bb_mult = 64, },
2131 { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2132 { .gm = 7, .pga = 14, .pad = 55, .dac = 0, .bb_mult = 64, },
2133 { .gm = 7, .pga = 14, .pad = 54, .dac = 0, .bb_mult = 64, },
2134 { .gm = 7, .pga = 13, .pad = 54, .dac = 0, .bb_mult = 64, },
2135 { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2136 { .gm = 7, .pga = 13, .pad = 52, .dac = 0, .bb_mult = 64, },
2137};
2138
2139static struct lpphy_tx_gain_table_entry lpphy_rev2_5ghz_tx_gain_table[] = {
2140 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 152, },
2141 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 147, },
2142 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 143, },
2143 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 139, },
2144 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 135, },
2145 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 131, },
2146 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 128, },
2147 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 124, },
2148 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 121, },
2149 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 117, },
2150 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 114, },
2151 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 111, },
2152 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 107, },
2153 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 104, },
2154 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 101, },
2155 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 99, },
2156 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 96, },
2157 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 93, },
2158 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 90, },
2159 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 88, },
2160 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 85, },
2161 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 83, },
2162 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 81, },
2163 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 78, },
2164 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 76, },
2165 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 74, },
2166 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 72, },
2167 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 70, },
2168 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 68, },
2169 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 66, },
2170 { .gm = 255, .pga = 255, .pad = 255, .dac = 0, .bb_mult = 64, },
2171 { .gm = 255, .pga = 255, .pad = 248, .dac = 0, .bb_mult = 64, },
2172 { .gm = 255, .pga = 255, .pad = 241, .dac = 0, .bb_mult = 64, },
2173 { .gm = 255, .pga = 255, .pad = 234, .dac = 0, .bb_mult = 64, },
2174 { .gm = 255, .pga = 255, .pad = 227, .dac = 0, .bb_mult = 64, },
2175 { .gm = 255, .pga = 255, .pad = 221, .dac = 0, .bb_mult = 64, },
2176 { .gm = 255, .pga = 255, .pad = 215, .dac = 0, .bb_mult = 64, },
2177 { .gm = 255, .pga = 255, .pad = 208, .dac = 0, .bb_mult = 64, },
2178 { .gm = 255, .pga = 255, .pad = 203, .dac = 0, .bb_mult = 64, },
2179 { .gm = 255, .pga = 255, .pad = 197, .dac = 0, .bb_mult = 64, },
2180 { .gm = 255, .pga = 255, .pad = 191, .dac = 0, .bb_mult = 64, },
2181 { .gm = 255, .pga = 255, .pad = 186, .dac = 0, .bb_mult = 64, },
2182 { .gm = 255, .pga = 255, .pad = 181, .dac = 0, .bb_mult = 64, },
2183 { .gm = 255, .pga = 255, .pad = 175, .dac = 0, .bb_mult = 64, },
2184 { .gm = 255, .pga = 255, .pad = 170, .dac = 0, .bb_mult = 64, },
2185 { .gm = 255, .pga = 255, .pad = 166, .dac = 0, .bb_mult = 64, },
2186 { .gm = 255, .pga = 255, .pad = 161, .dac = 0, .bb_mult = 64, },
2187 { .gm = 255, .pga = 255, .pad = 156, .dac = 0, .bb_mult = 64, },
2188 { .gm = 255, .pga = 255, .pad = 152, .dac = 0, .bb_mult = 64, },
2189 { .gm = 255, .pga = 255, .pad = 148, .dac = 0, .bb_mult = 64, },
2190 { .gm = 255, .pga = 255, .pad = 143, .dac = 0, .bb_mult = 64, },
2191 { .gm = 255, .pga = 255, .pad = 139, .dac = 0, .bb_mult = 64, },
2192 { .gm = 255, .pga = 255, .pad = 135, .dac = 0, .bb_mult = 64, },
2193 { .gm = 255, .pga = 255, .pad = 132, .dac = 0, .bb_mult = 64, },
2194 { .gm = 255, .pga = 255, .pad = 128, .dac = 0, .bb_mult = 64, },
2195 { .gm = 255, .pga = 255, .pad = 124, .dac = 0, .bb_mult = 64, },
2196 { .gm = 255, .pga = 255, .pad = 121, .dac = 0, .bb_mult = 64, },
2197 { .gm = 255, .pga = 255, .pad = 117, .dac = 0, .bb_mult = 64, },
2198 { .gm = 255, .pga = 255, .pad = 114, .dac = 0, .bb_mult = 64, },
2199 { .gm = 255, .pga = 255, .pad = 111, .dac = 0, .bb_mult = 64, },
2200 { .gm = 255, .pga = 255, .pad = 108, .dac = 0, .bb_mult = 64, },
2201 { .gm = 255, .pga = 255, .pad = 104, .dac = 0, .bb_mult = 64, },
2202 { .gm = 255, .pga = 255, .pad = 102, .dac = 0, .bb_mult = 64, },
2203 { .gm = 255, .pga = 255, .pad = 99, .dac = 0, .bb_mult = 64, },
2204 { .gm = 255, .pga = 255, .pad = 96, .dac = 0, .bb_mult = 64, },
2205 { .gm = 255, .pga = 255, .pad = 93, .dac = 0, .bb_mult = 64, },
2206 { .gm = 255, .pga = 255, .pad = 90, .dac = 0, .bb_mult = 64, },
2207 { .gm = 255, .pga = 255, .pad = 88, .dac = 0, .bb_mult = 64, },
2208 { .gm = 255, .pga = 255, .pad = 85, .dac = 0, .bb_mult = 64, },
2209 { .gm = 255, .pga = 255, .pad = 83, .dac = 0, .bb_mult = 64, },
2210 { .gm = 255, .pga = 255, .pad = 81, .dac = 0, .bb_mult = 64, },
2211 { .gm = 255, .pga = 255, .pad = 78, .dac = 0, .bb_mult = 64, },
2212 { .gm = 255, .pga = 255, .pad = 76, .dac = 0, .bb_mult = 64, },
2213 { .gm = 255, .pga = 255, .pad = 74, .dac = 0, .bb_mult = 64, },
2214 { .gm = 255, .pga = 255, .pad = 72, .dac = 0, .bb_mult = 64, },
2215 { .gm = 255, .pga = 255, .pad = 70, .dac = 0, .bb_mult = 64, },
2216 { .gm = 255, .pga = 255, .pad = 68, .dac = 0, .bb_mult = 64, },
2217 { .gm = 255, .pga = 255, .pad = 66, .dac = 0, .bb_mult = 64, },
2218 { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
2219 { .gm = 255, .pga = 255, .pad = 64, .dac = 0, .bb_mult = 64, },
2220 { .gm = 255, .pga = 255, .pad = 62, .dac = 0, .bb_mult = 64, },
2221 { .gm = 255, .pga = 248, .pad = 62, .dac = 0, .bb_mult = 64, },
2222 { .gm = 255, .pga = 248, .pad = 60, .dac = 0, .bb_mult = 64, },
2223 { .gm = 255, .pga = 241, .pad = 60, .dac = 0, .bb_mult = 64, },
2224 { .gm = 255, .pga = 241, .pad = 59, .dac = 0, .bb_mult = 64, },
2225 { .gm = 255, .pga = 234, .pad = 59, .dac = 0, .bb_mult = 64, },
2226 { .gm = 255, .pga = 234, .pad = 57, .dac = 0, .bb_mult = 64, },
2227 { .gm = 255, .pga = 227, .pad = 57, .dac = 0, .bb_mult = 64, },
2228 { .gm = 255, .pga = 227, .pad = 55, .dac = 0, .bb_mult = 64, },
2229 { .gm = 255, .pga = 221, .pad = 55, .dac = 0, .bb_mult = 64, },
2230 { .gm = 255, .pga = 221, .pad = 54, .dac = 0, .bb_mult = 64, },
2231 { .gm = 255, .pga = 215, .pad = 54, .dac = 0, .bb_mult = 64, },
2232 { .gm = 255, .pga = 215, .pad = 52, .dac = 0, .bb_mult = 64, },
2233 { .gm = 255, .pga = 208, .pad = 52, .dac = 0, .bb_mult = 64, },
2234 { .gm = 255, .pga = 208, .pad = 51, .dac = 0, .bb_mult = 64, },
2235 { .gm = 255, .pga = 203, .pad = 51, .dac = 0, .bb_mult = 64, },
2236 { .gm = 255, .pga = 203, .pad = 49, .dac = 0, .bb_mult = 64, },
2237 { .gm = 255, .pga = 197, .pad = 49, .dac = 0, .bb_mult = 64, },
2238 { .gm = 255, .pga = 197, .pad = 48, .dac = 0, .bb_mult = 64, },
2239 { .gm = 255, .pga = 191, .pad = 48, .dac = 0, .bb_mult = 64, },
2240 { .gm = 255, .pga = 191, .pad = 47, .dac = 0, .bb_mult = 64, },
2241 { .gm = 255, .pga = 186, .pad = 47, .dac = 0, .bb_mult = 64, },
2242 { .gm = 255, .pga = 186, .pad = 45, .dac = 0, .bb_mult = 64, },
2243 { .gm = 255, .pga = 181, .pad = 45, .dac = 0, .bb_mult = 64, },
2244 { .gm = 255, .pga = 181, .pad = 44, .dac = 0, .bb_mult = 64, },
2245 { .gm = 255, .pga = 175, .pad = 44, .dac = 0, .bb_mult = 64, },
2246 { .gm = 255, .pga = 175, .pad = 43, .dac = 0, .bb_mult = 64, },
2247 { .gm = 255, .pga = 170, .pad = 43, .dac = 0, .bb_mult = 64, },
2248 { .gm = 255, .pga = 170, .pad = 42, .dac = 0, .bb_mult = 64, },
2249 { .gm = 255, .pga = 166, .pad = 42, .dac = 0, .bb_mult = 64, },
2250 { .gm = 255, .pga = 166, .pad = 40, .dac = 0, .bb_mult = 64, },
2251 { .gm = 255, .pga = 161, .pad = 40, .dac = 0, .bb_mult = 64, },
2252 { .gm = 255, .pga = 161, .pad = 39, .dac = 0, .bb_mult = 64, },
2253 { .gm = 255, .pga = 156, .pad = 39, .dac = 0, .bb_mult = 64, },
2254 { .gm = 255, .pga = 156, .pad = 38, .dac = 0, .bb_mult = 64, },
2255 { .gm = 255, .pga = 152, .pad = 38, .dac = 0, .bb_mult = 64, },
2256 { .gm = 255, .pga = 152, .pad = 37, .dac = 0, .bb_mult = 64, },
2257 { .gm = 255, .pga = 148, .pad = 37, .dac = 0, .bb_mult = 64, },
2258 { .gm = 255, .pga = 148, .pad = 36, .dac = 0, .bb_mult = 64, },
2259 { .gm = 255, .pga = 143, .pad = 36, .dac = 0, .bb_mult = 64, },
2260 { .gm = 255, .pga = 143, .pad = 35, .dac = 0, .bb_mult = 64, },
2261 { .gm = 255, .pga = 139, .pad = 35, .dac = 0, .bb_mult = 64, },
2262 { .gm = 255, .pga = 139, .pad = 34, .dac = 0, .bb_mult = 64, },
2263 { .gm = 255, .pga = 135, .pad = 34, .dac = 0, .bb_mult = 64, },
2264 { .gm = 255, .pga = 135, .pad = 33, .dac = 0, .bb_mult = 64, },
2265 { .gm = 255, .pga = 132, .pad = 33, .dac = 0, .bb_mult = 64, },
2266 { .gm = 255, .pga = 132, .pad = 32, .dac = 0, .bb_mult = 64, },
2267 { .gm = 255, .pga = 128, .pad = 32, .dac = 0, .bb_mult = 64, },
2268};
2269
2270void lpphy_rev0_1_table_init(struct b43_wldev *dev)
2271{
2272 B43_WARN_ON(dev->phy.rev >= 2);
2273
2274 b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2275 ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2276 b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2277 ARRAY_SIZE(lpphy_rev01_noise_scale_table), lpphy_rev01_noise_scale_table);
2278 b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2279 ARRAY_SIZE(lpphy_crs_gain_nft_table), lpphy_crs_gain_nft_table);
2280 b43_lptab_write_bulk(dev, B43_LPTAB16(8, 0),
2281 ARRAY_SIZE(lpphy_rev01_filter_control_table), lpphy_rev01_filter_control_table);
2282 b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2283 ARRAY_SIZE(lpphy_rev01_ps_control_table), lpphy_rev01_ps_control_table);
2284 b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2285 ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2286 b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2287 ARRAY_SIZE(lpphy_iqlo_cal_table), lpphy_iqlo_cal_table);
2288 if (dev->phy.rev == 0) {
2289 b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2290 ARRAY_SIZE(lpphy_rev0_ofdm_cck_gain_table), lpphy_rev0_ofdm_cck_gain_table);
2291 b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2292 ARRAY_SIZE(lpphy_rev0_ofdm_cck_gain_table), lpphy_rev0_ofdm_cck_gain_table);
2293 } else {
2294 b43_lptab_write_bulk(dev, B43_LPTAB16(13, 0),
2295 ARRAY_SIZE(lpphy_rev1_ofdm_cck_gain_table), lpphy_rev1_ofdm_cck_gain_table);
2296 b43_lptab_write_bulk(dev, B43_LPTAB16(12, 0),
2297 ARRAY_SIZE(lpphy_rev1_ofdm_cck_gain_table), lpphy_rev1_ofdm_cck_gain_table);
2298}
2299 b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2300 ARRAY_SIZE(lpphy_gain_delta_table), lpphy_gain_delta_table);
2301 b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2302 ARRAY_SIZE(lpphy_tx_power_control_table), lpphy_tx_power_control_table);
2303}
2304
2305void lpphy_rev2plus_table_init(struct b43_wldev *dev)
2306{
2307 int i;
2308
2309 B43_WARN_ON(dev->phy.rev < 2);
2310
2311 for (i = 0; i < 704; i++)
2312 b43_lptab_write(dev, B43_LPTAB32(7, i), 0);
2313
2314 b43_lptab_write_bulk(dev, B43_LPTAB8(2, 0),
2315 ARRAY_SIZE(lpphy_min_sig_sq_table), lpphy_min_sig_sq_table);
2316 b43_lptab_write_bulk(dev, B43_LPTAB16(1, 0),
2317 ARRAY_SIZE(lpphy_rev2plus_noise_scale_table), lpphy_rev2plus_noise_scale_table);
2318 b43_lptab_write_bulk(dev, B43_LPTAB32(11, 0),
2319 ARRAY_SIZE(lpphy_rev2plus_filter_control_table), lpphy_rev2plus_filter_control_table);
2320 b43_lptab_write_bulk(dev, B43_LPTAB32(12, 0),
2321 ARRAY_SIZE(lpphy_rev2plus_ps_control_table), lpphy_rev2plus_ps_control_table);
2322 b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2323 ARRAY_SIZE(lpphy_gain_idx_table), lpphy_gain_idx_table);
2324 b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2325 ARRAY_SIZE(lpphy_aux_gain_idx_table), lpphy_aux_gain_idx_table);
2326 b43_lptab_write_bulk(dev, B43_LPTAB16(15, 0),
2327 ARRAY_SIZE(lpphy_sw_control_table), lpphy_sw_control_table);
2328 b43_lptab_write_bulk(dev, B43_LPTAB8(16, 0),
2329 ARRAY_SIZE(lpphy_hf_table), lpphy_hf_table);
2330 b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2331 ARRAY_SIZE(lpphy_gain_value_table), lpphy_gain_value_table);
2332 b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2333 ARRAY_SIZE(lpphy_gain_table), lpphy_gain_table);
2334 b43_lptab_write_bulk(dev, B43_LPTAB8(6, 0),
2335 ARRAY_SIZE(lpphy_pll_fraction_table), lpphy_pll_fraction_table);
2336 b43_lptab_write_bulk(dev, B43_LPTAB16(0, 0),
2337 ARRAY_SIZE(lpphy_iqlo_cal_table), lpphy_iqlo_cal_table);
2338 b43_lptab_write_bulk(dev, B43_LPTAB32(9, 0),
2339 ARRAY_SIZE(lpphy_papd_eps_table), lpphy_papd_eps_table);
2340 b43_lptab_write_bulk(dev, B43_LPTAB32(10, 0),
2341 ARRAY_SIZE(lpphy_papd_mult_table), lpphy_papd_mult_table);
2342
2343 if ((dev->dev->chip_id == 0x4325) && (dev->dev->chip_rev == 0)) {
2344 b43_lptab_write_bulk(dev, B43_LPTAB32(13, 0),
2345 ARRAY_SIZE(lpphy_a0_gain_idx_table), lpphy_a0_gain_idx_table);
2346 b43_lptab_write_bulk(dev, B43_LPTAB16(14, 0),
2347 ARRAY_SIZE(lpphy_a0_aux_gain_idx_table), lpphy_a0_aux_gain_idx_table);
2348 b43_lptab_write_bulk(dev, B43_LPTAB32(17, 0),
2349 ARRAY_SIZE(lpphy_a0_gain_value_table), lpphy_a0_gain_value_table);
2350 b43_lptab_write_bulk(dev, B43_LPTAB16(18, 0),
2351 ARRAY_SIZE(lpphy_a0_gain_table), lpphy_a0_gain_table);
2352 }
2353}
2354
2355static void lpphy_rev0_1_write_gain_table(struct b43_wldev *dev, int offset,
2356 struct lpphy_tx_gain_table_entry data)
2357{
2358 u32 tmp;
2359
2360 B43_WARN_ON(dev->phy.rev >= 2);
2361
2362 tmp = data.pad << 11;
2363 tmp |= data.pga << 7;
2364 tmp |= data.gm << 4;
2365 tmp |= data.dac;
2366 b43_lptab_write(dev, B43_LPTAB32(10, 0xC0 + offset), tmp);
2367 tmp = data.bb_mult << 20;
2368 b43_lptab_write(dev, B43_LPTAB32(10, 0x140 + offset), tmp);
2369}
2370
2371static void lpphy_rev2plus_write_gain_table(struct b43_wldev *dev, int offset,
2372 struct lpphy_tx_gain_table_entry data)
2373{
2374 u32 tmp;
2375
2376 B43_WARN_ON(dev->phy.rev < 2);
2377
2378 tmp = data.pad << 16;
2379 tmp |= data.pga << 8;
2380 tmp |= data.gm;
2381 if (dev->phy.rev >= 3) {
2382 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
2383 tmp |= 0x10 << 24;
2384 else
2385 tmp |= 0x70 << 24;
2386 } else {
2387 if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ)
2388 tmp |= 0x14 << 24;
2389 else
2390 tmp |= 0x7F << 24;
2391 }
2392 b43_lptab_write(dev, B43_LPTAB32(7, 0xC0 + offset), tmp);
2393 tmp = data.bb_mult << 20;
2394 tmp |= data.dac << 28;
2395 b43_lptab_write(dev, B43_LPTAB32(7, 0x140 + offset), tmp);
2396}
2397
2398void lpphy_write_gain_table(struct b43_wldev *dev, int offset,
2399 struct lpphy_tx_gain_table_entry data)
2400{
2401 if (dev->phy.rev >= 2)
2402 lpphy_rev2plus_write_gain_table(dev, offset, data);
2403 else
2404 lpphy_rev0_1_write_gain_table(dev, offset, data);
2405}
2406
2407void lpphy_write_gain_table_bulk(struct b43_wldev *dev, int offset, int count,
2408 struct lpphy_tx_gain_table_entry *table)
2409{
2410 int i;
2411
2412 for (i = offset; i < count; i++)
2413 lpphy_write_gain_table(dev, i, table[i]);
2414}
2415
2416void lpphy_init_tx_gain_table(struct b43_wldev *dev)
2417{
2418 struct ssb_sprom *sprom = dev->dev->bus_sprom;
2419
2420 switch (dev->phy.rev) {
2421 case 0:
2422 if ((sprom->boardflags_hi & B43_BFH_NOPA) ||
2423 (sprom->boardflags_lo & B43_BFL_HGPA))
2424 lpphy_write_gain_table_bulk(dev, 0, 128,
2425 lpphy_rev0_nopa_tx_gain_table);
2426 else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2427 lpphy_write_gain_table_bulk(dev, 0, 128,
2428 lpphy_rev0_2ghz_tx_gain_table);
2429 else
2430 lpphy_write_gain_table_bulk(dev, 0, 128,
2431 lpphy_rev0_5ghz_tx_gain_table);
2432 break;
2433 case 1:
2434 if ((sprom->boardflags_hi & B43_BFH_NOPA) ||
2435 (sprom->boardflags_lo & B43_BFL_HGPA))
2436 lpphy_write_gain_table_bulk(dev, 0, 128,
2437 lpphy_rev1_nopa_tx_gain_table);
2438 else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2439 lpphy_write_gain_table_bulk(dev, 0, 128,
2440 lpphy_rev1_2ghz_tx_gain_table);
2441 else
2442 lpphy_write_gain_table_bulk(dev, 0, 128,
2443 lpphy_rev1_5ghz_tx_gain_table);
2444 break;
2445 default:
2446 if (sprom->boardflags_hi & B43_BFH_NOPA)
2447 lpphy_write_gain_table_bulk(dev, 0, 128,
2448 lpphy_rev2_nopa_tx_gain_table);
2449 else if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
2450 lpphy_write_gain_table_bulk(dev, 0, 128,
2451 lpphy_rev2_2ghz_tx_gain_table);
2452 else
2453 lpphy_write_gain_table_bulk(dev, 0, 128,
2454 lpphy_rev2_5ghz_tx_gain_table);
2455 }
2456}
2457