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